<?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>164836</bug_id>
          
          <creation_ts>2016-11-16 14:48:36 -0800</creation_ts>
          <short_desc>Use more references in TreeScope / TreeScopeAdopter</short_desc>
          <delta_ts>2016-11-16 16:40:05 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252027</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-16 14:48:36 -0800</bug_when>
    <thetext>Use more references in TreeScope / TreeScopeAdopter and avoid some unnecessary null checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252033</commentid>
    <comment_count>1</comment_count>
      <attachid>294980</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-16 14:53:49 -0800</bug_when>
    <thetext>Created attachment 294980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252105</commentid>
    <comment_count>2</comment_count>
      <attachid>294980</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-16 16:40:01 -0800</bug_when>
    <thetext>Comment on attachment 294980
Patch

Clearing flags on attachment: 294980

Committed r208828: &lt;http://trac.webkit.org/changeset/208828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252106</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-16 16:40:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294980</attachid>
            <date>2016-11-16 14:53:49 -0800</date>
            <delta_ts>2016-11-16 16:40:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164836-20161116145345.patch</filename>
            <type>text/plain</type>
            <size>50440</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkwYzk3YTQ0MmIxNWIx
NGYxMmQ4ZDk5ZjVkNDczNTUwNzhlNjY1Ni4uNThjYTcyMzM1NWI5NWYwNmZhYjdkNjRhY2RlYjM0
ZWEzMTI4OWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxNi0xMS0xNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5j
ZXMgaW4gVHJlZVNjb3BlIC8gVHJlZVNjb3BlQWRvcHRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBUcmVlU2Nv
cGUgLyBUcmVlU2NvcGVBZG9wdGVyIGFuZCBhdm9pZCBzb21lCisgICAgICAgIHVubmVjZXNzYXJ5
IG51bGwgY2hlY2tzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gV2ViLWV4cG9zZWQgYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENo
aWxkTm9kZXNUb0RlbGV0aW9uUXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3Zl
U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBdHRyKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjph
ZG9wdERvY3VtZW50KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRv
cHRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpkb2N1bWVudFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6c2V0RG9jdW1lbnRTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjplbnN1cmVE
aWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGVBZG9wdGVyOjp1cGRhdGVUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
QWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3Bl
QWRvcHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlQWRvcHRlcjo6ZW5zdXJlRGlk
TW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
QWRvcHRlcjo6VHJlZVNjb3BlQWRvcHRlcik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQaWN0dXJlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTFBpY3R1cmVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRlbXBsYXRlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdF
bGVtZW50Lmg6CisKIDIwMTYtMTEtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlLWluZGVudCBzb21lIG9sZCBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IDY3MjE1OTQ5NDUyODAxYTk3NTc2ZGIxNTgzNmY3Yzc5YzJk
NDgzY2IuLmZiNjY3Mjg5MWRmYTEyMGE0MzI0MTk0ZmIwNTA2ZjRhMDJiYTZkNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgQ29u
dGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQp
CiAgICAgICAgIGRlc3Ryb3lSZW5kZXJUcmVlSWZOZWVkZWQoY2hpbGQpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIGEgbm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBhZG9wdE5vZGUu
Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBhZG9wdGVkQ2hpbGQgPSBkb2N1bWVudCgpLmFkb3B0Tm9k
ZShjaGlsZCkucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgIHBhcnNlckFwcGVuZENoaWxk
KCphZG9wdGVkQ2hpbGQpOworICAgICAgICBhdXRvIGFkb3B0ZWRDaGlsZCA9IGRvY3VtZW50KCku
YWRvcHROb2RlKGNoaWxkKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgcGFyc2VyQXBw
ZW5kQ2hpbGQoYWRvcHRlZENoaWxkKTsKICAgICAgICAgLy8gRklYTUU6IFRvZ2V0aGVyIHdpdGgg
YWRvcHROb2RlIGFib3ZlLCB0aGUgdHJlZSBzY29wZSBtaWdodCBnZXQgdXBkYXRlZCByZWN1cnNp
dmVseSB0d2ljZQogICAgICAgICAvLyAoaWYgdGhlIGRvY3VtZW50IGNoYW5nZWQgb3Igb2xkUGFy
ZW50IHdhcyBpbiBhIHNoYWRvdyB0cmVlLCBBTkQgKnRoaXMgaXMgaW4gYSBzaGFkb3cgdHJlZSku
CiAgICAgICAgIC8vIENhbiB3ZSBkbyBiZXR0ZXI/Ci0gICAgICAgIHRyZWVTY29wZSgpLmFkb3B0
SWZOZWVkZWQoYWRvcHRlZENoaWxkLmdldCgpKTsKKyAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJ
Zk5lZWRlZChhZG9wdGVkQ2hpbGQpOwogICAgIH0KIH0KIApAQCAtMjgwLDcgKzI4MCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShOb2RlJiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQpCiAgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRlZChjaGls
ZC5wdHIoKSk7CisgICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoY2hpbGQpOwogCiAg
ICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LCBjaGlsZCk7CiAKQEAgLTQ0NCw3ICs0NDQs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoTm9kZSYg
bmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQogICAgICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUo
KSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVk
ZWQoY2hpbGQucHRyKCkpOworICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVkKGNoaWxk
KTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNz
ZXJ0Tm9FdmVudERpc3BhdGNoOwpAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5v
ZGUmIG9sCiAgICAgb2xkQ2hpbGQuc2V0TmV4dFNpYmxpbmcobnVsbHB0cik7CiAgICAgb2xkQ2hp
bGQuc2V0UGFyZW50Tm9kZShudWxscHRyKTsKIAotICAgIGRvY3VtZW50KCkuYWRvcHRJZk5lZWRl
ZCgmb2xkQ2hpbGQpOworICAgIGRvY3VtZW50KCkuYWRvcHRJZk5lZWRlZChvbGRDaGlsZCk7CiB9
CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSYgb2xkQ2hpbGQp
CkBAIC02NzEsNyArNjcxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBw
ZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgaWYg
KGNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICB0cmVl
U2NvcGUoKS5hZG9wdElmTmVlZGVkKGNoaWxkLnB0cigpKTsKKyAgICAgICAgdHJlZVNjb3BlKCku
YWRvcHRJZk5lZWRlZChjaGlsZCk7CiAKICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBl
bmQgb2YgdGhlIGxpc3QKICAgICAgICAgewpAQCAtNjk5LDcgKzY5OSw3IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoTm9kZSYgbmV3Q2hpbGQpCiAgICAgICAgIE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAgICAgICAgIGFwcGVu
ZENoaWxkQ29tbW9uKG5ld0NoaWxkKTsKLSAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRl
ZCgmbmV3Q2hpbGQpOworICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVkKG5ld0NoaWxk
KTsKICAgICB9CiAKICAgICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1l
Q291bnRGb3JJbnNlcnRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuY3BwCmluZGV4IDU5ZDYwMjc0YTdmNGMwNTcxY2Q5ZDZmMzg5MWFiNmY4OWI2
NWIwZWYuLjRlMzA2NzlkMDA0NjYyZjFiZDZhMDZhYjViZjgwNmQ1YzJmYmZhNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMTkwLDcg
KzE5MCw3IEBAIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwg
Tm9kZSomIHRhaWwsIENvbnRhaW5lck5vZGUmIGNvbnRhCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBSZWY8Tm9kZT4gcHJvdGVjdCgqbm9kZSk7IC8vIHJlbW92ZWRGcm9tRG9jdW1lbnQg
bWF5IHJlbW92ZSByZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhpcyBub2RlLgogICAgICAgICAg
ICAgaWYgKERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5lci5vd25lckRvY3Vt
ZW50KCkpCi0gICAgICAgICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZOZWVkZWQo
bm9kZSk7CisgICAgICAgICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZOZWVkZWQo
Km5vZGUpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAg
ICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKGNvbnRhaW5lciwgKm5vZGUpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyZDgyMWQ1M2I3OWQzMGNkMGUyYjFmZjE5
Mjk2NDEyYTZlY2RiOTZjLi5lMDg3ZDZjZmRmNjE0YWVmYmFmYTQyZDQ4Nzc2NTMwNTM3NjcxODEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxOb2RlPj4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShOb2RlJiBzb3VyY2UpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CiAKLSAgICBhZG9w
dElmTmVlZGVkKCZzb3VyY2UpOworICAgIGFkb3B0SWZOZWVkZWQoc291cmNlKTsKIAogICAgIHJl
dHVybiBSZWY8Tm9kZT4geyBzb3VyY2UgfTsKIH0KQEAgLTM4NjgsMTQgKzM4NjgsMTQgQEAgdm9p
ZCBEb2N1bWVudDo6ZGV0YWNoTm9kZUl0ZXJhdG9yKE5vZGVJdGVyYXRvciogbmkpCiAgICAgbV9u
b2RlSXRlcmF0b3JzLnJlbW92ZShuaSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6Om1vdmVOb2RlSXRl
cmF0b3JzVG9OZXdEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogbmV3RG9jdW1lbnQpCit2
b2lkIERvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQoTm9kZSYgbm9kZSwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewogICAgIFZlY3RvcjxOb2RlSXRlcmF0b3IqPiBub2Rl
SXRlcmF0b3JzOwogICAgIGNvcHlUb1ZlY3RvcihtX25vZGVJdGVyYXRvcnMsIG5vZGVJdGVyYXRv
cnMpOwogICAgIGZvciAoYXV0byogaXQgOiBub2RlSXRlcmF0b3JzKSB7Ci0gICAgICAgIGlmICgm
aXQtPnJvb3QoKSA9PSBub2RlKSB7CisgICAgICAgIGlmICgmaXQtPnJvb3QoKSA9PSAmbm9kZSkg
ewogICAgICAgICAgICAgZGV0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKLSAgICAgICAgICAgIG5ld0Rv
Y3VtZW50LT5hdHRhY2hOb2RlSXRlcmF0b3IoaXQpOworICAgICAgICAgICAgbmV3RG9jdW1lbnQu
YXR0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggMTI5Y2JiNWRiYTFkMTg2NjlmYzdmODJlZGU5MWFlNDUzMTQzMTJjNS4uNTE4
ZjYwMTc2MmU2MDUzZGNiMDNmYTY0Y2FlOTEzYTRkNmVjMDA5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTczNSw3ICs3MzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0dGFjaE5vZGVJdGVy
YXRvcihOb2RlSXRlcmF0b3IqKTsKICAgICB2b2lkIGRldGFjaE5vZGVJdGVyYXRvcihOb2RlSXRl
cmF0b3IqKTsKLSAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2RlKiwg
RG9jdW1lbnQqKTsKKyAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2Rl
JiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYXR0YWNoUmFuZ2UoUmFuZ2UqKTsKICAgICB2b2lk
IGRldGFjaFJhbmdlKFJhbmdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMjFlNzA4ODQ2
OGVmMDJiZDUzMzdkMDE3NGFiNzkxMWNmOWFhNTU1Mi4uNjdkNDA2ODE5ZDZlNzU3ODFjY2ViNTVl
NTFlNTZkZWNkY2MxMWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUzMSwxMSArMTUz
MSwxMSBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKQogewogfQogCi12
b2lkIEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
K3ZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50
KQogewogICAgIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIAotICAg
IGlmIChvbGREb2N1bWVudC0+aW5RdWlya3NNb2RlKCkgIT0gZG9jdW1lbnQoKS5pblF1aXJrc01v
ZGUoKSkgeworICAgIGlmIChvbGREb2N1bWVudC5pblF1aXJrc01vZGUoKSAhPSBkb2N1bWVudCgp
LmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgIC8vIEVsZW1lbnREYXRhOjptX2NsYXNzTmFtZXMg
b3IgRWxlbWVudERhdGE6Om1faWRGb3JTdHlsZVJlc29sdXRpb24gbmVlZCB0byBiZSB1cGRhdGVk
IHdpdGggdGhlIHJpZ2h0IGNhc2UuCiAgICAgICAgIGlmIChoYXNJRCgpKQogICAgICAgICAgICAg
YXR0cmlidXRlQ2hhbmdlZChpZEF0dHIsIG51bGxBdG9tLCBnZXRJZEF0dHJpYnV0ZSgpKTsKQEAg
LTE1NDQsNyArMTU0NCw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShpc0RlZmluZWRD
dXN0b21FbGVtZW50KCkpKQotICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5x
dWV1ZUFkb3B0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzLCAqb2xkRG9jdW1lbnQsIGRvY3VtZW50
KCkpOworICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUFkb3B0ZWRD
YWxsYmFja0lmTmVlZGVkKCp0aGlzLCBvbGREb2N1bWVudCwgZG9jdW1lbnQoKSk7CiB9CiAKIGJv
b2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CkBAIC0xNzQ2LDcgKzE3NDYsNyBAQCB2
b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QoUmVmPFNoYWRvd1Jvb3Q+JiYgbmV3U2hhZG93Um9v
dCkKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRTaGFkb3dSb290KFdURk1vdmUobmV3
U2hhZG93Um9vdCkpOwogCiAgICAgc2hhZG93Um9vdC5zZXRIb3N0KHRoaXMpOwotICAgIHNoYWRv
d1Jvb3Quc2V0UGFyZW50VHJlZVNjb3BlKCZ0cmVlU2NvcGUoKSk7CisgICAgc2hhZG93Um9vdC5z
ZXRQYXJlbnRUcmVlU2NvcGUodHJlZVNjb3BlKCkpOwogCiAgICAgTm9kZVZlY3RvciBwb3N0SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKICAgICBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgq
dGhpcywgc2hhZG93Um9vdCwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpOwpAQCAt
MTc3NSw3ICsxNzc1LDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICBl
bGVtZW50UmFyZURhdGEoKS0+Y2xlYXJTaGFkb3dSb290KCk7CiAKICAgICBvbGRSb290LT5zZXRI
b3N0KG51bGxwdHIpOwotICAgIG9sZFJvb3QtPnNldFBhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQo
KSk7CisgICAgb2xkUm9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KCkpOwogfQogCiBz
dGF0aWMgYm9vbCBjYW5BdHRhY2hBdXRob3JTaGFkb3dSb290KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8QXR0cj4+IEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZU5vZGUoQXR0ciYgYXR0ck5vZGUpCiAgICAgfQogICAgIGlmIChhdHRy
Tm9kZS5vd25lckVsZW1lbnQoKSAhPSB0aGlzKSB7CiAgICAgICAgIGF0dHJOb2RlLmF0dGFjaFRv
RWxlbWVudCgqdGhpcyk7Ci0gICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoJmF0dHJO
b2RlKTsKKyAgICAgICAgdHJlZVNjb3BlKCkuYWRvcHRJZk5lZWRlZChhdHRyTm9kZSk7CiAgICAg
ICAgIGVuc3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpLmFwcGVuZCgmYXR0ck5vZGUp
OwogICAgIH0KICAgICByZXR1cm4gV1RGTW92ZShvbGRBdHRyTm9kZSk7CkBAIC0yMTc4LDcgKzIx
NzgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8QXR0cj4+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5v
ZGVOUyhBdHRyJiBhdHRyTm9kZSkKICAgICBzZXRBdHRyaWJ1dGVJbnRlcm5hbChpbmRleCwgYXR0
ck5vZGUucXVhbGlmaWVkTmFtZSgpLCBhdHRyTm9kZS52YWx1ZSgpLCBOb3RJblN5bmNocm9uaXph
dGlvbk9mTGF6eUF0dHJpYnV0ZSk7CiAKICAgICBhdHRyTm9kZS5hdHRhY2hUb0VsZW1lbnQoKnRo
aXMpOwotICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoJmF0dHJOb2RlKTsKKyAgICB0cmVl
U2NvcGUoKS5hZG9wdElmTmVlZGVkKGF0dHJOb2RlKTsKICAgICBlbnN1cmVBdHRyTm9kZUxpc3RG
b3JFbGVtZW50KCp0aGlzKS5hcHBlbmQoJmF0dHJOb2RlKTsKIAogICAgIHJldHVybiBXVEZNb3Zl
KG9sZEF0dHJOb2RlKTsKQEAgLTMzODksNyArMzM4OSw3IEBAIFJlZjxBdHRyPiBFbGVtZW50Ojpl
bnN1cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgUmVmUHRyPEF0dHI+IGF0
dHJOb2RlID0gZmluZEF0dHJOb2RlSW5MaXN0KGF0dHJOb2RlTGlzdCwgbmFtZSk7CiAgICAgaWYg
KCFhdHRyTm9kZSkgewogICAgICAgICBhdHRyTm9kZSA9IEF0dHI6OmNyZWF0ZSgqdGhpcywgbmFt
ZSk7Ci0gICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoYXR0ck5vZGUuZ2V0KCkpOwor
ICAgICAgICB0cmVlU2NvcGUoKS5hZG9wdElmTmVlZGVkKCphdHRyTm9kZSk7CiAgICAgICAgIGF0
dHJOb2RlTGlzdC5hcHBlbmQoYXR0ck5vZGUpOwogICAgIH0KICAgICByZXR1cm4gYXR0ck5vZGUu
cmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDhmYTU5MjI5ZTljODA0ODkw
ODc5NzQzZDk3ZDg0MzBhYTBhOWE1ZjQuLmYyYjJmN2Y5ZDBlOWEwODUzZmIyZWIxZTEwMzVmZTU4
MTU5OWQ3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTg2LDcgKzU4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5
SWZOZWVkZWQoKTsKICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShpbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGRhZGM4YWI0YWRiOThmYjY2MTMzNDc0OTk5ZDNiYmRkZjAwMzg4ZWQuLmU0
ZTgwZGViNzkyMTNlODA0NWM4NDNiYmYyZDAyNjU2ZmQ4OTdhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTE4NjQsNyArMTg2NCw3IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIE5vZGU6OmV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gTm9kZUV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsKIH0KIAotdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpCit2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCkKIHsKICAgICBUcmVlU2NvcGVBZG9wdGVyOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1
bWVudFdhc0NhbGxlZChvbGREb2N1bWVudCk7CiAKQEAgLTE4NzUsMTQgKzE4NzUsMTQgQEAgdm9p
ZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSAmJiBvbGREb2N1bWVudCkgewotICAgICAgICBpZiAoYXV0byogY2FjaGUgPSBvbGREb2N1
bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFj
Y2Vzc2liaWxpdHlFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gb2xkRG9j
dW1lbnQuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+cmVtb3Zl
KHRoaXMpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpLnNpemUoKSArIGV2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50KS5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7Ci0gICAgICAgIG9s
ZERvY3VtZW50LT5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAgICAgIG9s
ZERvY3VtZW50LmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCp0aGlzKTsKICAgICAgICAgZG9j
dW1lbnQoKS5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CiAgICAgfQogCkBAIC0xODkx
LDcgKzE4OTEsNyBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkKICAgICAgICAgbnVtVG91Y2hFdmVudEhhbmRsZXJzICs9IGV2ZW50TGlzdGVu
ZXJzKG5hbWUpLnNpemUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3Vj
aEV2ZW50SGFuZGxlcnM7ICsraSkgewotICAgICAgICBvbGREb2N1bWVudC0+ZGlkUmVtb3ZlVG91
Y2hFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVUb3Vj
aEV2ZW50SGFuZGxlcigqdGhpcyk7CiAgICAgICAgIGRvY3VtZW50KCkuZGlkQWRkVG91Y2hFdmVu
dEhhbmRsZXIoKnRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZTRkZjM1Nzc1MTk2OGRm
YjE3ZmVhMmEyZTNmZTczNjNkNzUwNmQ5My4uZDMxMTJmNTc2Njk4ZDg4NmEwYjRlOWUxODg2Njc5
MTgxOTc5OGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02MjgsNyArNjI4LDcgQEAgcHJvdGVjdGVkOgog
ICAgIH07CiAgICAgTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JikgY29uc3QgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApp
bmRleCAyNjQ4OWQ3ZjdjNjQwZTc5YzA1ZGE0NmYzMWMzY2FkNWQ0M2NiNzU5Li40MTUzMzUzZmY5
OGY1MTY5NTllZjlhM2MzNTI2Zjc3OGZhMWQyMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCkBAIC0yMDIsMjQgKzIwMiwyMyBAQCBwdWJsaWM6CiAgICAgICAgIGludmFsaWRhdGVDYWNo
ZXMoKTsKICAgICB9CiAKLSAgICB2b2lkIGFkb3B0RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3Vt
ZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpCisgICAgdm9pZCBhZG9wdERvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG9sZERvY3VtZW50KTsKLSAgICAgICAgaWYgKG9sZERvY3VtZW50ID09IG5ld0RvY3Vt
ZW50KSB7CisgICAgICAgIGlmICgmb2xkRG9jdW1lbnQgPT0gJm5ld0RvY3VtZW50KSB7CiAgICAg
ICAgICAgICBpbnZhbGlkYXRlQ2FjaGVzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9hdG9taWNOYW1lQ2FjaGVzLnZhbHVl
cygpKQotICAgICAgICAgICAgY2FjaGUtPmludmFsaWRhdGVDYWNoZSgqb2xkRG9jdW1lbnQpOwor
ICAgICAgICAgICAgY2FjaGUtPmludmFsaWRhdGVDYWNoZShvbGREb2N1bWVudCk7CiAKICAgICAg
ICAgZm9yIChhdXRvJiBsaXN0IDogbV90YWdDb2xsZWN0aW9uTlNDYWNoZS52YWx1ZXMoKSkgewog
ICAgICAgICAgICAgQVNTRVJUKCFsaXN0LT5pc1Jvb3RlZEF0RG9jdW1lbnQoKSk7Ci0gICAgICAg
ICAgICBsaXN0LT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKKyAgICAgICAgICAgIGxp
c3QtPmludmFsaWRhdGVDYWNoZShvbGREb2N1bWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBm
b3IgKGF1dG8mIGNvbGxlY3Rpb24gOiBtX2NhY2hlZENvbGxlY3Rpb25zLnZhbHVlcygpKQotICAg
ICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1bWVudCk7CisgICAg
ICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUob2xkRG9jdW1lbnQpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggYThjMTY4Y2M5MmRhNTVk
YTc1MzJjOWUzYmNjMTQ3YTQ2YWJlMTA1Zi4uYzcxMzg0NDQwOGQyZjZjYjQwNzg1MGY3YmYwZjJk
MDk2Yjg5OGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShz
aGFkb3dSb290KQotICAgICwgbV9kb2N1bWVudFNjb3BlKCZkb2N1bWVudCkKKyAgICAsIG1fZG9j
dW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkK
ICAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewpAQCAtNjYsNyArNjYsNyBAQCBUcmVlU2NvcGU6OlRy
ZWVTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFRy
ZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUo
ZG9jdW1lbnQpCi0gICAgLCBtX2RvY3VtZW50U2NvcGUoJmRvY3VtZW50KQorICAgICwgbV9kb2N1
bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKICAg
ICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5PigpKQogewpAQCAtODQsMTUgKzg0LDEzIEBAIHZvaWQgVHJlZVNjb3Bl
OjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG51
bGxwdHI7CiB9CiAKLXZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3Bl
KiBuZXdQYXJlbnRTY29wZSkKK3ZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJl
ZVNjb3BlJiBuZXdQYXJlbnRTY29wZSkKIHsKICAgICAvLyBBIGRvY3VtZW50IG5vZGUgY2Fubm90
IGJlIHJlLXBhcmVudGVkLgogICAgIEFTU0VSVCghbV9yb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgp
KTsKLSAgICAvLyBFdmVyeSBzY29wZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50
IHNjb3BlLgotICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAKLSAgICBtX3BhcmVudFRyZWVT
Y29wZSA9IG5ld1BhcmVudFNjb3BlOwotICAgIHNldERvY3VtZW50U2NvcGUoJm5ld1BhcmVudFNj
b3BlLT5kb2N1bWVudFNjb3BlKCkpOworICAgIG1fcGFyZW50VHJlZVNjb3BlID0gJm5ld1BhcmVu
dFNjb3BlOworICAgIHNldERvY3VtZW50U2NvcGUobmV3UGFyZW50U2NvcGUuZG9jdW1lbnRTY29w
ZSgpKTsKIH0KIAogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKQEAgLTM0OCwxMSArMzQ2LDEwIEBAIEVsZW1lbnQq
IFRyZWVTY29wZTo6ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgVHJlZVNjb3BlOjphZG9wdElmTmVlZGVkKE5vZGUqIG5vZGUpCit2
b2lkIFRyZWVTY29wZTo6YWRvcHRJZk5lZWRlZChOb2RlJiBub2RlKQogewotICAgIEFTU0VSVChu
b2RlKTsKLSAgICBBU1NFUlQoIW5vZGUtPmlzRG9jdW1lbnROb2RlKCkpOwotICAgIEFTU0VSVCgh
bm9kZS0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBBU1NFUlQoIW5vZGUuaXNEb2N1bWVudE5v
ZGUoKSk7CisgICAgQVNTRVJUKCFub2RlLm1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgVHJlZVNj
b3BlQWRvcHRlciBhZG9wdGVyKG5vZGUsICp0aGlzKTsKICAgICBpZiAoYWRvcHRlci5uZWVkc1Nj
b3BlQ2hhbmdlKCkpCiAgICAgICAgIGFkb3B0ZXIuZXhlY3V0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5oCmluZGV4IGM5YjRlNzAyNGY3MDAyMjlmMzMwZmEyNmI2MTQ5NDBjOGY5ZmM4OTYuLjM1OTZk
MzJjOTQ0NGYwYjRhMmVmNGRiZDEwNzRmMTM3MTc3MzY0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVHJlZVNjb3BlIHsKIAogcHVibGljOgogICAgIFRy
ZWVTY29wZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2Nv
cGU7IH0KLSAgICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKyAgICB2b2lk
IHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUmKTsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRF
bGVtZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEVsZW1lbnQmKTsK
ICAgICB2b2lkIHJlbW92ZUVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEVs
ZW1lbnQmKTsKIAotICAgIERvY3VtZW50JiBkb2N1bWVudFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
Km1fZG9jdW1lbnRTY29wZTsgfQorICAgIERvY3VtZW50JiBkb2N1bWVudFNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudFNjb3BlLmdldCgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBk
b2N1bWVudFNjb3BlTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRyZWVT
Y29wZSwgbV9kb2N1bWVudFNjb3BlKTsgfQogCiAgICAgLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNyZXRhcmdldApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCog
ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gVXNlZCBieSB0aGUgYmFz
aWMgRE9NIG11dGF0aW9uIG1ldGhvZHMgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgotICAgIHZvaWQg
YWRvcHRJZk5lZWRlZChOb2RlKik7CisgICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUmKTsKIAog
ICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsg
fQogCkBAIC0xMDYsOSArMTA2LDggQEAgcHJvdGVjdGVkOgogICAgIH5UcmVlU2NvcGUoKTsKIAog
ICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKLSAgICB2b2lkIHNldERvY3VtZW50U2Nv
cGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIHZvaWQgc2V0RG9jdW1lbnRTY29wZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgewotICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgICAgICBt
X2RvY3VtZW50U2NvcGUgPSBkb2N1bWVudDsKICAgICB9CiAKQEAgLTExNiw3ICsxMTUsNyBAQCBw
cm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgQ29udGFpbmVyTm9kZSYgbV9yb290Tm9kZTsKLSAg
ICBEb2N1bWVudCogbV9kb2N1bWVudFNjb3BlOworICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
RG9jdW1lbnQ+IG1fZG9jdW1lbnRTY29wZTsKICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNj
b3BlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERvY3VtZW50T3JkZXJlZE1hcD4gbV9lbGVtZW50
c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggZjlmOTNj
ZjI5MjE1ODczNzEyNTZjNGVhN2E3Zjk5YWE1YTQwZWUyYS4uODMwN2FhY2YxODVkNTZjZWZmNDA2
MTk1NjU3OTcwZWNkYmZiMDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGSVhNRTog
RG8gd2UgZXZlciBjaGFuZ2UgdHJlZSBzY29wZXMgZXhjZXB0IGJldHdlZW4gZG9jdW1lbnRzPwot
dm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkgY29u
c3QKK3ZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3Qp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG5lZWRzU2NvcGVDaGFuZ2UoKSk7CiAKQEAgLTQ5LDExICs0
OSwxMSBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiBy
b290KSBjb25zdAogICAgICAgICBvbGREb2N1bWVudC5pbmNET01UcmVlVmVyc2lvbigpOwogICAg
IH0KIAotICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KCpub2RlLCByb290KSkgewotICAgICAgICB1cGRhdGVUcmVlU2NvcGUobm9kZSk7
CisgICAgZm9yIChOb2RlKiBub2RlID0gJnJvb3Q7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0KCpub2RlLCAmcm9vdCkpIHsKKyAgICAgICAgdXBkYXRlVHJlZVNjb3BlKCpub2RlKTsK
IAogICAgICAgICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50KQotICAgICAgICAgICAgbW92ZU5v
ZGVUb05ld0RvY3VtZW50KG5vZGUsICZvbGREb2N1bWVudCwgJm5ld0RvY3VtZW50KTsKKyAgICAg
ICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3Vt
ZW50KTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgewogICAgICAgICAg
ICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7CiAgICAgICAgICAg
ICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQpAQCAtNjUsMTMgKzY1LDEzIEBAIHZvaWQgVHJl
ZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAKICAg
ICAgICAgaWYgKG5vZGUtPmhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKCkpIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgYXR0ciA6IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5hdHRyTm9kZUxp
c3QoKSkKLSAgICAgICAgICAgICAgICBtb3ZlVHJlZVRvTmV3U2NvcGUoYXR0ci5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgbW92ZVRyZWVUb05ld1Njb3BlKCphdHRyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT5zaGFkb3dSb290KCkpIHsKLSAg
ICAgICAgICAgIHNoYWRvdy0+c2V0UGFyZW50VHJlZVNjb3BlKCZtX25ld1Njb3BlKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAg
c2hhZG93LT5zZXRQYXJlbnRUcmVlU2NvcGUobV9uZXdTY29wZSk7CiAgICAgICAgICAgICBpZiAo
d2lsbE1vdmVUb05ld0RvY3VtZW50KQotICAgICAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudChzaGFkb3csICZvbGREb2N1bWVudCwgJm5ld0RvY3VtZW50KTsKKyAgICAgICAg
ICAgICAgICBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoKnNoYWRvdywgb2xkRG9jdW1lbnQs
IG5ld0RvY3VtZW50KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzksMTIgKzc5LDEyIEBAIHZv
aWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0
CiAgICAgICAgIG9sZERvY3VtZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiB9
CiAKLXZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KFNo
YWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5l
d0RvY3VtZW50KSBjb25zdAordm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlU2hhZG93VHJlZVRv
TmV3RG9jdW1lbnQoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgRG9jdW1lbnQmIG9sZERvY3VtZW50
LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0g
c2hhZG93Um9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHNoYWRv
d1Jvb3QpKSB7Ci0gICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudChub2RlLCBvbGREb2N1bWVu
dCwgbmV3RG9jdW1lbnQpOwotICAgICAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+
c2hhZG93Um9vdCgpKQotICAgICAgICAgICAgbW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KHNo
YWRvdywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSAm
c2hhZG93Um9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZzaGFk
b3dSb290KSkgeworICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQoKm5vZGUsIG9sZERvY3Vt
ZW50LCBuZXdEb2N1bWVudCk7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3cgPSBub2RlLT5zaGFk
b3dSb290KCkpCisgICAgICAgICAgICBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoKnNoYWRv
dywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKICAgICB9CiB9CiAKQEAgLTkyLDQ2ICs5Miw0
NSBAQCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudChT
aGFkb3dSb290KiBzaGFkb3dSb290LCBEb2N1bQogc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3RG9j
dW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBEb2N1bWVudCogb2xkRG9jdW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBudWxscHRyOwogCi12b2lkIFRyZWVTY29w
ZUFkb3B0ZXI6OmVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50KiBv
bGREb2N1bWVudCkKK3ZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6ZW5zdXJlRGlkTW92ZVRvTmV3RG9j
dW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQogewogICAgIEFTU0VSVCghZGlk
TW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOwotICAgIEFTU0VSVF9VTlVTRUQob2xkRG9jdW1l
bnQsIG9sZERvY3VtZW50ID09IG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxs
ZWRXaXRoKTsKKyAgICBBU1NFUlRfVU5VU0VEKG9sZERvY3VtZW50LCAmb2xkRG9jdW1lbnQgPT0g
b2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGgpOwogICAgIGRpZE1v
dmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gdHJ1ZTsKIH0KICNlbmRpZgogCi1pbmxpbmUgdm9p
ZCBUcmVlU2NvcGVBZG9wdGVyOjp1cGRhdGVUcmVlU2NvcGUoTm9kZSogbm9kZSkgY29uc3QKK2lu
bGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6OnVwZGF0ZVRyZWVTY29wZShOb2RlJiBub2RlKSBj
b25zdAogewotICAgIEFTU0VSVCghbm9kZS0+aXNUcmVlU2NvcGUoKSk7Ci0gICAgQVNTRVJUKCZu
b2RlLT50cmVlU2NvcGUoKSA9PSAmbV9vbGRTY29wZSk7Ci0gICAgbm9kZS0+c2V0VHJlZVNjb3Bl
KG1fbmV3U2NvcGUpOworICAgIEFTU0VSVCghbm9kZS5pc1RyZWVTY29wZSgpKTsKKyAgICBBU1NF
UlQoJm5vZGUudHJlZVNjb3BlKCkgPT0gJm1fb2xkU2NvcGUpOworICAgIG5vZGUuc2V0VHJlZVNj
b3BlKG1fbmV3U2NvcGUpOwogfQogCi1pbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3Zl
Tm9kZVRvTmV3RG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1
bWVudCogbmV3RG9jdW1lbnQpIGNvbnN0CitpbmxpbmUgdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjpt
b3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9kZSYgbm9kZSwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBE
b2N1bWVudCYgbmV3RG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFub2RlLT5pbkRvY3Vt
ZW50KCkgfHwgb2xkRG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQpOworICAgIEFTU0VSVCghbm9kZS5p
bkRvY3VtZW50KCkgfHwgJm9sZERvY3VtZW50ICE9ICZuZXdEb2N1bWVudCk7CiAKLSAgICBuZXdE
b2N1bWVudC0+aW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKLSAgICBvbGREb2N1bWVu
dC0+ZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKKyAgICBuZXdEb2N1bWVudC5pbmNy
ZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpOworICAgIG9sZERvY3VtZW50LmRlY3JlbWVudFJl
ZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAKLSAgICBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgewot
ICAgICAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhID0gbm9kZS0+cmFyZURhdGEoKTsKLSAgICAg
ICAgaWYgKHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIHJhcmVEYXRhLT5ub2Rl
TGlzdHMoKS0+YWRvcHREb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgIGlm
IChub2RlLmhhc1JhcmVEYXRhKCkpIHsKKyAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9
IG5vZGUucmFyZURhdGEoKTsKKyAgICAgICAgaWYgKGF1dG8qIG5vZGVMaXN0cyA9IHJhcmVEYXRh
LT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIG5vZGVMaXN0cy0+YWRvcHREb2N1bWVudChvbGRE
b2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgIH0KIAotICAgIGlmIChvbGREb2N1bWVudCkKLSAg
ICAgICAgb2xkRG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBu
ZXdEb2N1bWVudCk7CisgICAgb2xkRG9jdW1lbnQubW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3Vt
ZW50KG5vZGUsIG5ld0RvY3VtZW50KTsKIAotICAgIGlmIChpczxTaGFkb3dSb290Pigqbm9kZSkp
Ci0gICAgICAgIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCpub2RlKS5zZXREb2N1bWVudFNjb3BlKG5l
d0RvY3VtZW50KTsKKyAgICBpZiAoaXM8U2hhZG93Um9vdD4obm9kZSkpCisgICAgICAgIGRvd25j
YXN0PFNoYWRvd1Jvb3Q+KG5vZGUpLnNldERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7
Ci0gICAgb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBvbGRE
b2N1bWVudDsKKyAgICBvbGREb2N1bWVudERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0
aCA9ICZvbGREb2N1bWVudDsKICNlbmRpZgogCi0gICAgbm9kZS0+ZGlkTW92ZVRvTmV3RG9jdW1l
bnQob2xkRG9jdW1lbnQpOworICAgIG5vZGUuZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOwogICAgIEFTU0VSVChkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCmluZGV4IGM3MWNkNGYxNmE1OGUwMjJmMjQ2
ZWE1MzkyZTI3NmY3ODM5MDlhMjguLjQwNWRhZmZmYzViNDVjYjk2OGEyYmYyMGEzYjhhNTUxM2Q4
NjFjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaApAQCAtMzMsMzIgKzMz
LDMyIEBAIGNsYXNzIFRyZWVTY29wZTsKIAogY2xhc3MgVHJlZVNjb3BlQWRvcHRlciB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgVHJlZVNjb3BlQWRvcHRlcihOb2RlKiB0b0Fkb3B0LCBUcmVlU2Nv
cGUmIG5ld1Njb3BlKTsKKyAgICBleHBsaWNpdCBUcmVlU2NvcGVBZG9wdGVyKE5vZGUmIHRvQWRv
cHQsIFRyZWVTY29wZSYgbmV3U2NvcGUpOwogCiAgICAgdm9pZCBleGVjdXRlKCkgY29uc3QgeyBt
b3ZlVHJlZVRvTmV3U2NvcGUobV90b0Fkb3B0KTsgfQogICAgIGJvb2wgbmVlZHNTY29wZUNoYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuICZtX29sZFNjb3BlICE9ICZtX25ld1Njb3BlOyB9CiAKICNpZmRl
ZiBOREVCVUcKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0Nh
bGxlZChEb2N1bWVudCopIHsgfQorICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0Rv
Y3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JikgeyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIGVu
c3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50Kik7CisgICAgc3RhdGlj
IHZvaWQgZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQmKTsKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlVHJlZVNjb3BlKE5vZGUqKSBjb25zdDsK
LSAgICB2b2lkIG1vdmVUcmVlVG9OZXdTY29wZShOb2RlKikgY29uc3Q7Ci0gICAgdm9pZCBtb3Zl
U2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCosIERvY3VtZW50KiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KSBjb25zdDsKLSAgICB2b2lkIG1vdmVOb2RlVG9OZXdE
b2N1bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVudCogbmV3RG9jdW1l
bnQpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlVHJlZVNjb3BlKE5vZGUmKSBjb25zdDsKKyAgICB2
b2lkIG1vdmVUcmVlVG9OZXdTY29wZShOb2RlJikgY29uc3Q7CisgICAgdm9pZCBtb3ZlU2hhZG93
VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9j
dW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdDsKKyAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVu
dChOb2RlJiwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGNv
bnN0OwogCi0gICAgTm9kZSogbV90b0Fkb3B0OworICAgIE5vZGUmIG1fdG9BZG9wdDsKICAgICBU
cmVlU2NvcGUmIG1fbmV3U2NvcGU7CiAgICAgVHJlZVNjb3BlJiBtX29sZFNjb3BlOwogfTsKIAot
aW5saW5lIFRyZWVTY29wZUFkb3B0ZXI6OlRyZWVTY29wZUFkb3B0ZXIoTm9kZSogdG9BZG9wdCwg
VHJlZVNjb3BlJiBuZXdTY29wZSkKK2lubGluZSBUcmVlU2NvcGVBZG9wdGVyOjpUcmVlU2NvcGVB
ZG9wdGVyKE5vZGUmIHRvQWRvcHQsIFRyZWVTY29wZSYgbmV3U2NvcGUpCiAgICAgOiBtX3RvQWRv
cHQodG9BZG9wdCkKICAgICAsIG1fbmV3U2NvcGUobmV3U2NvcGUpCi0gICAgLCBtX29sZFNjb3Bl
KHRvQWRvcHQtPnRyZWVTY29wZSgpKQorICAgICwgbV9vbGRTY29wZSh0b0Fkb3B0LnRyZWVTY29w
ZSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAKaW5kZXggNTA1NGVmZmQ0OTE2M2NkODhkMWYwODk3MDcwZDJhZTE4NTQzYTRjYi4uMDIz
Yjc0NDU5ZjY1MDYxN2EyOGE0MjdhNTMxOWFhNGYyMjMzZDkwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtNjAsMTAgKzYwLDEwIEBAIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6fkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpCiAgICAgc2V0Rm9y
bShudWxscHRyKTsKIH0KIAotdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYpCiB7CiAgICAgSFRNTEVsZW1lbnQm
IGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0gICAgaWYgKG9sZERvY3VtZW50ICYmIGVsZW1l
bnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikpCisgICAgaWYg
KGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikpCiAg
ICAgICAgIHJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IGJlZjI4ZjM2YWY5NDdj
NjIyMzcwZjkyMDU4MGJlYTJlYzVhZjdlMDIuLjY2MDAxNTA0ZTI5MDg4YmQyMDMyODUzMTA0YjA1
Y2JmODU2MWQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaApAQCAtOTIsNyArOTIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJik7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJik7
Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpOwor
ICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KTsKIAog
ICAgIHZvaWQgc2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqKTsKICAgICB2b2lkIGZvcm1BdHRyaWJ1
dGVDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cAppbmRleCA2NDJlY2JlZjYwMDM4NDA2MzdlZTMwZjZjOTE3MjVmMGYxNzczNmUwLi5hNzlhZDE1
YmE4Y2I4YjFkYmMwYmZhYzU0NGM4MWE5NTM1OGYzYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTEyMiwxMiArMTIyLDExIEBAIHZvaWQgSFRN
TEZpZWxkU2V0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgICAgIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3Rh
dGVVbmRlcigqbGVnZW5kLCB0cnVlKTsKIH0KIAotdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxGaWVs
ZFNldEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkK
IHsKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGRE
b2N1bWVudCk7CiAgICAgaWYgKG1faGFzRGlzYWJsZWRBdHRyaWJ1dGUpIHsKLSAgICAgICAgaWYg
KG9sZERvY3VtZW50KQotICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnJlbW92ZURpc2FibGVkRmll
bGRzZXRFbGVtZW50KCk7CisgICAgICAgIG9sZERvY3VtZW50LnJlbW92ZURpc2FibGVkRmllbGRz
ZXRFbGVtZW50KCk7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkRGlzYWJsZWRGaWVsZHNldEVsZW1l
bnQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5o
CmluZGV4IDQzNWFiMGZiMDcxODc3ZTNmY2ZmY2RkZWI1MWVkNGE5ZjcwNmEyYzQuLjQ0MWEyMThi
NDQ4NmRiMDhhN2RiYTcyNDBmYTdlNGYyMWJmY2E4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVkU3Rh
dGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQpIGZpbmFsOwogCiAgICAgYm9vbCBtYXRjaGVzVmFsaWRQc2V1ZG9DbGFz
cygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbWF0Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggYTU5MjE5YjUxMjM5NjU1YTAxODU3MmM5Zjc0OGExMDJmMzZmYjU3Ni4uODQ1
MTZjYjYyNDRjMzNiMWY3MDVlMDZkZTI4MjJhZWExMWU1MWJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIH0K
IH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKIHsKICAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKICAgICBIVE1M
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBkMGZmODRkM2FlMGQyYTYx
NDlhOGU1YzEwNWMzMzUwNzRlNGFhMWU0Li40ZmY0ODk0ZjM1ZmU2MWQyZWRmMGMwODU1ZTkyMjQ0
YWNkYzVjNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKEtleWJvYXJkRXZlbnQmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA3ZGNlYjJiODVmOWJiMDY4OWEyOGFlNjQ4ZjBmYWI3
MDczZjFkOGI5Li4xNGJkZWY3NWI2OWY3M2QzZjA3MjkyZTRmZTJmN2Y0M2JiNGM4NjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC04NDMsMTEgKzg0MywxMCBA
QCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpCiAg
ICAgfQogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKIHsKICAgICBpZiAoIXNob3VsZEF1dG9jb21w
bGV0ZSgpKSB7Ci0gICAgICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgICAgIG9sZERvY3Vt
ZW50LT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICBvbGREb2N1bWVudC51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tz
KHRoaXMpOwogICAgICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9u
Q2FsbGJhY2tzKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgKaW5kZXggNzliMDU4N2Y0OWIzNGUyMzViYWQ1ODliYzQxYThlMDU3MjIwMmNiZi4uZTY2MDFh
YWI3MTMzMDljMDMyNjllZGNkMmZkOTZlNTdkMDdiYTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpIGZpbmFsOwogCi0gICAgdm9pZCBkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIGZpbmFsOworICAgIHZvaWQgZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKIAogICAgIHZv
aWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGJk
YjVhMzY3ZjVlY2Q2NzdlMmMzNmYwNjYxZWExZWMwMmQyZDJmNmQuLjdiNmY2Zjk4ZDIwZWI3NmRj
MTZlNGNlMTI4NGJlZWY0M2QxNDI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcApAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiAg
ICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpKSk7CiB9CiAKLXZvaWQgSFRNTElt
YWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQor
dm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQpCiB7CiAgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1l
bnQoKTsKICAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCBjNjM1NWE0MGFkNjQ3
ZTY3MDZmYzc5M2VlYTdjNDM2ZDM1YjNhZGRiLi4xNDkyYTQzZTY2NzI2Y2RjY2VlM2JkYzhmNGY5
YmJmY2Y0OGQxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAt
OTcsNyArOTcsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAK
LSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1l
bnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggN2ExMGY3ZGJkMTYyNjgzNmNkNjJi
ZmMyZGQzZjU1MDQ4MzQxOWFmYS4uOGM3OTRkZjA1ZmI1MGJlZGFlMmU0Yjg4MzNiMGJhMDE0Y2Nl
Y2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTMx
LDIzICsxNTMxLDIxIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCit2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkKIHsKICAgICBpZiAoaW1hZ2VMb2FkZXIoKSkKICAgICAgICAgaW1hZ2VMb2FkZXIoKS0+ZWxl
bWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CiAKICAgICBib29sIG5lZWRzU3VzcGVuc2lvbkNh
bGxiYWNrID0gdGhpcy0+bmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2soKTsKLSAgICBpZiAob2xkRG9j
dW1lbnQpIHsKLSAgICAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNr
cyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlr
ZSB0byBiZSByZWdpc3RlcmVkCi0gICAgICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaykK
LSAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9u
Q2FsbGJhY2tzKHRoaXMpOwotICAgICAgICBpZiAoaXNSYWRpb0J1dHRvbigpKQotICAgICAgICAg
ICAgb2xkRG9jdW1lbnQtPmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1v
dmVCdXR0b24odGhpcyk7CisgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxi
YWNrcyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2Ug
bGlrZSB0byBiZSByZWdpc3RlcmVkCisgICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKQor
ICAgICAgICBvbGREb2N1bWVudC51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJh
Y2tzKHRoaXMpOworICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCisgICAgICAgIG9sZERvY3VtZW50
LmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1vdmVCdXR0b24odGhpcyk7
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAgICAgaWYgKG1faGFzVG91Y2hFdmVudEhh
bmRsZXIpCi0gICAgICAgICAgICBvbGREb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRUYXJnZXROb2Rl
KCp0aGlzKTsKKyAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikKKyAgICAgICAgb2xkRG9j
dW1lbnQuZGlkUmVtb3ZlRXZlbnRUYXJnZXROb2RlKCp0aGlzKTsKICNlbmRpZgotICAgIH0KIAog
ICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaykKICAgICAgICAgZG9jdW1lbnQoKS5yZWdp
c3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggOTdlNDAyYTZiZTZkNGJlOThmYWFlM2U3ZDBjMWIz
ODAyMGQ4NGNmNy4uNjQwNThjOGMzZjk1NTAxYTU1NTJiODhmOTZmNDM3OWVjZDBlOTJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTMzNyw3ICszMzcsNyBAQCBw
cml2YXRlOgogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAg
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBmaW5hbDsK
KyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgZmlu
YWw7CiAKICAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCYpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjZiMjhiZDYyNmJjZjYy
NzBiNjQzNDFjMjM1MTVkNjRmNzBmNDY1Mi4uNzgxOGZkNWM2MmVmZjlmZWUyNTQ2MzJmZGNlM2I4
YjI2Y2Y2YjY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC02NjQsMTYgKzY2NCwxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRo
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1l
bnRNYXAoKnRoaXMsIGRvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKIHsKICAg
ICBpZiAobV9zaG91bGREZWxheUxvYWRFdmVudCkgewotICAgICAgICBpZiAob2xkRG9jdW1lbnQp
Ci0gICAgICAgICAgICBvbGREb2N1bWVudC0+ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgp
OworICAgICAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiAg
ICAgICAgIGRvY3VtZW50KCkuaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0K
IAotICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVudCgq
b2xkRG9jdW1lbnQpOworICAgIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQob2xkRG9jdW1lbnQpOwog
CiAgICAgcmVnaXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNThmMWEzYTllM2YwMjRiZDEzMGNhNzdhYzNhNmQ2
NTE5YzJiNDkxNi4uYzJjYjJlODBmZTk3ZDYxMmEzOGRlYTdlNzFmNDRjMWQ0OTNmZTQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ5NSw3ICs0OTUsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAg
ICBlbnVtIERpc3BsYXlNb2RlIHsgVW5rbm93biwgTm9uZSwgUG9zdGVyLCBQb3N0ZXJXYWl0aW5n
Rm9yVmlkZW8sIFZpZGVvIH07CiAgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IDY5MmMxMzQ1MGVkYjlmYTllYTk2MzFjM2NlNTUzZTk1NzJkZmQ1MTEu
LmJkZTZhZTIzNWZkMmQ0NDc5ZGFmYjY4OTQwZjcxOWIwMmMzNDhjZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mIHVybHMpIGNvbnMKICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTCh1c2VNYXApKTsKIH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQordm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQog
ewogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOwogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KG9sZERvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAppbmRl
eCAwMGRjYTAzY2MxNDc4MTg2ZDA3OTJlOGJhYzFlYWQzZjNiMTg0NmI4Li5lM2M1NWU0ZjA1NTFl
NmM2ZjU5ZGY0Nzc1NzhmZjk2ODIyZGFmZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hl
ZEluc2VydGluZ1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQq
IG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCkgZmluYWw7CiAKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQaWN0dXJlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJl
RWxlbWVudC5jcHAKaW5kZXggNzAyNDQxOGY0MjVkOTQwMDdkMGU2OWY2Yjc0NmM3YjlhMWU4MWJj
My4uNmVjZmFhYzg1NmE3NTk0Y2NlNzlkNDFmYTQ3N2IxYzMyNmZhODQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcApAQCAtNDIsMTAgKzQyLDkgQEAgSFRN
TFBpY3R1cmVFbGVtZW50Ojp+SFRNTFBpY3R1cmVFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLnJl
bW92ZVZpZXdwb3J0RGVwZW5kZW50UGljdHVyZSgqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFBpY3R1
cmVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCit2
b2lkIEhUTUxQaWN0dXJlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50KQogewotICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgb2xkRG9jdW1lbnQt
PnJlbW92ZVZpZXdwb3J0RGVwZW5kZW50UGljdHVyZSgqdGhpcyk7CisgICAgb2xkRG9jdW1lbnQu
cmVtb3ZlVmlld3BvcnREZXBlbmRlbnRQaWN0dXJlKCp0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAgIHNvdXJjZXNDaGFuZ2VkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAppbmRleCBmYjUxMzZm
N2M3YzNjNDlkMTM4MzVhMGE2N2E2YTZjNDVlMDQ4MDFiLi4wN2FlYmNjZTk2NmU5Y2I3MGIzYTY2
MGQyNTg5NDEwNzVmOWU5OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
aWN0dXJlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVt
ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MUGljdHVy
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2b2lkIGRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgZmluYWw7CisgICAgdm9p
ZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIGZpbmFsOwogCiAg
ICAgV2Vha1B0ckZhY3Rvcnk8SFRNTFBpY3R1cmVFbGVtZW50PiBtX3dlYWtGYWN0b3J5IHsgdGhp
cyB9OwogICAgIFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0PiBtX3ZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyeVJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAppbmRleCAzNTIzNTA5YmQyYzYwN2NlNWEzOTY3ZDE3ODc4NGY5NDBmOTI2ZGJl
Li42YTJmODM1NmY2OTYxMjk3NzZiMDcwMGQ2N2JjM2EwNzY5Y2Q1ZmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTMwOSwxMCArMzA5
LDEwIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG9sZERvY3VtZW50KQogewogICAgIGlmIChtX25lZWRzRG9jdW1lbnRBY3RpdmF0
aW9uQ2FsbGJhY2tzKSB7Ci0gICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9yRG9jdW1l
bnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBvbGREb2N1bWVudC51bnJlZ2lz
dGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgICAgICBkb2N1bWVu
dCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCBl
YTBkMDZlYmJmMjUwMzk2ZWRkMDUzM2QzMzNkMjg0ZTdkYzg0MGY5Li5mYjI5Yjg3YjEwMjliNTM3
YTllYWUxNjQxYjI5M2M1NTZkMGFkNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKIAogICAgIGJvb2wgaXNJbWFnZVR5cGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCmluZGV4IDU4MWFhMzMzZWMw
YjdiYzRkOGZjOWRjNmNiZTI5ZGJjMmZkODlhZDQuLjMxZTg1NWUyN2RjNjA1NjAzYzgxN2VjNTE1
OTJjMzljYjE5YWZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBs
YXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVt
ZW50LmNwcApAQCAtODIsMTIgKzgyLDEyIEBAIFJlZjxOb2RlPiBIVE1MVGVtcGxhdGVFbGVtZW50
OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pCiAgICAg
cmV0dXJuIGNsb25lLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXZvaWQgSFRNTFRlbXBsYXRlRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQordm9pZCBI
VE1MVGVtcGxhdGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3Vt
ZW50KTsKICAgICBpZiAoIW1fY29udGVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50
KCkuZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpLmFkb3B0SWZOZWVkZWQobV9jb250ZW50LmdldCgp
KTsKKyAgICBkb2N1bWVudCgpLmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKS5hZG9wdElmTmVlZGVk
KCptX2NvbnRlbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCmluZGV4IGU1MzYzZTNmY2M5M2Y3NTlkYzQwNjIz
YjNlNjU4NzI4ZjA5NDk5ZjEuLjE1MmRmNDQ4Mzc5NTZkNzI1YWQ3ZmIzZDU4MTY4NGIyOTdkNDk2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCkBAIC00OCw3
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRlbXBsYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgZmluYWw7CiAKICAgICBtdXRhYmxl
IFJlZlB0cjxUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50PiBtX2NvbnRlbnQ7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggZGQzNDFiNjJhMDJh
N2I4NzU3OTBkZWZiNTM3YzkzNmZlMDUzZTcxMS4uZDhhNzkzZTMwZWJmMWJjMzNiMWEzMmEyZjJj
ZDFjZjdiOTE4OWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRXZWJraXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogfQogI2VuZGlmCiAKLXZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpCiB7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgIG1f
aW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA1MGU3ODI0NWEwOTE3MDlkNjcwOGVjYjBiNGJm
ZTU5MzI0ZWFkZjRiLi5jMTJiNWE1YTBmZGEwZTk3NDA0NTQxM2M0MzBjNThiNjg3ZjA1ZjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTA3LDcgKzEwNyw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKICAg
ICB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgZmluYWw7CiAgICAgdm9pZCBzZXRE
aXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW87IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwCmluZGV4IGViZjNkZjFmZTFhNDA4OTczZTljMWU1NTQ0OWVlMzkxODIxNzA4YmYuLmRkYzg0
MDJhY2Q5NDg0ODU1ZjIxM2JjZjNiNmZiYTM0MzJiZDg0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKTsKLSAgICB2b2lkIGRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAg
SW1hZ2VEb2N1bWVudCogbV9pbWFnZURvY3VtZW50OwogfTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBJ
bWFnZURvY3VtZW50RWxlbWVudDo6fkltYWdlRG9jdW1lbnRFbGVtZW50KCkKICAgICAgICAgbV9p
bWFnZURvY3VtZW50LT5kaXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VE
b2N1bWVudEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVu
dCkKK3ZvaWQgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZURvY3VtZW50KSB7CiAgICAgICAg
IG1faW1hZ2VEb2N1bWVudC0+ZGlzY29ubmVjdEltYWdlRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlN2FkZDM2Njc2YjIxNjM0ODU4ZWRmZDJiN2Rl
NWU1ZjQ4NzdiZjVmLi5kY2M4YzY4NzhhZjM2ZjRiY2U5N2Y3YjMwYTllNGM5YzFjYTEzYzdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBA
IHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYgdXJscykgY29uc3QKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSkpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQordm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKIHsK
ICAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwogICAgIFNW
R0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCmluZGV4IDZmZjIyZWE0OThiMzNhYWE1YjQ2MjFj
NjRlOWUyZmNhMDY0MTE3ZDIuLjY4M2RiNGE4OWU3YTY1YWQ3NWExNWMyZDhjZDNmZjIwNDMwNDAw
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpIGZpbmFsOwog
CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3Vt
ZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCkgZmluYWw7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHSW1hZ2VFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGY4YTQ3YzM5MTliYmY2MmRjOTQw
NGY1NWI0OTZlNjI1MTQ3YWFkZGEuLmJiOTY2ZDYxYTczM2FiOTg2MjM4ODQwNzRlZGI5YjI0MmU5
ZGUwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTk4LDEwICs5OCw5
IEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNW
R1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
K3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERv
Y3VtZW50KQogewotICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CisgICAgb2xkRG9j
dW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKICAg
ICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMp
OwogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggNTQ5ZTNiZmMyNDQzYThk
ZDQ0M2Y5NjYzYzg0N2JjMDIyYjlmMWQyZi4uZWY1NGYxMmMzMTgxYjdmMDllNzg1OWUxZDRkNWM3
Mzg2ZWYzMTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMzgsNyArMTM4
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5TVkdTVkdFbGVtZW50KCk7CiAKICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJy
aWRlOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>