<?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>87220</bug_id>
          
          <creation_ts>2012-05-23 00:14:01 -0700</creation_ts>
          <short_desc>Use ContainerNode instead of Node where possible</short_desc>
          <delta_ts>2019-02-06 09:03:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>morrita</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631310</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-23 00:14:01 -0700</bug_when>
    <thetext>Use ContainerNode instead of Node where possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631317</commentid>
    <comment_count>1</comment_count>
      <attachid>143484</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-23 00:23:36 -0700</bug_when>
    <thetext>Created attachment 143484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631698</commentid>
    <comment_count>2</comment_count>
      <attachid>143484</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-23 08:47:13 -0700</bug_when>
    <thetext>Comment on attachment 143484
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631739</commentid>
    <comment_count>3</comment_count>
      <attachid>143484</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 09:55:51 -0700</bug_when>
    <thetext>Comment on attachment 143484
Patch

Clearing flags on attachment: 143484

Committed r118192: &lt;http://trac.webkit.org/changeset/118192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631740</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 09:55:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502905</commentid>
    <comment_count>5</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:07 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143484</attachid>
            <date>2012-05-23 00:23:36 -0700</date>
            <delta_ts>2012-05-23 09:55:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87220-20120523002334.patch</filename>
            <type>text/plain</type>
            <size>94131</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwOCBAQAorMjAxMi0wNS0yMyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvbnRhaW5lck5vZGUgaW5z
dGVhZCBvZiBOb2RlIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEl0J3MgYmV0dGVyIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMgdHlw
ZTsgaW4gc29tZSBjYXNlcyB3ZSBldmVuIGdlbmVyYXRlCisgICAgICAgIG1vcmUgZWZmaWNpZW50
IGNvZGUgaWYgd2UgaGF2ZSBhIG1vcmUgc3BlY2lmaWMgdHlwZS4gQWxzbywgd2Ugd2FudCBhbnkK
KyAgICAgICAgdHlwZSBjYXN0cyB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgY29y
cmVzcG9uZGluZyB0eXBlIGNoZWNrcywKKyAgICAgICAgc28gZWxpbWluYXRpbmcgdGhlc2UgdXNl
cyBvZiB0b0NvbnRhaW5lck5vZGUgaXMgYSBwbHVzLCBhbHNvLgorCisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmg6IENoYW5nZWQgaW5zZXJ0aW9uUG9pbnQgdG8gYmUgYSBD
b250YWluZXJOb2RlCisgICAgICAgIGluc3RlYWQgb2YgYSBOb2RlLiBGaXhlZCBzcGVsbGluZyBl
cnJvciAiaW5zZXJldGlvbnMiLiBDaGFuZ2VkCisgICAgICAgIChXZWJDb3JlOjpDaGlsZEZyYW1l
RGlzY29ubmVjdG9yOjpUYXJnZXQ6OlRhcmdldCk6IENoYW5nZWQgdHlwZSBvZiBmcmFtZSBvd25l
cgorICAgICAgICBlbGVtZW50IHRvIEhUTUxGcmFtZU93bmVyRWxlbWVudCBmcm9tIE5vZGUuCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VHlwZTo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VHlwZTo6
cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbnNlcnRlZEludG8p
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRGcm9t
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjppbnNl
cnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1v
dmVkRnJvbSk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6Omluc2VydGVkSW50byk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJhc2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGh0
bWwvSFRNTEJhc2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0
aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5z
ZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWRO
b3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6Omluc2VydGVk
SW50byk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVtb3ZlZEZyb20p
OgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1h
cEVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAg
ICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUXVv
dGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6Omluc2Vy
dGVkSW50byk6CisgICAgICAgICogaHRtbC9IVE1MUXVvdGVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAg
ICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjppbnNlcnRlZElu
dG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb20pOgor
ICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAq
IGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG8p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAg
ICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1l
bnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6
cmVtb3ZlZEZyb20pOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9u
dEZhY2VFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZh
Y2VFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAq
IHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBoRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBoRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAg
ICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hLZXJuRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hLZXJuRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAg
ICAgICAqIHN2Zy9TVkdIS2VybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAg
ICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50
byk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZy
b20pOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnJlbW92ZWRG
cm9tKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
aXRsZUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUaXRsZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNl
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdWS2VybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVktlcm5FbGVt
ZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVktlcm5FbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6CisgICAgICAgICogc3ZnL1NWR1ZLZXJuRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U01JTEVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuaDoKKyAgICAgICAgQ2hhbmdlZCBhcmd1bWVudHMgb2YgaW5zZXJ0ZWRJbnRvIGFuZCByZW1v
dmVkRnJvbSB0byBDb250YWluZXJOb2RlIGluc3RlYWQgb2YgTm9kZS4KKyAgICAgICAgRGlkIHRo
ZSBzYW1lIHdpdGggZGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMsIHdoaWxlIGZpeGluZyB0
aGUgdHlwbyBpbiBpdHMgbmFtZS4KKworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkpOiBQdXQgYSB0eXBlY2FzdCB0b0hUTUxFbGVtZW50IGhlcmUuCisgICAgICAgIFRo
ZSBjaGVjayBmb3IgaXNMaXN0RWxlbWVudCBhbmQgaXNMZWdhY3lBcHBsZVN0eWxlU3BhbiB0YWtl
cyBjYXJlIG9mIHRoZSB0eXBlIGNoZWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKTogQ2hhbmdlZCB0aGlzIGZ1bmN0aW9u
IHRvIHRha2UKKyAgICAgICAgYW4gSFRNTEVsZW1lbnQgaW5zdGVhZCBvZiBhIE5vZGUsIHRoZW4g
d2UgY2FuIGRyb3AgdXNlIG9mIHRoZSB0b0NvbnRhaW5lck5vZGUgZnVuY3Rpb24uCisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oOgorCisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOiBGaXhlZCBhIHR5cG8gaW4gYSBjb21tZW50LgorCiAyMDEyLTA1
LTIzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhd
IFBhc3MgSXNvbGF0ZSB0byB2ODo6TnVsbCgpIGluIGN1c3RvbSBiaW5kaW5ncyAoUGFydCAyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgJKHJl
dmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxOCArMjMsMTggQEAKICNkZWZpbmUgQ29udGFp
bmVyTm9kZUFsZ29yaXRobXNfaAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIE5vZGU7Ci0KIGNsYXNzIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihOb2RlKiBpbnNl
cnRpb25Qb2ludCkKKyAgICBleHBsaWNpdCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihDb250
YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KQotICAgIHsgfQorICAgIHsKKyAgICB9CiAKICAgICB2b2lkIG5vdGlmeUlu
c2VydGVkSW50b0RvY3VtZW50KE5vZGUqKTsKICAgICB2b2lkIG5vdGlmeShOb2RlKik7CkBAIC00
NSwxNCArNDUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9E
b2N1bWVudChOb2RlKik7CiAgICAgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250
YWluZXJOb2RlKik7CiAKLSAgICBOb2RlKiBtX2luc2VydGlvblBvaW50OworICAgIENvbnRhaW5l
ck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CiB9OwogCiBjbGFzcyBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihO
b2RlKiBpbnNlcnRpb25Qb2ludCkKKyAgICBleHBsaWNpdCBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIDogbV9pbnNlcnRpb25Q
b2ludChpbnNlcnRpb25Qb2ludCkKLSAgICB7IH0KKyAgICB7CisgICAgfQogCiAgICAgdm9pZCBu
b3RpZnkoTm9kZSopOwogCkBAIC02MiwxNSArNjMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOwogCi0gICAgTm9kZSogbV9pbnNlcnRpb25Q
b2ludDsKKyAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlvblBvaW50OwogfTsKIAogbmFtZXNw
YWNlIFByaXZhdGUgewogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdl
bmVyaWNOb2RlQ29udGFpbmVyPgotICAgIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1
ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250
YWluZXIqIGNvbnRhaW5lcik7CisgICAgdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVl
KEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRh
aW5lciopOwogCi19OworfQogCiAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBUcmVlU2hhcmVkLWRl
cml2ZWQgY2xhc3Nlcywgd2hpY2ggaGF2ZSBhICdOb2RlJyBzdHlsZSBpbnRlcmZhY2UKIC8vIFRo
aXMgYXBwbGllcyB0byAnQ29udGFpbmVyTm9kZScgYW5kICdTVkdFbGVtZW50SW5zdGFuY2UnCkBA
IC0xOTUsOCArMTk2LDggQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
OgogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2Vu
ZGFudEluc2VydGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiAKLSAgICBp
ZiAocmVxdWVzdCA9PSBOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFu
dEluc2VyZXRpb25zKQotICAgICAgICBub2RlLT5kaWROb3RpZnlEZXNjZW5kYW50SW5zZXJldGlv
bnMobV9pbnNlcnRpb25Qb2ludCk7CisgICAgaWYgKHJlcXVlc3QgPT0gTm9kZTo6SW5zZXJ0aW9u
U2hvdWxkQ2FsbERpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKQorICAgICAgICBub2RlLT5k
aWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhtX2luc2VydGlvblBvaW50KTsKIH0KIAogaW5s
aW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZElu
dG9UcmVlKENvbnRhaW5lck5vZGUqIG5vZGUpCkBAIC0yMDcsOCArMjA4LDggQEAgaW5saW5lIHZv
aWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6OgogICAgIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgcmVxdWVzdCA9IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBv
aW50KTsKIAogICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKG5vZGUpOwotICAg
IGlmIChyZXF1ZXN0ID09IE5vZGU6Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNjZW5k
YW50SW5zZXJldGlvbnMpCi0gICAgICAgIG5vZGUtPmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0
aW9ucyhtX2luc2VydGlvblBvaW50KTsKKyAgICBpZiAocmVxdWVzdCA9PSBOb2RlOjpJbnNlcnRp
b25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMpCisgICAgICAgIG5vZGUt
PmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKG1faW5zZXJ0aW9uUG9pbnQpOwogCiAgICAg
YWxsb3dFdmVudERpc3BhdGNoKCk7CiB9CkBAIC0yNzUsMTcgKzI3NiwxOCBAQCBwcml2YXRlOgog
CiAgICAgY2xhc3MgVGFyZ2V0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRhcmdldChOb2RlKiBl
bGVtZW50KQorICAgICAgICBUYXJnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBlbGVtZW50KQog
ICAgICAgICAgICAgOiBtX293bmVyKGVsZW1lbnQpCiAgICAgICAgICAgICAsIG1fb3duZXJQYXJl
bnQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKQotICAgICAgICB7IH0KKyAgICAgICAgeworICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9vd25lci0+cGFy
ZW50Tm9kZSgpID09IG1fb3duZXJQYXJlbnQ7IH0KICAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8Tm9kZT4gbV9vd25lcjsKLSAgICAgICAg
Tm9kZSogbV9vd25lclBhcmVudDsKKyAgICAgICAgUmVmUHRyPEhUTUxGcmFtZU93bmVyRWxlbWVu
dD4gbV9vd25lcjsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogbV9vd25lclBhcmVudDsKICAgICB9
OwogCiAgICAgVmVjdG9yPFRhcmdldCwgMTA+IG1fbGlzdDsKQEAgLTMwMyw3ICszMDUsNyBAQCBp
bmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpjb2xsCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKICAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0N1c3RvbUNhbGxiYWNrcygpICYmIGVsZW1lbnQtPmlzRnJhbWVP
d25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIG1fbGlzdC5hcHBlbmQobm9kZSk7CisgICAgICAg
ICAgICBtX2xpc3QuYXBwZW5kKHRvRnJhbWVPd25lckVsZW1lbnQoZWxlbWVudCkpOwogICAgICAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpCiAgICAgICAg
ICAgICBjb2xsZWN0RGVzY2VuZGFudChzaGFkb3cpOwogICAgIH0KQEAgLTMxNiw3ICszMTgsNyBA
QCBpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpkaXNjCiAgICAgICAgIFRhcmdl
dCYgdGFyZ2V0ID0gbV9saXN0W2ldOwogICAgICAgICBpZiAodGFyZ2V0LmlzVmFsaWQoKSkKICAg
ICAgICAgICAgIHRhcmdldC5kaXNjb25uZWN0KCk7Ci0gICAgfTsKKyAgICB9CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCShy
ZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50
VHlwZTo6Y2xvbmVOb2RlCiAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBtX25hbWUsIG1f
cHVibGljSWQsIG1fc3lzdGVtSWQpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IERvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50KQor
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBEb2N1bWVudFR5cGU6Omluc2VydGVk
SW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBOb2RlOjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1l
bnQoKSkKQEAgLTczLDcgKzczLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBEb2N1bQogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIERvY3VtZW50VHlw
ZTo6cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCit2b2lkIERvY3VtZW50VHlwZTo6
cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKGlu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5k
b2N0eXBlKCkgPT0gdGhpcykKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0RG9jVHlwZSgwKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAKLSAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICBPd25QdHI8TmFtZWROb2RlTWFwPiBtX2VudGl0
aWVzOwogICAgIE93blB0cjxOYW1lZE5vZGVNYXA+IG1fbm90YXRpb25zOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbgogewogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKK05vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIC8vIG5lZWQgdG8gZG8g
c3VwZXJjbGFzcyBwcm9jZXNzaW5nIGZpcnN0IHNvIGluRG9jdW1lbnQoKSBpcyB0cnVlCiAgICAg
Ly8gYnkgdGhlIHRpbWUgd2UgcmVhY2ggdXBkYXRlSWQKQEAgLTkxNSw3ICs5MTUsNyBAQCBOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lCiAgICAgcmV0dXJuIEluc2VydGlv
bkRvbmU7CiB9CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCit2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogewogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAoY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjQs
OCArNDI0LDggQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24g
MTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQ5LDcgKzI0NDksNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBOb2RlOjpzY3JpcHRF
eGVjCiAgICAgcmV0dXJuIGRvY3VtZW50KCk7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50KQorTm9k
ZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBOb2RlOjppbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50LT5p
bkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpKQpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBOb2RlOgogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12
b2lkIE5vZGU6OnJlbW92ZWRGcm9tKE5vZGUqIGluc2VydGlvblBvaW50KQordm9pZCBOb2RlOjpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBBU1NFUlQo
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7CiAgICAg
aWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlz
aW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyMywyOCArNTIzLDI4IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8g
dGhlIERPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCBET00gZXZlbnQsIGJ1dCBkb2VzIG5vdCBy
ZXF1aXJlIHRoZSBvdmVyaGVhZCBvZiBldmVudAogICAgIC8vIGRpc3BhdGNoaW5nLgogICAgIC8v
Ci0gICAgLy8gV2Via2l0IG5vdGlmaWVzIHRoaXMgY2FsbGJhY2sgcmVnYXJkbGVzcyBpZiB0aGUg
c3VidHJlZSBvZiB0aGUgbm9kZSBpcyBhIGRvY3VtZW50IHRyZWUgb3IgYSBmbG9hdGluZyBzdWJ0
cmVlLgorICAgIC8vIFdlYktpdCBub3RpZmllcyB0aGlzIGNhbGxiYWNrIHJlZ2FyZGxlc3MgaWYg
dGhlIHN1YnRyZWUgb2YgdGhlIG5vZGUgaXMgYSBkb2N1bWVudCB0cmVlIG9yIGEgZmxvYXRpbmcg
c3VidHJlZS4KICAgICAvLyBJbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZXJtaW5lIHRoZSB0eXBlIG9m
IHN1YnRyZWUgYnkgc2VlaW5nIGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkuCiAgICAgLy8g
Rm9yIGEgcGVyZm9ybWFuY2UgcmVhc29uLCBub3RpZmljYXRpb25zIGFyZSBkZWxpdmVyZWQgb25s
eSB0byBDb250YWluZXJOb2RlIHN1YmNsYXNzZXMgaWYgdGhlIGluc2VydGlvblBvaW50IGlzIG91
dCBvZiBkb2N1bWVudC4KICAgICAvLwotICAgIC8vIFRoZXJlIGFyZSBhbm90aGVyIGNhbGxiYWNr
IG5hbWVkIGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucygpLCB3aGljaCBpcyBjYWxsZWQg
YWZ0ZXIgYWxsIHRoZSBkZXNjZW5kYW50IGlzIG5vdGlmaWVkLgotICAgIC8vIE9ubHkgYSBmZXcg
c3ViY2xhc3NlcyBhY3R1YWxseSBuZWVkIHRoaXMuIFRvIHV0aWxpemUgdGhpcywgdGhlIG5vZGUg
c2hvdWxkIHJldHVybiBJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFudEluc2Vy
ZXRpb25zCisgICAgLy8gVGhlcmUgYXJlIGFub3RoZXIgY2FsbGJhY2sgbmFtZWQgZGlkTm90aWZ5
RGVzY2VuZGFudEluc2VydGlvbnMoKSwgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGUgZGVz
Y2VuZGFudCBpcyBub3RpZmllZC4KKyAgICAvLyBPbmx5IGEgZmV3IHN1YmNsYXNzZXMgYWN0dWFs
bHkgbmVlZCB0aGlzLiBUbyB1dGlsaXplIHRoaXMsIHRoZSBub2RlIHNob3VsZCByZXR1cm4gSW5z
ZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zCiAgICAgLy8gZnJv
bSBpbnNydGVkSW50bygpLgogICAgIC8vCiAgICAgZW51bSBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IHsKICAgICAgICAgSW5zZXJ0aW9uRG9uZSwKLSAgICAgICAgSW5zZXJ0aW9uU2hvdWxk
Q2FsbERpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucworICAgICAgICBJbnNlcnRpb25TaG91
bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMKICAgICB9OwogCi0gICAgdmlydHVh
bCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKiBpbnNlcnRp
b25Qb2ludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9u
cyhOb2RlKikgeyB9CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKENvbnRhaW5lck5vZGUqKSB7IH0KIAog
ICAgIC8vIE5vdGlmaWVzIHRoZSBub2RlIHRoYXQgaXQgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhl
IHRyZWUuCiAgICAgLy8KICAgICAvLyBUaGlzIGlzIGEgZHVhbCBvZiBpbnNlcnRlZEludG8oKSwg
YW5kIGlzIHNpbWlsYXIgdG8gdGhlIERPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50IERPTSBldmVu
dCwgYnV0IGRvZXMgbm90IHJlcXVpcmUgdGhlIG92ZXJoZWFkIG9mIGV2ZW50CiAgICAgLy8gZGlz
cGF0Y2hpbmcsIGFuZCBpcyBjYWxsZWQgX2FmdGVyXyB0aGUgbm9kZSBpcyByZW1vdmVkIGZyb20g
dGhlIHRyZWUuCiAgICAgLy8KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSogaW5z
ZXJ0aW9uUG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGZv
cm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZp
c2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjphZGRTdWJyZXNvdXIKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBzaGVl
dCgpLT5iYXNlVVJMKCkpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50
KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBO
b2RlOjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmICghaW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IFByb2NlCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLXZv
aWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBOb2RlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2lu
dCk7CiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTE4MTIxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw4ICs2NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9mZnNldElu
Q2hhcmFjdGVycygpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG1heENoYXJhY3Rlck9mZnNldCgp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5v
ZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdm9pZCBjaGVja1N0
eWxlU2hlZXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIFNjcmlwdEVsZW1lbnQ6
On5TY3JpcHRFbGVtZW50KCkKICAgICBzdG9wTG9hZFJlcXVlc3QoKTsKIH0KIAotdm9pZCBTY3Jp
cHRFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCit2b2lkIFNjcmlw
dEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiAhbV9wYXJzZXJJbnNlcnRl
ZCkKICAgICAgICAgcHJlcGFyZVNjcmlwdCgpOyAvLyBGSVhNRTogUHJvdmlkZSBhIHJlYWwgc3Rh
cnRpbmcgbGluZSBudW1iZXIgaGVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CitjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgRWxlbWVu
dDsKLWNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHRFbGVtZW50OwogY2xhc3MgU2NyaXB0U291cmNl
Q29kZTsKIApAQCAtNjcsNyArNjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBmb3JjZUFzeW5j
KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZUFzeW5jOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rp
b25zIHVzZWQgYnkgb3VyIHBhcmVudCBjbGFzc2VzLgotICAgIHZvaWQgaW5zZXJ0ZWRJbnRvKE5v
ZGUqKTsKKyAgICB2b2lkIGluc2VydGVkSW50byhDb250YWluZXJOb2RlKik7CiAgICAgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoKTsKICAgICB2b2lkIGhhbmRsZVNvdXJjZUF0dHJpYnV0ZShjb25zdCBT
dHJpbmcmIHNvdXJjZVVybCk7CiAgICAgdm9pZCBoYW5kbGVBc3luY0F0dHJpYnV0ZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjQsNyArOTY0LDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgTm9kZSogYmxvY2tT
dGFydCA9IGVuY2xvc2luZ0Jsb2NrKGluc2VydGlvblBvcy5kZXByZWNhdGVkTm9kZSgpKTsKICAg
ICBpZiAoKGlzTGlzdEVsZW1lbnQocmVmTm9kZS5nZXQoKSkgfHwgKGlzTGVnYWN5QXBwbGVTdHls
ZVNwYW4ocmVmTm9kZS5nZXQoKSkgJiYgaXNMaXN0RWxlbWVudChyZWZOb2RlLT5maXJzdENoaWxk
KCkpKSkKICAgICAgICAgJiYgYmxvY2tTdGFydCAmJiBibG9ja1N0YXJ0LT5yZW5kZXJlcigpLT5p
c0xpc3RJdGVtKCkpCi0gICAgICAgIHJlZk5vZGUgPSBpbnNlcnRBc0xpc3RJdGVtcyhyZWZOb2Rl
LCBibG9ja1N0YXJ0LCBpbnNlcnRpb25Qb3MsIGluc2VydGVkTm9kZXMpOworICAgICAgICByZWZO
b2RlID0gaW5zZXJ0QXNMaXN0SXRlbXModG9IVE1MRWxlbWVudChyZWZOb2RlLmdldCgpKSwgYmxv
Y2tTdGFydCwgaW5zZXJ0aW9uUG9zLCBpbnNlcnRlZE5vZGVzKTsKICAgICBlbHNlIHsKICAgICAg
ICAgaW5zZXJ0Tm9kZUF0KHJlZk5vZGUsIGluc2VydGlvblBvcyk7CiAgICAgICAgIGluc2VydGVk
Tm9kZXMucmVzcG9uZFRvTm9kZUluc2VydGlvbihyZWZOb2RlLmdldCgpKTsKQEAgLTEyMjksMTIg
KzEyMjksMTIgQEAgRWRpdEFjdGlvbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZWRpdAogCiAv
LyBJZiB0aGUgdXNlciBpcyBpbnNlcnRpbmcgYSBsaXN0IGludG8gYW4gZXhpc3RpbmcgbGlzdCwg
aW5zdGVhZCBvZiBuZXN0aW5nIHRoZSBsaXN0LAogLy8gd2UgcHV0IHRoZSBsaXN0IGl0ZW1zIGlu
dG8gdGhlIGV4aXN0aW5nIGxpc3QuCi1Ob2RlKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5z
ZXJ0QXNMaXN0SXRlbXMoUGFzc1JlZlB0cjxOb2RlPiBwcnBMaXN0RWxlbWVudCwgTm9kZSogaW5z
ZXJ0aW9uQmxvY2ssIGNvbnN0IFBvc2l0aW9uJiBpbnNlcnRQb3MsIEluc2VydGVkTm9kZXMmIGlu
c2VydGVkTm9kZXMpCitOb2RlKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5zZXJ0QXNMaXN0
SXRlbXMoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gcHJwTGlzdEVsZW1lbnQsIE5vZGUqIGluc2Vy
dGlvbkJsb2NrLCBjb25zdCBQb3NpdGlvbiYgaW5zZXJ0UG9zLCBJbnNlcnRlZE5vZGVzJiBpbnNl
cnRlZE5vZGVzKQogewotICAgIFJlZlB0cjxOb2RlPiBsaXN0RWxlbWVudCA9IHBycExpc3RFbGVt
ZW50OworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEVsZW1lbnQgPSBwcnBMaXN0RWxlbWVu
dDsKIAogICAgIHdoaWxlIChsaXN0RWxlbWVudC0+aGFzQ2hpbGROb2RlcygpICYmIGlzTGlzdEVs
ZW1lbnQobGlzdEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkgJiYgbGlzdEVsZW1lbnQtPmNoaWxkTm9k
ZUNvdW50KCkgPT0gMSkKLSAgICAgICAgbGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudC0+Zmlyc3RD
aGlsZCgpOworICAgICAgICBsaXN0RWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobGlzdEVsZW1lbnQt
PmZpcnN0Q2hpbGQoKSk7CiAKICAgICBib29sIGlzU3RhcnQgPSBpc1N0YXJ0T2ZQYXJhZ3JhcGgo
aW5zZXJ0UG9zKTsKICAgICBib29sIGlzRW5kID0gaXNFbmRPZlBhcmFncmFwaChpbnNlcnRQb3Mp
OwpAQCAtMTI1Miw3ICsxMjUyLDcgQEAgTm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omlu
c2VydEFzTAogCiAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBsaXN0SXRlbSA9IGxpc3RFbGVtZW50
LT5maXJzdENoaWxkKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAg
IHRvQ29udGFpbmVyTm9kZShsaXN0RWxlbWVudC5nZXQoKSktPnJlbW92ZUNoaWxkKGxpc3RJdGVt
LmdldCgpLCBlYyk7CisgICAgICAgIGxpc3RFbGVtZW50LT5yZW1vdmVDaGlsZChsaXN0SXRlbS5n
ZXQoKSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICAgICAgaWYgKGlzU3RhcnQgfHwg
aXNNaWRkbGUpIHsKICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobGlzdEl0ZW0sIGxhc3RO
b2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNz
IEVkaXRpbmdTdHlsZTsKLWNsYXNzIE5vZGU7CiBjbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50Owot
Y2xhc3MgU3R5bGVQcm9wZXJ0eVNldDsKIAogY2xhc3MgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQg
OiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgewogcHVibGljOgpAQCAtNzUsNyArNzIsNyBA
QCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9sYXN0Tm9kZUluc2VydGVkOwogICAg
IH07CiAKLSAgICBOb2RlKiBpbnNlcnRBc0xpc3RJdGVtcyhQYXNzUmVmUHRyPE5vZGU+LCBOb2Rl
KiBpbnNlcnRpb25Ob2RlLCBjb25zdCBQb3NpdGlvbiYsIEluc2VydGVkTm9kZXMmKTsKKyAgICBO
b2RlKiBpbnNlcnRBc0xpc3RJdGVtcyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0RWxlbWVu
dCwgTm9kZSogaW5zZXJ0aW9uTm9kZSwgY29uc3QgUG9zaXRpb24mLCBJbnNlcnRlZE5vZGVzJik7
CiAKICAgICB2b2lkIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZSopOwogICAgIGJvb2wgc2hvdWxk
UmVtb3ZlRW5kQlIoTm9kZSosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzM0LDcgKzE3MzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrU2VhcmNoZXIoKQogCiAv
LyBJQ1UncyBzZWFyY2ggaWdub3JlcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBzbWFsbCBrYW5h
IGxldHRlcnMgYW5kIG9uZXMKIC8vIHRoYXQgYXJlIG5vdCBzbWFsbCwgYW5kIGFsc28gY2hhcmFj
dGVycyB0aGF0IGRpZmZlciBvbmx5IGluIHRoZSB2b2ljaW5nCi0vLyBtYXJrcyB3aGVuIGNvbnNp
ZGVyaW5nIG9ubHkgcHJpbWFyeSBjb2xsYXRpb24gc3RyZW5ndGggZGlmZnJlbmNlcy4KKy8vIG1h
cmtzIHdoZW4gY29uc2lkZXJpbmcgb25seSBwcmltYXJ5IGNvbGxhdGlvbiBzdHJlbmd0aCBkaWZm
ZXJlbmNlcy4KIC8vIFRoaXMgaXMgbm90IGhlbHBmdWwgZm9yIGVuZCB1c2Vycywgc2luY2UgdGhl
c2UgZGlmZmVyZW5jZXMgbWFrZSB3b3JkcwogLy8gZGlzdGluY3QsIHNvIGZvciBvdXIgcHVycG9z
ZXMgd2UgbmVlZCB0aGVzZSB0byBiZSBjb25zaWRlcmVkLgogLy8gVGhlIFVuaWNvZGUgZm9sa3Mg
ZG8gbm90IHRoaW5rIHRoZSBjb2xsYXRpb24gYWxnb3JpdGhtIHNob3VsZCBiZQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAkocmV2aXNpb24g
MTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpkaWRNb3ZlVG9OZXcKICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JtRWxl
bWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOwogfQogCi12b2lkIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50KQordm9pZCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
IHsKICAgICByZXNldEZvcm1Pd25lcigpOwogICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omlu
c2VydGVkSW50bwogICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5yZWdpc3RlckZvcm1FbGVt
ZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CiB9CiAKLXZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYg
KGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0
ZShmb3JtQXR0cikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDggKzc5LDggQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogCi0gICAgdm9pZCBp
bnNlcnRlZEludG8oTm9kZSopOwotICAgIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopOworICAgIHZv
aWQgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqKTsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCk7CiAKICAgICB2b2lkIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50Kik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbgogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0K
IAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MQmFzZUVsZW1lbnQ6Omlu
c2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkKK05vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgSFRNTEJhc2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSog
aW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRp
b25Qb2ludCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCkBAIC01OCw3
ICs1OCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEIKICAgICBy
ZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tKE5vZGUqIGluc2VydGlvblBvaW50KQordm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50Ojpy
ZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRv
Y3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgJKHJldmlz
aW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmlu
ZyB0YXJnZXQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbShOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
b2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9k
eUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxNSArMTUyLDE1IEBAIHZv
aWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb24KICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgSFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxCb2R5RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAg
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gSW5zZXJ0aW9uU2hvdWxk
Q2FsbERpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9uczsKKyAgICAgICAgcmV0dXJuIEluc2Vy
dGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9uczsKICAgICByZXR1cm4g
SW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmRpZE5vdGlmeURlc2Nl
bmRhbnRJbnNlcmV0aW9ucyhOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTEJvZHlFbGVt
ZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKiBpbnNlcnRp
b25Qb2ludCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGluc2VydGlvblBvaW50LCBpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDgg
Kzc0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0
eVNldCopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE5v
dGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucyhOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25z
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlz
aW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05lCiAgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IFVua25vd247CiAgICAgc2V0TmVlZHNXaWxs
VmFsaWRhdGVDaGVjaygpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgSFRNTEYKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgbV9maWVsZFNldEFuY2VzdG9yVmFsaWQgPSBmYWxz
ZTsKICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IFVua25vd247CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExOSw4ICsxMTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0
dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmlydHVh
bCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDE4ICsxMzAsMTggQEAgYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoYwogICAgIHJldHVybiBmb3JtSXNUYWJsZVBh
cnQ7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEZvcm1FbGVt
ZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8o
aW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm4gSW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeURlc2NlbmRhbnRJbnNl
cmV0aW9uczsKKyAgICAgICAgcmV0dXJuIEluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNj
ZW5kYW50SW5zZXJ0aW9uczsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucyhOb2RlKiBpbnNl
cnRpb25Qb2ludCkKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5z
ZXJ0aW9ucyhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBBU1NFUlQoaW5z
ZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE5vdGlmeURl
c2NlbmRhbnRJbnNlcmV0aW9ucyhpbnNlcnRpb25Qb2ludCk7CisgICAgSFRNTEVsZW1lbnQ6OmRp
ZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaGFz
SUQoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwogfQpA
QCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBpbmxpbmUgTm9kZSogZmluZFJvb3QoTm9kZSogbikK
ICAgICByZXR1cm4gcm9vdDsKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KE5vZGUqIGluc2VydGlvblBvaW50KQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIE5vZGUqIHJvb3QgPSBmaW5k
Um9vdCh0aGlzKTsKICAgICBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4gYXNzb2NpYXRl
ZEVsZW1lbnRzKG1fYXNzb2NpYXRlZEVsZW1lbnRzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDkgKzExOCw5IEBAIHBy
aXZhdGU6CiAgICAgSFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
aW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTm90aWZ5
RGVzY2VuZGFudEluc2VyZXRpb25zKE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNSArMTUzLDE1IEBAIHZvaWQgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGUKICAgICBvcGVuVVJMKCk7CiB9CiAKLU5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omlu
c2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkKK05vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2Vy
dGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2Vu
ZGFudEluc2VyZXRpb25zOworICAgICAgICByZXR1cm4gSW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5v
dGlmeURlc2NlbmRhbnRJbnNlcnRpb25zOwogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQog
Ci12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJldGlv
bnMoTm9kZSogaW5zZXJ0aW9uUG9pbnQpCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWRO
b3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGluc2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2ludC0+aW5E
b2N1bWVudCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGlzVVJMQWxsb3dlZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJldGlvbnMoTm9kZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWROb3Rp
ZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTAsNyArMjEwLDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IEhUTUxGcmFtZVNldEVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkK
K05vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEZyYW1lU2V0RWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxF
bGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKSB7CkBAIC0yMjEsNyArMjIxLDcgQEAgTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MRgogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQog
Ci12b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5vZGUqIGluc2VydGlvblBv
aW50KQordm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0
aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkocmV2aXNpb24gMTE4
MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDggKzc5LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogCiAgICAgT3duQXJyYXlQdHI8TGVuZ3RoPiBtX3Jvd0xlbmd0aHM7CiAgICAgT3duQXJyYXlQ
dHI8TGVuZ3RoPiBtX2NvbExlbmd0aHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBA
QCBSZW5kZXJPYmplY3QqIEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSCiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlcklGcmFtZSh0aGlzKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MSUZyYW1lRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2Vy
dGlvblBvaW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MSUZyYW1l
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewog
ICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVzdWx0ID0gSFRNTEZyYW1lRWxlbWVu
dEJhc2U6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgaWYgKGluc2VydGlvblBv
aW50LT5pbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKQEAgLTEx
Myw3ICsxMTMsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxJCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cmVtb3ZlZEZy
b20oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCit2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwg
U3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphdHRhY2goKQogICAgIH0KIH0KIAotTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKIHsKICAgICBpZiAoIW1fZm9ybSkgewogICAgICAgICAvLyBtX2Zvcm0gY2FuIGJlIG5vbi1u
dWxsIGlmIGl0IHdhcyBzZXQgaW4gY29uc3RydWN0b3IuCkBAIC0xODgsNyArMTg4LDcgQEAgTm9k
ZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MSQogICAgIHJldHVybiBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VF
bGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTEltYWdl
RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAg
ICAgaWYgKG1fZm9ybSkKICAgICAgICAgbV9mb3JtLT5yZW1vdmVJbWdFbGVtZW50KHRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDExODEy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw4ICs5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNO
YW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRpZENoYW5nZUZvcm0oKQogICAgIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgp
OwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxJbnB1dEVsZW1l
bnQ6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkKK05vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgSFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmICghaW5zZXJ0aW9uUG9pbnQt
PmluRG9jdW1lbnQoKSkKQEAgLTEzNDYsNyArMTM0Niw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgSFRNTEkKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3Zv
aWQgSFRNTElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCiB7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAg
IHJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3VwKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw4ICsyNjAsOCBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VGb3JtKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUZvcm0oKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2Fy
ZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMs
NyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6Y2xlYXJTaGVldCgpCiAgICAgbV9zaGVldCA9IDA7
CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTExpbmtFbGVtZW50
OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEhUTUxMaW5rRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5z
ZXJ0aW9uUG9pbnQpOwogICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKQEAg
LTI1OSw3ICsyNTksNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxM
CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50Ojpy
ZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxl
bWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmICghaW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsOCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIHByb2Nlc3NDYWxsYmFjayhOb2RlKik7CiAgICAgdm9pZCBjbGVhclNoZWV0KCk7CiAK
LSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5v
ZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNl
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBo
cmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDE0ICsxMzAsMTQgQEAgSFRN
TENvbGxlY3Rpb24qIEhUTUxNYXBFbGVtZW50OjphcmVhcygpCiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZEhUTUxDb2xsZWN0aW9uKE1hcEFyZWFzKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MTWFwRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlv
blBvaW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWFwRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIGlm
IChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICB0cmVlU2NvcGUoKS0+YWRk
SW1hZ2VNYXAodGhpcyk7CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5z
ZXJ0aW9uUG9pbnQpOwogfQogCi12b2lkIEhUTUxNYXBFbGVtZW50OjpyZW1vdmVkRnJvbShOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTE1hcEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5E
b2N1bWVudCgpKQogICAgICAgICB0cmVlU2NvcGUoKS0+cmVtb3ZlSW1hZ2VNYXAodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDggKzQ4LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbShOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyAr
NDk1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZQogICAgIHJl
dHVybiBjaGlsZENvbnRleHQuaXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgJiYgSFRN
TEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKIH0KIAot
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBp
bnNlcnRpb25Qb2ludCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8iKTsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50
KTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IEhUTUxNCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAg
IGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQiKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDgg
KzM2OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jikg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uCiAgICAgICAgIEhUTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2Vy
dGlvblBvaW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWV0YUVs
ZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAg
ICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaW5z
ZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
YUVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxNZXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZvaWQgcHJv
Y2VzcygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOCwxNCArMzI4LDE0IEBAIGJvb2wgSFRNTE9i
amVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUq
IGluc2VydGlvblBvaW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1M
T2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50
KQogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Q
b2ludCk7CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9u
UG9pbnQpOwogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewog
ICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsK
ICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDEx
ODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsOCArNzAsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNyAr
MzA2LDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogICAgIHJl
dHVybiBvd25FbGVtZW50RGlzYWJsZWQoKSB8fCAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUo
KS0+aXNIVE1MRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ocGFyZW50Tm9k
ZSgpKS0+ZGlzYWJsZWQoKSk7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkK
K05vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE9wdGlvbkVsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBpZiAoSFRN
TFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKSB7CiAgICAgICAg
IHNlbGVjdC0+c2V0UmVjYWxjTGlzdEl0ZW1zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJl
Zm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0
YSA9IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8SFRNTFF1b3Rl
RWxlbWVudD4gSFRNTFF1b3RlRWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxRdW90ZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MUXVvdGVFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxRdW90ZUVsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBp
ZiAoaGFzVGFnTmFtZShxVGFnKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VXNlc0JlZm9yZUFm
dGVyUnVsZXModHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQu
aAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBIVE1MUXVvdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
ICAgIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShh
dHRyaWJ1dGUpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxT
Y3JpcHRFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxTY3JpcHRFbGVtZW50OjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKGluc2VydGlvblBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRF
bGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJv
b2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZChLZQogICAgIH0KIH0KIAotTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MU2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5v
ZGUqIGluc2VydGlvblBvaW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBI
VE1MU2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogewogICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZCBkdXJpbmcgZG9jdW1l
bnQgcGFyc2luZywgaXQgd29uJ3QgaGF2ZSBhbnkKICAgICAvLyBpdGVtcyB5ZXQgLSBidXQgZm9y
IGlubmVySFRNTCBhbmQgcmVsYXRlZCBtZXRob2RzLCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDExODEy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0eXBlQWhlYWRGaW5k
KEtleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKLSAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09w
dGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9s
KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24g
MTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxIVE1MU291cmNlRWxlbWVu
dD4gSFRNTFNvdXJjZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNvdXJjZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBIVE1MU291cmNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50
KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MU291cmNlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxF
bGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIEVsZW1lbnQqIHBhcmVu
dCA9IHBhcmVudEVsZW1lbnQoKTsKQEAgLTYzLDcgKzYzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBIVE1MUwogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12
b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiByZW1vdmFsUm9vdCkKK3Zv
aWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIHJlbW92YWxS
b290KQogewogICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IXBhcmVudCAmJiByZW1vdmFsUm9vdC0+aXNFbGVtZW50Tm9kZSgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4
ICs0OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFNvdXJjZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBj
b25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgZXJyb3JFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRN
TFNvdXJjZUVsZW1lbnQ+Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhU
TUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvCiB9CiAjZW5kaWYKIAotTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG8o
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IEhUTUxTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Q
b2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsK
ICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkgewpAQCAtMTYzLDcgKzE2Myw3
IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFMKICAgICByZXR1cm4g
SW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbShO
b2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIApAQCAtMTcyLDEwICsxNzIsOCBAQCB2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5vZGUqCiAgICAgLy8gVGhhdCBpcywgYmVjYXVzZSB3
aWxsUmVtb3ZlKCkgaXMgYWxzbyBjYWxsZWQgaWYgYW4gYW5jZXN0b3IgaXMgcmVtb3ZlZCBmcm9t
IHRoZSBkb2N1bWVudC4KICAgICAvLyBOb3csIGlmIHdlIHdhbnQgdG8gcmVnaXN0ZXIgPHN0eWxl
IHNjb3BlZD4gZXZlbiBpZiBpdCdzIG5vdCBpbkRvY3VtZW50LAogICAgIC8vIHdlJ2QgbmVlZCB0
byBmaW5kIGEgd2F5IHRvIGRpc2Nlcm4gd2hldGhlciB0aGF0IGlzIHRoZSBjYXNlLCBvciB3aGV0
aGVyIDxzdHlsZSBzY29wZWQ+IGl0c2VsZiBpcyBhYm91dCB0byBiZSByZW1vdmVkLgotICAgIGlm
IChtX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSkgewotICAgICAgICBOb2RlKiBzY29wZSA9
IHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKSA6IGluc2VydGlvblBvaW50OwotICAgICAgICB1
bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKHRvQ29udGFpbmVyTm9kZShzY29wZSkpOwotICAgIH0K
KyAgICBpZiAobV9pc1JlZ2lzdGVyZWRXaXRoU2NvcGluZ05vZGUpCisgICAgICAgIHVucmVnaXN0
ZXJXaXRoU2NvcGluZ05vZGUocGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpIDogaW5zZXJ0aW9u
UG9pbnQpOwogI2VuZGlmCiAKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCShyZXZpc2lvbiAxMTgx
MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gb3ZlcmxvYWQgZnJvbSBI
VE1MRWxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
aW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBi
b29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpjaGlsZFNoCiAgICAgcmV0dXJuIGNoaWxk
Q29udGV4dC5pc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgJiYgSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwog
fQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoIWlu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2
ZW50Kik7CiAKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAg
Ly8gVGhlIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIHJldHVybiB0cnVlIGlmIHBsYWNlaG9sZGVyIHBy
b2Nlc3NpbmcgaXMgbmVlZGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVy
KCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIFBhc3NSZWZQdHI8SFRN
TFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxU
aXRsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5z
ZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUaXRs
ZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKQEAgLTUyLDcgKzUyLDcgQEAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MVAogICAgIHJldHVybiBJbnNlcnRpb25Eb25l
OwogfQogCi12b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5vZGUqIGluc2VydGlv
blBvaW50KQordm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0
aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFRpdGxlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbShOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBt
X3RpdGxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIFBhc3NSZWZQdHI8SFRNTFRyYWNr
RWxlbWVudD4gSFRNTFRyYWNrRWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUcmFja0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUcmFja0VsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkgewpAQCAtODMsNyArODMsNyBAQCBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9
CiAKLXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGlu
c2VydGlvblBvaW50KQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxl
bWVudCgpOwogICAgIGlmICghcGFyZW50ICYmIFdlYkNvcmU6OmlzTWVkaWFFbGVtZW50KGluc2Vy
dGlvblBvaW50KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCShy
ZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsOSArNzcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShD
b250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKE1JQ1JPREFU
QSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBQYXNzUmVmUHRyPE1hdGhN
TE1hdGhFbGVtZW50PiBNYXRoTUxNYXRoCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxN
YXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IE1hdGhNTE1hdGhFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5z
ZXJ0aW9uUG9pbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IE1hdGhNTE1h
dGhFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7
CiAgICAgLy8gVGhlcmUgYXJlIHNpYmxpbmcgcnVsZXMgaW4gdGhlIE1hdGhNTCBkZWZhdWx0IHN0
eWxlLgogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiB9OwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcx
LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzZXRYbWxiYXNlKGNvbnN0IFN0cmluZwogICAgIHNldEF0
dHJpYnV0ZShYTUxOYW1lczo6YmFzZUF0dHIsIHZhbHVlKTsKIH0KIAotdm9pZCBTVkdFbGVtZW50
OjpyZW1vdmVkRnJvbShOb2RlKiByb290UGFyZW50KQordm9pZCBTVkdFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKiByb290UGFyZW50KQogewogICAgIGlmIChyb290UGFyZW50LT5p
bkRvY3VtZW50KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygp
LT5yZW1vdmVBbGxBbmltYXRpb25FbGVtZW50c0Zyb21UYXJnZXQodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICBTVkdFbGVtZW50UmFy
ZURhdGEqIHJhcmVTVkdEYXRhKCkgY29uc3Q7CiAgICAgU1ZHRWxlbWVudFJhcmVEYXRhKiBlbnN1
cmVSYXJlU1ZHRGF0YSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHRkVJbWFnZUVs
ZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTVkdGRUltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7CiAgICAgYnVpbGRQZW5kaW5nUmVzb3Vy
Y2UoKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBTVkdGRUltYWdlRWxl
bWVudDo6cmVtb3ZlZEZyb20oTm9kZSogcm9vdFBhcmVudCkKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpyZW1vdmVkRnJvbShyb290UGFyZW50KTsK
ICAgICBpZiAocm9vdFBhcmVudC0+aW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFSW1hZ2VFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0
LDcgKzMxNCw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UKICAg
ICBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0K
IAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdGb250RmFjZUVsZW1lbnQ6
Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdGb250RmFjZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhyb290UGFyZW50
KTsKICAgICBpZiAoIXJvb3RQYXJlbnQtPmluRG9jdW1lbnQoKSkKQEAgLTMyNSw3ICszMjUsNyBA
QCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR0ZvCiAgICAgcmV0dXJuIElu
c2VydGlvbkRvbmU7CiB9CiAKLXZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVkRnJvbShO
b2RlKiByb290UGFyZW50KQordm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20o
cm9vdFBhcmVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAg
UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBtX2ZvbnRGYWNlUnVsZTsKICAgICBSZWZQdHI8U1ZH
Rm9udEVsZW1lbnQ+IG1fZm9udEVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbgogICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdGb250RmFjZUVsZW1lbnQqPihncmFuZHBhcmVudCktPnJlYnVp
bGRGb250RmFjZSgpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNW
R0ZvbnRGYWNlVXJpRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIHJvb3RQYXJlbnQpCitOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgbG9hZEZvbnQoKTsK
ICAgICByZXR1cm4gU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAkocmV2aXNpb24gMTE4
MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAg
ICB2b2lkIGxvYWRGb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTMgKzYxLDEzIEBAIHZvaWQgU1ZHR2x5
cGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb24KICAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdHbHlwaEVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50
KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdHbHlwaEVsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiByb290UGFyZW50KQogewogICAgIGludmFsaWRhdGVH
bHlwaENhY2hlKCk7CiAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50byhy
b290UGFyZW50KTsKIH0KIAotdm9pZCBTVkdHbHlwaEVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5vZGUq
IHJvb3RQYXJlbnQpCit2b2lkIFNWR0dseXBoRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSogcm9vdFBhcmVudCkKIHsKICAgICBpZiAocm9vdFBhcmVudC0+aW5Eb2N1bWVudCgpKQog
ICAgICAgICBpbnZhbGlkYXRlR2x5cGhDYWNoZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaEVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6
CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBQYXNzUmVmUHRyPFNWR0hLZXJuRWxlbWVudD4gU1ZHSEtlcm5FbGVt
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdIS2VybkVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdIS2VybkVs
ZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTVkdIS2VybkVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlKiByb290UGFyZW50KQogewogICAgIENvbnRhaW5lck5vZGUqIGZvbnROb2RlID0gcGFyZW50
Tm9kZSgpOwogICAgIGlmIChmb250Tm9kZSAmJiBmb250Tm9kZS0+aGFzVGFnTmFtZShTVkdOYW1l
czo6Zm9udFRhZykpIHsKQEAgLTUyLDcgKzUyLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdISwogICAgIHJldHVybiBTVkdFbGVtZW50OjppbnNlcnRlZEludG8ocm9v
dFBhcmVudCk7CiB9CiAKLXZvaWQgU1ZHSEtlcm5FbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBy
b290UGFyZW50KQordm9pZCBTVkdIS2VybkVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgQ29udGFpbmVyTm9kZSogZm9udE5vZGUgPSBwYXJlbnRO
b2RlKCk7CiAgICAgaWYgKGZvbnROb2RlICYmIGZvbnROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVz
Ojpmb250VGFnKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaAkocmV2
aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
SEtlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmly
dHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQogICAgIH0K
IH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdJbWFnZUVsZW1lbnQ6
Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBy
b290UGFyZW50KQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjppbnNlcnRl
ZEludG8ocm9vdFBhcmVudCk7CiAgICAgaWYgKCFyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhO
b2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzgsMTQgKzQ3OCwxNCBAQCBSZW5kZXJPYmplY3QqIFNWR1NWR0VsZW1lbnQ6OmNyZWF0
ZVJlbmRlCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
KHRoaXMpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1NWR0Vs
ZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTVkdTVkdFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSogcm9vdFBhcmVudCkKIHsKICAgICBpZiAocm9vdFBhcmVudC0+aW5Eb2N1bWVudCgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFRpbWVDb250YWluZXIo
dGhpcyk7CiAgICAgcmV0dXJuIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6Omluc2VydGVkSW50
byhyb290UGFyZW50KTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShOb2Rl
KiByb290UGFyZW50KQordm9pZCBTVkdTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlKiByb290UGFyZW50KQogewogICAgIGlmIChyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCiAg
ICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRh
aW5lcih0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24g
MTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDggKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJu
IFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7IH0KICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIHJvb3RQYXJlbnQpCitO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1NjcmlwdEVsZW1lbnQ6Omluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6Omlu
c2VydGVkSW50byhyb290UGFyZW50KTsKICAgICBTY3JpcHRFbGVtZW50OjppbnNlcnRlZEludG8o
cm9vdFBhcmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJl
dmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAs
IE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDExODEy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OmZpbmlzaFBhcnNp
bmdDaGlsZAogICAgIFNWR0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi1O
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvKE5vZGUqIHJvb3RQYXJlbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIHJvb3RQYXJl
bnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwogICAgIGlm
IChyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCkBAIC0xNDIsNyArMTQyLDcgQEAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdTdAogICAgIHJldHVybiBJbnNlcnRpb25Eb25l
OwogfQogCi12b2lkIFNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb20oTm9kZSogcm9vdFBhcmVu
dCkKK3ZvaWQgU1ZHU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiByb290
UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKHJvb3RQYXJlbnQpOwogICAg
IGlmIChyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4
LDcgKzM1OCw3IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgb2Jq
ZWN0LT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50
KQorTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdTdHlsZWRFbGVtZW50Ojpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50
OjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7CiAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oKTsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmJ1
aWxkUGVuZGluZ1Jlc291CiAgICAgfQogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKE5vZGUqIHJvb3RQYXJlbnQpCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgaWYgKHJvb3RQYXJlbnQtPmlu
RG9jdW1lbnQoKSkKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oZmFs
c2UsIHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCShyZXZp
c2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw4IEBAIHByb3RlY3RlZDogCiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJZEZv
clNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjky
LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyYwogICAgIH0KIH0K
IAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdUUmVmRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKE5vZGUqIHJvb3RQYXJlbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IFNWR1RSZWZFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogcm9vdFBh
cmVudCkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7
CiAgICAgaWYgKHJvb3RQYXJlbnQtPmluRG9jdW1lbnQoKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1RSCiAgICAgcmV0dXJuIEluc2Vy
dGlvbkRvbmU7CiB9CiAKLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5vZGUqIHJv
b3RQYXJlbnQpCit2b2lkIFNWR1RSZWZFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiByb290UGFyZW50KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJvb3RQ
YXJlbnQpOwogICAgIGlmIChyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNsZWFyRXZlbnRMaXN0ZW5lcigpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIFNWR1RleHRQYXRoRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IFNWR1RleHRQYXRoRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIHJvb3RQ
YXJlbnQpCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1RleHRQYXRoRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwogICAgIGlmICghcm9vdFBh
cmVudC0+aW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuaAkocmV2aXNpb24gMTE4MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTVkdUZXh0UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5z
ZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAg
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNWR1RpdGxlRWxlbWVudD4gU1ZHVGl0bGVF
bGVtCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdUaXRsZUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdUaXRs
ZUVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBTVkdUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKiByb290UGFyZW50KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50
byhyb290UGFyZW50KTsKICAgICBpZiAoIXJvb3RQYXJlbnQtPmluRG9jdW1lbnQoKSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdUaQogICAg
IHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIFNWR1RpdGxlRWxlbWVudDo6cmVtb3Zl
ZEZyb20oTm9kZSogcm9vdFBhcmVudCkKK3ZvaWQgU1ZHVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlKiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRG
cm9tKHJvb3RQYXJlbnQpOwogICAgIGlmIChyb290UGFyZW50LT5pbkRvY3VtZW50KCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCShyZXZpc2lvbiAxMTgxMjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDggKzM1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdUaXRsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9
IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGlu
dCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDExODEyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDcgKzE3NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1dlbGxGb3JtZWREb2N1bWVudCgKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBT
VkdVc2VFbGVtZW50OjppbnNlcnRlZEludG8oTm9kZSogcm9vdFBhcmVudCkKK05vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqIHJvb3RQYXJlbnQpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbnMgZXhpc3RzIHRv
IGFzc3VyZSBhc3N1bXB0aW9ucyBtYWRlIGluIHRoZSBjb2RlIHJlZ2FyZGluZyBTVkdFbGVtZW50
SW5zdGFuY2UgY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYXJlIHNhdGlzZmllZC4KICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwpAQCAtMTg4
LDcgKzE4OCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVXMKICAg
ICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVk
RnJvbShOb2RlKiByb290UGFyZW50KQordm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlKiByb290UGFyZW50KQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpyZW1vdmVkRnJvbShyb290UGFyZW50KTsKICAgICBpZiAocm9vdFBhcmVudC0+aW5E
b2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAx
MTgxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7CiAK
ICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTgxMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQCBQYXNzUmVmUHRyPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5F
bGVtCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdWS2VybkVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdWS2Vy
bkVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiByb290UGFyZW50KQorTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBTVkdWS2VybkVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKiByb290UGFyZW50KQogewogICAgIGlmIChyb290UGFyZW50LT5pbkRvY3VtZW50KCkp
IHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogZm9udE5vZGUgPSBwYXJlbnROb2RlKCk7CkBAIC01
Miw3ICs1Miw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVksKICAg
ICByZXR1cm4gU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwogfQogCi12b2lk
IFNWR1ZLZXJuRWxlbWVudDo6cmVtb3ZlZEZyb20oTm9kZSogcm9vdFBhcmVudCkKK3ZvaWQgU1ZH
Vktlcm5FbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiByb290UGFyZW50KQogewog
ICAgIENvbnRhaW5lck5vZGUqIGZvbnROb2RlID0gcGFyZW50Tm9kZSgpOwogICAgIGlmIChmb250
Tm9kZSAmJiBmb250Tm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udFRhZykpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgJKHJldmlzaW9uIDExODEyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
OCArMzksOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1ZLZXJuRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbShOb2RlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTE4MTIxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpyZXNldCgpCiAg
ICAgcmVzb2x2ZUZpcnN0SW50ZXJ2YWwoKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKE5vZGUqIHJvb3RQYXJlbnQp
CitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1NNSUxFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50Ojpp
bnNlcnRlZEludG8ocm9vdFBhcmVudCk7CiAgICAgaWYgKCFyb290UGFyZW50LT5pbkRvY3VtZW50
KCkpCkBAIC0yMjIsNyArMjIyLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBTVkdTTQogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIFNWR1NNSUxFbGVt
ZW50OjpyZW1vdmVkRnJvbShOb2RlKiByb290UGFyZW50KQordm9pZCBTVkdTTUlMRWxlbWVudDo6
cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKIHsKICAgICBpZiAocm9vdFBh
cmVudC0+aW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChtX3RpbWVDb250YWluZXIpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgJKHJl
dmlzaW9uIDExODEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKE5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9u
QXR0cmlidXRlQ2hhbmdlZCgpID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>