<?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>178605</bug_id>
          
          <creation_ts>2017-10-20 16:06:38 -0700</creation_ts>
          <short_desc>Rename insertedInto and removedFrom to insertedIntoAncestor and removedFromAncestor</short_desc>
          <delta_ts>2017-11-15 13:00:51 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362894</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-20 16:06:38 -0700</bug_when>
    <thetext>insertedInto and removedFrom don&apos;t make it clear that it could be called even when its immediate parent didn&apos;t change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362907</commentid>
    <comment_count>1</comment_count>
      <attachid>324464</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-20 16:29:14 -0700</bug_when>
    <thetext>Created attachment 324464
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362947</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-20 17:49:23 -0700</bug_when>
    <thetext>Committed r223802: &lt;https://trac.webkit.org/changeset/223802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372307</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:00:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324464</attachid>
            <date>2017-10-20 16:29:14 -0700</date>
            <delta_ts>2017-10-20 16:32:37 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-178605-20171020162913.patch</filename>
            <type>text/plain</type>
            <size>119961</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzc5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OCBAQAorMjAxNy0xMC0yMCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgaW5zZXJ0ZWRJbnRv
IGFuZCByZW1vdmVkRnJvbSB0byBpbnNlcnRlZEludG9BbmNlc3RvciBhbmQgcmVtb3ZlZEZyb21B
bmNlc3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc4NjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lZCBpbnNlcnRlZEludG8gYW5kIHJlbW92ZWRGcm9tIHRvIGluc2VydGVkSW50b0FuY2Vz
dG9yIGFuZCByZW1vdmVkRnJvbUFuY2VzdG9yIHJlc3BlY3RpdmVseQorICAgICAgICB0byBtYWtl
IGl0IGNsZWFyIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgZXZlbiB3aGVuIG5v
ZGUncyBpbW1lZGlhdGUgcGFyZW50IGRpZG4ndCBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Tm9kZUlu
c2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeU5vZGVJbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCk6CisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZy
b20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21B
bmNlc3Rvcik6IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlu
c2VydGVkSW50b0FuY2VzdG9yKTogCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkRnJv
bUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRGcm9tKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjppbnNl
cnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChX
ZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5h
bWVkIGZyb20gcmVtb3ZlZEZyb20uCisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvciBjb25zdCk6IFJlbmFtZWQgZnJvbSBp
bnNlcnRlZEludG8uCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5z
ZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb21BbmNl
c3Rvcik6IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBkb20vU2hhZG93Um9v
dC5oOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBS
ZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0
ZWRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9t
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MQmFzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5h
bWVkIGZyb20gcmVtb3ZlZEZyb20uCisgICAgICAgICogaHRtbC9IVE1MQmFzZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQm9keUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2Vy
dGVkSW50by4KKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNl
cnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1v
dmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBp
bnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRv
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9y
KTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBS
ZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBS
ZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4K
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFt
ZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5z
ZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTog
UmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAg
ICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1hcEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNYXBFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92
ZWRGcm9tLgorICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJl
bmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGlu
c2VydGVkSW50by4KKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAqIGh0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJl
bmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBm
cm9tIGluc2VydGVkSW50by4KKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5z
ZXJ0ZWRJbnRvLgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxTbG90RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2xvdEVs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6
IFJlbmFtZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBm
cm9tIGluc2VydGVkSW50by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAq
IGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSByZW1v
dmVkRnJvbS4KKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQg
ZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQg
ZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAq
IGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9B
bmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1lZCBmcm9tIHJlbW92
ZWRGcm9tLgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZWRG
cm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZyb20uCisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRl
ZEludG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0
aHNJbmZvcm1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9y
KTogUmVuYW1lZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFt
ZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZyb20uCisgICAg
ICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFj
ZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAg
ICAgICogc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRl
ZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgICogc3Zn
L1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6
IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVs
ZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZyb20uCisg
ICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3Zl
ZEZyb20uCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gaW5zZXJ0ZWRJbnRvLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBy
ZW1vdmVkRnJvbS4KKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1l
bnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4KKyAg
ICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50OjppbnNlcnRlZElu
dG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3Jl
OjpTVkdTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVt
b3ZlZEZyb20uCisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6
YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogUmVuYW1l
ZCBmcm9tIHJlbW92ZWRGcm9tLgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dFBhdGhFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNl
cnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnJlbW92ZWRG
cm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZyb20uCisgICAgICAgICogc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6
IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdUaXRsZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZyb20uCisg
ICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKTogUmVuYW1lZCBmcm9tIGluc2VydGVkSW50by4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBSZW5hbWVkIGZyb20gcmVtb3ZlZEZy
b20uCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IFJlbmFtZWQgZnJvbSBpbnNlcnRlZEludG8uCisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6IFJlbmFt
ZWQgZnJvbSByZW1vdmVkRnJvbS4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50Lmg6CisKIDIwMTctMTAtMjAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAJKHJldmlzaW9u
IDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZQogewogICAgIEFTU0VSVChwYXJlbnRPZkluc2VydGVkVHJlZS5p
c0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQoIW5vZGUuaXNDb25uZWN0ZWQoKSk7Ci0gICAgaWYg
KG5vZGUuaW5zZXJ0ZWRJbnRvKE5vZGU6Okluc2VydGlvblR5cGUgeyAvKiBjb25uZWN0ZWRUb0Rv
Y3VtZW50ICovIHRydWUsIHRyZWVTY29wZUNoYW5nZSA9PSBUcmVlU2NvcGVDaGFuZ2U6OkNoYW5n
ZWQgfSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpID09IE5vZGU6Okluc2VydGVkSW50b1Jlc3VsdDo6
TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2spCisgICAgaWYgKG5vZGUuaW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoTm9kZTo6SW5zZXJ0aW9uVHlwZSB7IC8qIGNvbm5lY3RlZFRvRG9jdW1lbnQgKi8gdHJ1
ZSwgdHJlZVNjb3BlQ2hhbmdlID09IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCB9LCBwYXJlbnRP
Zkluc2VydGVkVHJlZSkgPT0gTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRz
UG9zdEluc2VydGlvbkNhbGxiYWNrKQogICAgICAgICBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9u
VGFyZ2V0cy5hcHBlbmQobm9kZSk7CiAKICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KG5vZGUp
KQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJl
ZShDCiAgICAgQVNTRVJUKCFwYXJlbnRPZkluc2VydGVkVHJlZS5pc0Nvbm5lY3RlZCgpKTsKICAg
ICBBU1NFUlQoIW5vZGUuaXNDb25uZWN0ZWQoKSk7CiAKLSAgICBpZiAobm9kZS5pbnNlcnRlZElu
dG8oTm9kZTo6SW5zZXJ0aW9uVHlwZSB7IC8qIGNvbm5lY3RlZFRvRG9jdW1lbnQgKi8gZmFsc2Us
IHRyZWVTY29wZUNoYW5nZSA9PSBUcmVlU2NvcGVDaGFuZ2U6OkNoYW5nZWQgfSwgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUpID09IE5vZGU6Okluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0
aW9uQ2FsbGJhY2spCisgICAgaWYgKG5vZGUuaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoTm9kZTo6SW5z
ZXJ0aW9uVHlwZSB7IC8qIGNvbm5lY3RlZFRvRG9jdW1lbnQgKi8gZmFsc2UsIHRyZWVTY29wZUNo
YW5nZSA9PSBUcmVlU2NvcGVDaGFuZ2U6OkNoYW5nZWQgfSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUp
ID09IE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25D
YWxsYmFjaykKICAgICAgICAgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuYXBwZW5k
KG5vZGUpOwogCiAgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihub2RlKSkKQEAgLTEwMywxOCAr
MTAzLDE4IEBAIE5vZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGEKICAgICBy
ZXR1cm4gcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CiB9CiAKLXN0YXRpYyB2b2lk
IG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVt
b3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCitz
dGF0aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlJiBv
bGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2UgdHJlZVNjb3BlQ2hhbmdlLCBO
b2RlJiBub2RlKQogewotICAgIEFTU0VSVChwYXJlbnRPZlJlbW92ZWRUcmVlLmlzQ29ubmVjdGVk
KCkpOworICAgIEFTU0VSVChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmlzQ29ubmVjdGVkKCkpOwog
ICAgIEFTU0VSVChub2RlLmlzQ29ubmVjdGVkKCkpOwotICAgIG5vZGUucmVtb3ZlZEZyb20oTm9k
ZTo6UmVtb3ZhbFR5cGUgeyAvKiBkaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQgKi8gdHJ1ZSwgdHJl
ZVNjb3BlQ2hhbmdlID09IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCB9LCBwYXJlbnRPZlJlbW92
ZWRUcmVlKTsKKyAgICBub2RlLnJlbW92ZWRGcm9tQW5jZXN0b3IoTm9kZTo6UmVtb3ZhbFR5cGUg
eyAvKiBkaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQgKi8gdHJ1ZSwgdHJlZVNjb3BlQ2hhbmdlID09
IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCB9LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAog
ICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9kZSku
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlLmlzQ29u
bmVjdGVkKCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSAmbm9kZSk7Ci0gICAgICAgIG5vdGlm
eU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KHBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNo
YW5nZSwgKmNoaWxkLmdldCgpKTsKKyAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQuZ2V0KCkp
OwogICAgIH0KIAogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBAIC0xMjIsMzkgKzEyMiwz
OSBAQCBzdGF0aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVuCiAKICAgICBpZiAo
UmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dS
b290KCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tighbm9kZS5pc0Nvbm5lY3RlZCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSk7Ci0gICAgICAg
IG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KHBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVT
Y29wZUNoYW5nZTo6RGlkTm90Q2hhbmdlLCAqcm9vdC5nZXQoKSk7CisgICAgICAgIG5vdGlmeU5v
ZGVSZW1vdmVkRnJvbURvY3VtZW50KG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNo
YW5nZTo6RGlkTm90Q2hhbmdlLCAqcm9vdC5nZXQoKSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9p
ZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3Zl
ZFRyZWUsIFRyZWVTY29wZUNoYW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCitzdGF0
aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUmIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5v
ZGUpCiB7Ci0gICAgQVNTRVJUKCFwYXJlbnRPZlJlbW92ZWRUcmVlLmlzQ29ubmVjdGVkKCkpOwor
ICAgIEFTU0VSVCghb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5pc0Nvbm5lY3RlZCgpKTsKIAotICAg
IG5vZGUucmVtb3ZlZEZyb20oTm9kZTo6UmVtb3ZhbFR5cGUgeyAvKiBkaXNjb25uZWN0ZWRGcm9t
RG9jdW1lbnQgKi8gZmFsc2UsIHRyZWVTY29wZUNoYW5nZSA9PSBUcmVlU2NvcGVDaGFuZ2U6OkNo
YW5nZWQgfSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgbm9kZS5yZW1vdmVkRnJvbUFuY2Vz
dG9yKE5vZGU6OlJlbW92YWxUeXBlIHsgLyogZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICovIGZh
bHNlLCB0cmVlU2NvcGVDaGFuZ2UgPT0gVHJlZVNjb3BlQ2hhbmdlOjpDaGFuZ2VkIH0sIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUpOwogCiAgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihub2RlKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBkb3duY2Fz
dDxDb250YWluZXJOb2RlPihub2RlKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHBhcmVu
dE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwgKmNoaWxkKTsKKyAgICAgICAgbm90aWZ5
Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFu
Z2UsICpjaGlsZCk7CiAKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3duY2FzdDxFbGVtZW50
Pihub2RlKS5zaGFkb3dSb290KCkpCi0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUo
cGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2UsICpyb290
KTsKKyAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlLCBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZSwgKnJvb3QpOwogfQogCi12b2lkIG5v
dGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSwg
Tm9kZSYgY2hpbGQpCit2b2lkIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9kZSYgY2hpbGQpCiB7CiAgICAgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKIAogICAgIC8vIFRyZWUgc2NvcGUg
aGFzIGNoYW5nZWQgaWYgdGhlIGNvbnRhaW5lciBub2RlIGZyb20gd2hpY2ggIm5vZGUiIGlzIHJl
bW92ZWQgaXMgaW4gYSBkb2N1bWVudCBvciBhIHNoYWRvdyByb290LgotICAgIGF1dG8gdHJlZVNj
b3BlQ2hhbmdlID0gcGFyZW50T2ZSZW1vdmVkVHJlZS5pc0luVHJlZVNjb3BlKCkgPyBUcmVlU2Nv
cGVDaGFuZ2U6OkNoYW5nZWQgOiBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZTsKKyAgICBh
dXRvIHRyZWVTY29wZUNoYW5nZSA9IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuaXNJblRyZWVTY29w
ZSgpID8gVHJlZVNjb3BlQ2hhbmdlOjpDaGFuZ2VkIDogVHJlZVNjb3BlQ2hhbmdlOjpEaWROb3RD
aGFuZ2U7CiAgICAgaWYgKGNoaWxkLmlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KHBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwg
Y2hpbGQpOworICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKICAgICBlbHNlCi0gICAgICAg
IG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUocGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3Bl
Q2hhbmdlLCBjaGlsZCk7CisgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCBjaGlsZCk7CiB9CiAKIHZvaWQgYWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSomIHRhaWwsIENvbnRh
aW5lck5vZGUmIGNvbnRhaW5lcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOb2RlVmVjdG9yIG5vdGlmeUNoaWxkTm9kZUlu
c2VydGVkKENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlLCBOb2RlJik7Ci12b2lk
IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJl
ZSwgTm9kZSYpOwordm9pZCBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUsIE5vZGUmKTsKIHZvaWQgcmVtb3ZlRGV0YWNoZWRDaGlsZHJl
bkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUmKTsKIAogZW51bSBTdWJmcmFtZURpc2Nvbm5lY3RQ
b2xpY3kgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjI5LDkg
KzE2MjksOSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlCiAgICAg
cmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQogCi1Ob2RlOjpJbnNlcnRlZEludG9SZXN1bHQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2Vy
dGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRy
ZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBFbGVtZW50OjppbnNlcnRlZElu
dG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBh
cmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIENvbnRhaW5lck5vZGU6Omluc2VydGVkSW50byhp
bnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgQ29udGFpbmVyTm9kZTo6
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUp
OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChjb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KCkgJiYgcGFyZW50RWxlbWVudCgpICYmICFwYXJlbnRFbGVtZW50KCktPmNvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKQEAgLTE2NDQsNyArMTY0NCw3IEBAIE5vZGU6Okluc2Vy
dGVkSW50b1Jlc3VsdCBFbGVtZW50OjppbnNlcnQKICAgICB9CiAKICAgICBpZiAoIXBhcmVudE9m
SW5zZXJ0ZWRUcmVlLmlzSW5UcmVlU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50
b1Jlc3VsdDo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
OjpEb25lOwogCiAgICAgYm9vbCBiZWNvbWVDb25uZWN0ZWQgPSBpbnNlcnRpb25UeXBlLmNvbm5l
Y3RlZFRvRG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBuZXdTY29wZSA9ICZwYXJlbnRPZkluc2Vy
dGVkVHJlZS50cmVlU2NvcGUoKTsKQEAgLTE2ODAsMTAgKzE2ODAsMTAgQEAgTm9kZTo6SW5zZXJ0
ZWRJbnRvUmVzdWx0IEVsZW1lbnQ6Omluc2VydAogICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWU6OmVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1v
dmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZS
ZW1vdmVkVHJlZSkKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlw
ZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnQoKSkKQEAgLTE2OTYsOCArMTY5Niw4IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20o
UmVtb3ZhbFR5cGUgcmUKIAogICAgIHNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbihTY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgIGlmIChwYXJlbnRPZlJlbW92ZWRUcmVlLmlzSW5UcmVlU2NvcGUo
KSkgewotICAgICAgICBUcmVlU2NvcGUqIG9sZFNjb3BlID0gJnBhcmVudE9mUmVtb3ZlZFRyZWUu
dHJlZVNjb3BlKCk7CisgICAgaWYgKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuaXNJblRyZWVTY29w
ZSgpKSB7CisgICAgICAgIFRyZWVTY29wZSogb2xkU2NvcGUgPSAmb2xkUGFyZW50T2ZSZW1vdmVk
VHJlZS50cmVlU2NvcGUoKTsKICAgICAgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gcmVtb3Zh
bFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ID8gJm9sZFNjb3BlLT5kb2N1bWVudFNjb3Bl
KCkgOiBudWxscHRyOwogICAgICAgICBIVE1MRG9jdW1lbnQqIG9sZEhUTUxEb2N1bWVudCA9IG9s
ZERvY3VtZW50ICYmIGlzPEhUTUxEb2N1bWVudD4oKm9sZERvY3VtZW50KSA/ICZkb3duY2FzdDxI
VE1MRG9jdW1lbnQ+KCpvbGREb2N1bWVudCkgOiBudWxscHRyOwogICAgICAgICBpZiAoIXJlbW92
YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpCkBAIC0xNzM0LDExICsxNzM0LDExIEBAIHZvaWQgRWxl
bWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmUKICAgICB9CiAKICAgICBpZiAoIXBhcmVu
dE5vZGUoKSkgewotICAgICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IHBhcmVudE9mUmVtb3Zl
ZFRyZWUuc2hhZG93Um9vdCgpKQorICAgICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUuc2hhZG93Um9vdCgpKQogICAgICAgICAgICAgc2hhZG93Um9vdC0+
aG9zdENoaWxkRWxlbWVudERpZENoYW5nZSgqdGhpcyk7CiAgICAgfQogCi0gICAgQ29udGFpbmVy
Tm9kZTo6cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAg
IENvbnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOwogCiAgICAgaWYgKGhhc1BlbmRpbmdSZXNvdXJjZXMoKSkKICAgICAg
ICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVtb3ZlRWxlbWVudEZyb21QZW5k
aW5nUmVzb3VyY2VzKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NTEsOCArNTUxLDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKLSAgICBJbnNlcnRl
ZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
Jikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShy
ZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNDEsNyArMTI0MSw3IEBAIE5vZGUmIE5vZGU6OmdldFJvb3ROb2RlKGNvbnN0
IEdldFJvb3ROb2QKICAgICByZXR1cm4gb3B0aW9ucy5jb21wb3NlZCA/IHNoYWRvd0luY2x1ZGlu
Z1Jvb3QoKSA6IHJvb3ROb2RlKCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBOb2Rl
OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
IE5vZGU6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7CiAgICAgaWYgKGluc2VydGlv
blR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKICAgICAgICAgc2V0RmxhZyhJc0Nvbm5lY3RlZEZs
YWcpOwpAQCAtMTI1MCwxMCArMTI1MCwxMCBAQCBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQgTm9k
ZTo6aW5zZXJ0ZWRJCiAKICAgICBpbnZhbGlkYXRlU3R5bGUoU3R5bGU6OlZhbGlkaXR5OjpTdWJ0
cmVlQW5kUmVuZGVyZXJzSW52YWxpZCk7CiAKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0
OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIH0K
IAotdm9pZCBOb2RlOjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYpCit2b2lkIE5vZGU6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVt
b3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKQogewogICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25u
ZWN0ZWRGcm9tRG9jdW1lbnQpCiAgICAgICAgIGNsZWFyRmxhZyhJc0Nvbm5lY3RlZEZsYWcpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNyArNDMzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pOwogCi0gICAgZW51bSBjbGFzcyBJbnNlcnRlZElu
dG9SZXN1bHQgeworICAgIGVudW0gY2xhc3MgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgewog
ICAgICAgICBEb25lLAogICAgICAgICBOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjaywKICAgICB9
OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIC8vIENhbGxlZCAqYWZ0
ZXIqIHRoaXMgbm9kZSBvciBpdHMgYW5jZXN0b3IgaXMgaW5zZXJ0ZWQgaW50byBhIG5ldyBwYXJl
bnQgKG1heSBvciBtYXkgbm90IGJlIGEgcGFydCBvZiBkb2N1bWVudCkgYnkgc2NyaXB0cyBvciBw
YXJzZXIuCiAgICAgLy8gaW5zZXJ0ZWRJbnRvICoqTVVTVCBOT1QqKiBpbnZva2Ugc2NyaXB0cy4g
UmV0dXJuIE5lZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrIGFuZCBpbXBsZW1lbnQgZGlkRmluaXNo
SW5zZXJ0aW5nTm9kZSBpbnN0ZWFkIHRvIHJ1biBzY3JpcHRzLgotICAgIHZpcnR1YWwgSW5zZXJ0
ZWRJbnRvUmVzdWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgdmlydHVhbCBJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEluc2VydGlu
Z05vZGUoKSB7IH0KIAogICAgIHN0cnVjdCBSZW1vdmFsVHlwZSB7CkBAIC00NjMsNyArNDYzLDcg
QEAgcHVibGljOgogICAgICAgICBib29sIGRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgdHJlZVNjb3BlQ2hhbmdlZCB7IGZhbHNlIH07CiAgICAgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBh
cmVudE9mUmVtb3ZlZFRyZWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9y
KFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAog
I2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVi
dWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDIyMzc5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzQsMTMgKzI3NCwxMyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6YWRkU3VicmVzb3VyCiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgc2hlZXQoKS0+YmFz
ZVVSTCgpKTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVy
Tm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlv
blR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUp
CiB7Ci0gICAgQ2hhcmFjdGVyRGF0YTo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBDaGFyYWN0ZXJEYXRhOjppbnNlcnRlZEludG9BbmNlc3Rv
cihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKCFpbnNlcnRp
b25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBJbnNlcnRlZEludG9S
ZXN1bHQ6OkRvbmU7CisgICAgICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6
RG9uZTsKICAgICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5hZGRTdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZSgqdGhpcywgbV9jcmVhdGVkQnlQYXJzZXIpOwotICAgIHJldHVybiBJbnNlcnRlZEludG9S
ZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrOworICAgIHJldHVybiBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CiB9CiAKIHZvaWQg
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKQEAgLTI4OCw5
ICsyODgsOSBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6ZGlkRmluaXNoSW5zCiAgICAg
Y2hlY2tTdHlsZVNoZWV0KCk7CiB9CiAKLXZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1v
dmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZS
ZW1vdmVkVHJlZSkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlKQogewotICAgIENoYXJhY3RlckRhdGE6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBl
LCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBDaGFyYWN0ZXJEYXRhOjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAoIXJl
bW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkocmV2
aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIHByaXZhdGU6CiAgICAgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50
ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKIAotICAgIEluc2Vy
dGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYp
IG92ZXJyaWRlOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZWRGcm9t
KFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVk
RnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGNoZWNrU3R5bGVTaGVldCgpOwogICAgIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDExICs4MSwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBmb3JjZUFzeW5jKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZUFzeW5j
OyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgb3VyIHBhcmVudCBjbGFzc2Vz
LgotICAgIE5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oTm9kZTo6SW5zZXJ0
aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgY29uc3QKKyAgICBOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihOb2RlOjpJbnNl
cnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiAhbV9wYXJzZXJJ
bnNlcnRlZCkKLSAgICAgICAgICAgIHJldHVybiBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQ6Ok5l
ZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrOwotICAgICAgICByZXR1cm4gTm9kZTo6SW5zZXJ0ZWRJ
bnRvUmVzdWx0OjpEb25lOworICAgICAgICAgICAgcmV0dXJuIE5vZGU6Okluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKKyAgICAgICAgcmV0dXJu
IE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogICAgIH0KIAogICAgIHZv
aWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxNyArODUsMTcgQEAgU2hhZG93Um9vdDo6flNoYWRv
d1Jvb3QoKQogICAgIHJlbW92ZURldGFjaGVkQ2hpbGRyZW4oKTsKIH0KIAotTm9kZTo6SW5zZXJ0
ZWRJbnRvUmVzdWx0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBlIGluc2Vy
dGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5z
ZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3Io
SW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2Vy
dGVkVHJlZSkKIHsKLSAgICBEb2N1bWVudEZyYWdtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9u
VHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIERvY3VtZW50RnJhZ21lbnQ6Omluc2Vy
dGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICAg
ICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQogICAgICAgICBkb2N1bWVu
dCgpLmRpZEluc2VydEluRG9jdW1lbnRTaGFkb3dSb290KCp0aGlzKTsKLSAgICByZXR1cm4gSW5z
ZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdDo6RG9uZTsKIH0KIAotdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlw
ZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQg
U2hhZG93Um9vdDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKLSAgICBEb2N1bWVudEZy
YWdtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7Cisg
ICAgRG9jdW1lbnRGcmFnbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xk
UGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZy
b21Eb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVJbkRvY3VtZW50U2hhZG93
Um9vdCgqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDIy
Mzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDggKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRl
cm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogCi0gICAgTm9kZTo6
SW5zZXJ0ZWRJbnRvUmVzdWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpIG92ZXJyaWRlOworICAgIE5vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUsIENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5l
d0RvY3VtZW50KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2Ug
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXcKICAgICAgICAgcmVzZXRGb3Jt
QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0KIAotdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6Omluc2VydGVkSW50byhOb2RlOjpJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRh
aW5lck5vZGUmKQordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKE5vZGU6Okluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpCiB7
CiAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7CiAgICAgaWYgKG1f
Zm9ybVNldEJ5UGFyc2VyKSB7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OjppbnNlcnRlZEludG8KICAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIoKTsKIH0KIAotdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKE5v
ZGU6OlJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKE5vZGU6OlJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JikKIHsKICAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAkocmV2aXNp
b24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAgdm9pZCBp
bnNlcnRlZEludG8oTm9kZTo6SW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpOwotICAgIHZv
aWQgcmVtb3ZlZEZyb20oTm9kZTo6UmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKTsKKyAgICB2
b2lkIGluc2VydGVkSW50b0FuY2VzdG9yKE5vZGU6Okluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoTm9kZTo6UmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKTsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCk7CiAKICAgICB2b2lkIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50Kik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDE3ICs1MSwxNyBAQCB2b2lkIEhUTUxCYXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MQmFzZUVsZW1lbnQ6Omluc2VydGVk
SW50byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9m
SW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTEJhc2VF
bGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUs
IENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIEhUTUxFbGVtZW50
OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAg
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRP
Zkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVu
dCkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzQmFzZUVsZW1lbnQoKTsKLSAgICByZXR1cm4g
SW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdDo6RG9uZTsKIH0KIAotdm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKFJl
bW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZlJlbW92ZWRUcmVl
KQordm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7Ci0g
ICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRU
cmVlKTsKKyAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3Rl
ZEZyb21Eb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzQmFzZUVsZW1lbnQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaAkocmV2aXNpb24gMjIz
Nzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksOCArMzksOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyB0YXJnZXQoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRl
ZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgcmVt
b3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBD
b250YWluZXJOb2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92
YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODUsMjAgKzE4NSwyMCBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uCiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxCb2R5RWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MQm9keUVs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6
Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAg
SFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9m
SW5zZXJ0ZWRUcmVlKTsKICAgICBpZiAoIWluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6RG9uZTsKKyAgICAgICAgcmV0
dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogCiAgICAgLy8gRklYTUU6IEl0
J3Mgc3VycHJpc2luZyB0aGlzIGlzIHdlYiBjb21wYXRpYmxlIHNpbmNlIGl0IG1lYW5zIGEgbWFy
Z2lud2lkdGggYW5kIG1hcmdpbmhlaWdodCBhdHRyaWJ1dGUgY2FuCiAgICAgLy8gbWFnaWNhbGx5
IGFwcGVhciBvbiB0aGUgPGJvZHk+IG9mIGFsbCBkb2N1bWVudHMgZW1iZWRkZWQgdGhyb3VnaCA8
aWZyYW1lPiBvciA8ZnJhbWU+LgogICAgIC8vIEZJWE1FOiBQZXJoYXBzIHRoaXMgY29kZSBzaG91
bGQgYmUgaW4gYXR0YWNoKCkgaW5zdGVhZCBvZiBoZXJlLgogICAgIGF1dG8qIG93bmVyRWxlbWVu
dCA9IGRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVt
ZW50QmFzZT4ob3duZXJFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3Vs
dDo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25l
OwogCi0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2Fs
bGJhY2s7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJ
bnNlcnRpb25DYWxsYmFjazsKIH0KIAogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmRpZEZpbmlzaElu
c2VydGluZ05vZGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCShy
ZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBm
aW5hbDsKIAotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlw
ZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBmaW5hbDsKIAogICAgIGJvb2wg
aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVJ
bnZhbGlkRWxlbWVudFRvQW5jZXN0CiAgICAgICAgIGFuY2VzdG9yLnJlbW92ZUludmFsaWREZXNj
ZW5kYW50KGVsZW1lbnQpOwogfQogCi1Ob2RlOjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rv
cihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKQogewogICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gVW5rbm93bjsKICAg
ICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CkBAIC0yODIsOSArMjgyLDkgQEAgTm9kZTo6
SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxGb3JtQ29udHJvbAogICAgICAgICBhZGRJbnZhbGlkRWxl
bWVudFRvQW5jZXN0b3JGcm9tSW5zZXJ0aW9uUG9pbnQoKnRoaXMsICZwYXJlbnRPZkluc2VydGVk
VHJlZSk7CiAgICAgaWYgKGRvY3VtZW50KCkuaGFzRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSkK
ICAgICAgICAgc2V0QW5jZXN0b3JEaXNhYmxlZChjb21wdXRlSXNEaXNhYmxlZEJ5RmllbGRzZXRB
bmNlc3RvcigpKTsKLSAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUs
IHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKLSAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2Vy
dGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Ci0gICAgcmV0dXJu
IEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CisgICAgSFRN
TEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICByZXR1cm4gSW5z
ZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNhbGxiYWNrOwogfQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQpA
QCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkRmluaXNo
SW4KICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnJlbW92ZWRGcm9tKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZlJlbW92ZWRUcmVlKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVk
RnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlKQogewogICAgIGJvb2wgd2FzTWF0Y2hpbmdJbnZhbGlkUHNldWRv
Q2xhc3MgPSB3aWxsVmFsaWRhdGUoKSAmJiAhaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpOwog
CkBAIC0zMDAsMTEgKzMwMCwxMSBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92
ZWRGcm9tCiAgICAgaWYgKG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQpCiAgICAgICAgIHNl
dEFuY2VzdG9yRGlzYWJsZWQoY29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0QW5jZXN0b3IoKSk7
CiAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBVbmtub3duOwotICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7Ci0gICAgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1v
dmVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5
cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7
CiAKICAgICBpZiAod2FzTWF0Y2hpbmdJbnZhbGlkUHNldWRvQ2xhc3MpCi0gICAgICAgIHJlbW92
ZUludmFsaWRFbGVtZW50VG9BbmNlc3RvckZyb21JbnNlcnRpb25Qb2ludCgqdGhpcywgJnBhcmVu
dE9mUmVtb3ZlZFRyZWUpOworICAgICAgICByZW1vdmVJbnZhbGlkRWxlbWVudFRvQW5jZXN0b3JG
cm9tSW5zZXJ0aW9uUG9pbnQoKnRoaXMsICZvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIH0KIAog
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRy
b2xDaGFuZ2VFdmVudChib29sIGNoYW5nZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw5ICsxMzYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRPbmx5QXR0cmli
dXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQo
KTsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotICAgIEluc2VydGVk
SW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2Vz
dG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJl
bW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBu
ZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTggKzM4LDE4IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OkhUTUxGb3IKIAogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6fkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKSA9IGRlZmF1bHQ7CiAKLU5vZGU6Okluc2VydGVkSW50
b1Jlc3VsdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG8oSW5z
ZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVk
VHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGU6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7CiAgICAgaWYg
KGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCAmJiAhY29udGFpbmluZ1NoYWRvd1Jv
b3QoKSkKICAgICAgICAgZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoU3RhdGUodGhpcyk7Ci0gICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAg
cmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2Vy
dGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKIH0KIAotdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFs
VHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKLSAgICBpZiAo
cmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICYmICFjb250YWluaW5nU2hhZG93
Um9vdCgpICYmICFwYXJlbnRPZlJlbW92ZWRUcmVlLmNvbnRhaW5pbmdTaGFkb3dSb290KCkpCisg
ICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCAmJiAhY29udGFpbmlu
Z1NoYWRvd1Jvb3QoKSAmJiAhb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5jb250YWluaW5nU2hhZG93
Um9vdCgpKQogICAgICAgICBkb2N1bWVudCgpLmZvcm1Db250cm9sbGVyKCkudW5yZWdpc3RlckZv
cm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJl
bW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjpzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgJKHJldmlzaW9u
IDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKICAgICB2b2lkIGZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIEluc2VydGVkSW50b1Jlc3VsdCBp
bnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsK
KyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjIz
Nzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEsMjEgKzEyMSwyMSBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjCiAgICAgcmV0dXJuIGZvcm1Jc1RhYmxlUGFydDsKIH0KIAotTm9kZTo6SW5z
ZXJ0ZWRJbnRvUmVzdWx0IEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitO
b2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MRm9ybUVsZW1lbnQ6Omluc2VydGVk
SW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYg
cGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhp
bnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsK
ICAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQogICAgICAgICBkb2N1
bWVudCgpLmRpZEFzc29jaWF0ZUZvcm1Db250cm9sKHRoaXMpOwotICAgIHJldHVybiBJbnNlcnRl
ZEludG9SZXN1bHQ6OkRvbmU7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
OjpEb25lOwogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5
cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lk
IEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFs
VHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBOb2Rl
JiByb290ID0gdHJhdmVyc2VUb1Jvb3ROb2RlKCk7IC8vIERvIG5vdCByZWx5IG9uIHJvb3ROb2Rl
KCkgYmVjYXVzZSBvdXIgSXNJblRyZWVTY29wZSBpcyBvdXRkYXRlZC4KICAgICBWZWN0b3I8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4gYXNzb2NpYXRlZEVsZW1lbnRzKG1fYXNzb2NpYXRlZEVsZW1l
bnRzKTsKICAgICBmb3IgKGF1dG8mIGFzc29jaWF0ZWRFbGVtZW50IDogYXNzb2NpYXRlZEVsZW1l
bnRzKQogICAgICAgICBhc3NvY2lhdGVkRWxlbWVudC0+Zm9ybU93bmVyUmVtb3ZlZEZyb21UcmVl
KHJvb3QpOwotICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50
T2ZSZW1vdmVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVt
b3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDgg
QEAgcHJpdmF0ZToKICAgICBIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBmaW5hbDsKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1
bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVy
Tm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgZmluYWw7CiAK
ICAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JikgZmluYWw7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkocmV2aXNpb24gMjIzNzk1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6
OnNldE5hbWVBbmRPcGUKICAgICBvcGVuVVJMKCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jl
c3VsdCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2Vy
dGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0
aW9uQ2FsbGJhY2s7Ci0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6RG9uZTsKKyAgICAg
ICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25D
YWxsYmFjazsKKyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiB9
CiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAkocmV2aXNp
b24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
VVJMQWxsb3dlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgSW5zZXJ0ZWRJ
bnRvUmVzdWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmlu
YWw7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3Io
SW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNo
SW5zZXJ0aW5nTm9kZSgpIGZpbmFsOwogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDIwICsyMDgsMjAgQEAgdm9pZCBI
VE1MRnJhbWVTZXRFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bAogICAgICAgICByZW5kZXJlcigpLT5z
ZXROZWVkc0xheW91dCgpOwogfQogCi1Ob2RlOjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTEZyYW1l
U2V0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29u
dGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBIVE1MRnJhbWVTZXRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRU
cmVlKQogewotICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFy
ZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rv
cihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlv
blR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkgewogICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBm
cmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5kaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGRvY3VtZW50KCkuaXNGcmFtZVNldCgp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJl
dHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIH0KIAotdm9pZCBIVE1MRnJh
bWVTZXRFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKLSAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZy
b20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIEhUTUxFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsK
ICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAg
IGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAg
ICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoZG9j
dW1lbnQoKS5pc0ZyYW1lU2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBmaW5hbDsK
IAotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29u
dGFpbmVyTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNl
cnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Cisg
ICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikg
ZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fcm93TGVuZ3RoczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fY29sTGVuZ3RoczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjkzLDcgKzI5Myw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXIK
ICAgICAgICAgcmVuZGVySW1hZ2Uuc2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogfQogCi1Ob2Rl
OjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2Vy
dGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRy
ZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MSW1hZ2VFbGVtZW50Ojpp
bnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewogICAgIGlmIChtX2Zvcm1TZXRCeVBhcnNl
cikgewogICAgICAgICBtX2Zvcm0gPSBtX2Zvcm1TZXRCeVBhcnNlcjsKQEAgLTMxMyw3ICszMTMs
NyBAQCBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTEltYWdlRWxlbWVuCiAgICAgfQogICAg
IC8vIEluc2VydCBuZWVkcyB0byBjb21wbGV0ZSBmaXJzdCwgYmVmb3JlIHdlIHN0YXJ0IHVwZGF0
aW5nIHRoZSBsb2FkZXIuIExvYWRlciBkaXNwYXRjaGVzIGV2ZW50cyB3aGljaCBjb3VsZCByZXN1
bHQKICAgICAvLyBpbiBjYWxsYmFja3MgYmFjayB0byB0aGlzIG5vZGUuCi0gICAgTm9kZTo6SW5z
ZXJ0ZWRJbnRvUmVzdWx0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1MRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBO
b2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnROb3RpZmljYXRpb25SZXF1ZXN0
ID0gSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKTsKIAogICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9j
dW1lbnQgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQogICAgICAgICBkb2N1bWVudCgpLmFk
ZEltYWdlRWxlbWVudEJ5VXNlbWFwKCptX3BhcnNlZFVzZW1hcC5pbXBsKCksICp0aGlzKTsKQEAg
LTMzMSw3ICszMzEsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTEltYWdlRWxlbWVu
CiAgICAgcmV0dXJuIGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3Q7CiB9CiAKLXZvaWQgSFRNTElt
YWdlRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKG1fZm9ybSkKICAgICAgICAgbV9mb3Jt
LT5yZW1vdmVJbWdFbGVtZW50KHRoaXMpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSFRNTElt
YWdlRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3YKICAgICAgICAgc2V0UGljdHVyZUVsZW1lbnQo
bnVsbHB0cik7CiAKICAgICBtX2Zvcm0gPSBudWxscHRyOwotICAgIEhUTUxFbGVtZW50OjpyZW1v
dmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgSFRNTEVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWUpOwogfQogCiBIVE1MUGljdHVyZUVsZW1lbnQqIEhUTUxJbWFnZUVsZW1lbnQ6OnBpY3R1cmVF
bGVtZW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
CShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDggKzEyMCw4IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlv
blR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJl
bW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVy
Tm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlw
ZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgRm9ybU5hbWVkSXRl
bSogYXNGb3JtTmFtZWRJdGVtKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTAzLDEzICsxNTAzLDEzIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkQ2hhbmdlRm9y
bSgpCiAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50
b1Jlc3VsdCBIVE1MSW5wdXRFbGVtZW50OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Oklu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxJbnB1dEVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2Vy
dGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUs
IHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogI2VuZGlmCi0gICAgcmV0dXJu
IEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CisgICAgcmV0
dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFj
azsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkK
QEAgLTE1MTksMTEgKzE1MTksMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRGaW5pc2hJ
bnNlcnRpbgogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKIH0KIAotdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50ICYmICFmb3JtKCkpCiAgICAgICAgIHJlbW92ZUZyb21SYWRpb0J1dHRv
bkdyb3VwKCk7Ci0gICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJl
bW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSk7CiAgICAgQVNTRVJUKCFpc0Nvbm5lY3RlZCgpKTsKICNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKICAgICByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTAsOSArMzUwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbENoYW5nZUZvcm0o
KSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZUZvcm0oKSBmaW5hbDsKLSAgICBJbnNlcnRlZElu
dG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5h
bDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJ
bnNlcnRpbmdOb2RlKCkgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFs
OwogCiAgICAgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0MCwxNiArMzQwLDE2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpjbGVhclNoZWV0KCkK
ICAgICBtX3NoZWV0ID0gbnVsbHB0cjsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhU
TUxMaW5rRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2Vy
dGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRy
ZWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9y
KGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICAgICBpZiAoIWluc2VydGlv
blR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b1Jl
c3VsdDo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpE
b25lOwogCiAgICAgbV9zdHlsZVNjb3BlID0gJlN0eWxlOjpTY29wZTo6Zm9yTm9kZSgqdGhpcyk7
CiAgICAgbV9zdHlsZVNjb3BlLT5hZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSgqdGhpcywgbV9j
cmVhdGVkQnlQYXJzZXIpOwogCi0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQ
b3N0SW5zZXJ0aW9uQ2FsbGJhY2s7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQpAQCAtMzU3LDkgKzM1Nyw5IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmcKICAgICBwcm9jZXNzKCk7CiB9CiAKLXZv
aWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTExpbmtFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewotICAgIEhUTUxFbGVtZW50OjpyZW1vdmVk
RnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6
OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
OwogICAgIGlmICghcmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2
aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHByb2Nlc3NDYWxsYmFjayhOb2RlKik7CiAgICAgdm9pZCBjbGVhclNoZWV0KCk7CiAKLSAgICBJ
bnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVkRnJvbShSZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0
aWFsaXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBjb25zdCBDYWNoZWRD
U1NTdHlsZVNoZWV0Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE5ICsxMTIsMTkgQEAgUmVmPEhUTUxDb2xs
ZWN0aW9uPiBIVE1MTWFwRWxlbWVudDo6YXJlYQogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPE1hcEFyZWFzPjo6dHJhdmVyc2FsVHlwZT4+
KCp0aGlzLCBNYXBBcmVhcyk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MTWFw
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdCBIVE1MTWFwRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlw
ZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsK
LSAgICBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQgcmVxdWVzdCA9IEhUTUxFbGVtZW50OjppbnNl
cnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIE5vZGU6
Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IHJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogICAg
IGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpCiAgICAgICAgIHRyZWVTY29w
ZSgpLmFkZEltYWdlTWFwKCp0aGlzKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBI
VE1MTWFwRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRh
aW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lkIEhUTUxNYXBFbGVtZW50OjpyZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBv
bGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewogICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25uZWN0
ZWRGcm9tRG9jdW1lbnQpCiAgICAgICAgIHRyZWVTY29wZSgpLnJlbW92ZUltYWdlTWFwKCp0aGlz
KTsKLSAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVt
b3ZlZFRyZWUpOworICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxU
eXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKIAotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNl
cnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAgIHZvaWQg
cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBl
LCBDb250YWluZXJOb2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJl
bW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAKICAgICBBdG9taWNTdHJpbmcgbV9u
YW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
cmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcyLDExICs4NzIsMTEgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZQogI2VuZGlmCiB9CiAKLU5vZGU6Okluc2VydGVkSW50
b1Jlc3VsdCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Oklu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRU
cmVlKTsKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlw
ZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwogICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3Rl
ZFRvRG9jdW1lbnQpIHsKICAgICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIApAQCAt
ODk0LDcgKzg5NCw3IEBAIE5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MTWVkaWFFbGVtZW4K
ICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxs
YmFjazsKKyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9zdElu
c2VydGlvbkNhbGxiYWNrOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEZpbmlzaElu
c2VydGluZ05vZGUoKQpAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGF1c2VBZnRlckRldGFjaGUKICAgICB9CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9m
UmVtb3ZlZFRyZWUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3Io
UmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTk0MSw3ICs5NDEs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKFJlbW92CiAgICAgICAgIG1f
cGF1c2VBZnRlckRldGFjaGVkVGFza1F1ZXVlLmVucXVldWVUYXNrKHN0ZDo6YmluZCgmSFRNTE1l
ZGlhRWxlbWVudDo6cGF1c2VBZnRlckRldGFjaGVkVGFzaywgdGhpcykpOwogICAgIH0KIAotICAg
IEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJl
ZSk7CisgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxB
dHRhY2hSZW5kZXJlcnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsOSArNTg4LDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEluc2Vy
dGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYp
IG92ZXJyaWRlOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbW92ZWRGcm9t
KFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVk
RnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEy
ICs2MCwxMiBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uCiAgICAg
ICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLU5vZGU6
Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRp
b25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVl
KQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTE1ldGFFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZElu
dG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIEhUTUxFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJl
ZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKICAgICAgICAg
cHJvY2VzcygpOwotICAgIHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6OkRvbmU7CisgICAgcmV0
dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogfQogCiB2b2lkIEhUTUxNZXRh
RWxlbWVudDo6cHJvY2VzcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICBIVE1M
TWV0YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmlu
YWw7CiAKICAgICB2b2lkIHByb2Nlc3MoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMywxMSAr
MzEzLDExIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChDcmUKICAgICAg
ICAgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3Vs
dCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9u
VHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0
b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZklu
c2VydGVkVHJlZSkKIHsKLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8o
aW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwotICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVl
KTsKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxs
YmFjazsKKyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcihp
bnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2Vy
dGVkVHJlZSk7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bv
c3RJbnNlcnRpb25DYWxsYmFjazsKIH0KIAogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6ZGlkRmlu
aXNoSW5zZXJ0aW5nTm9kZSgpCkBAIC0zMjUsMTAgKzMyNSwxMCBAQCB2b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpCiAgICAgcmVzZXRGb3JtT3duZXIoKTsKIH0KIAotdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lkIEhUTUxPYmplY3RFbGVt
ZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWlu
ZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewotICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKLSAg
ICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRP
ZlJlbW92ZWRUcmVlKTsKKyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKLSAgICBJbnNlcnRlZEludG9SZXN1bHQg
aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdO
b2RlKCkgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwgQ29udGFpbmVy
Tm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6Omlz
RGlzYWJsZWRGb3JtQ28KICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4o
KnBhcmVudE5vZGUoKSkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKLU5vZGU6Okluc2Vy
dGVkSW50b1Jlc3VsdCBIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitO
b2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKICAgICBpZiAoUmVmUHRyPEhUTUxTZWxlY3RFbGVt
ZW50PiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkgewogICAgICAgICBzZWxlY3QtPnNl
dFJlY2FsY0xpc3RJdGVtcygpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIE5vZGU6Okluc2VydGVkSW50
b1Jlc3VsdCBIVE1MT3B0aW9uRWxlbWUKICAgICAgICAgc2VsZWN0LT5zY3JvbGxUb1NlbGVjdGlv
bigpOwogICAgIH0KIAotICAgIHJldHVybiBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2Vy
dGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVl
KTsKIH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgJKHJl
dmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmlu
YWw7CiAgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCkgZmluYWw7CiAKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OCwxMCArNjgsMTAgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
YwogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQog
Ci1Ob2RlOjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50
byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTFNjcmlwdEVs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6
Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Ci0gICAg
cmV0dXJuIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRP
Zkluc2VydGVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGlu
c2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICByZXR1cm4gU2NyaXB0RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdO
b2RlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHJldmlz
aW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxTY3JpcHRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgd2FzSW5zZXJ0ZWRC
eVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKLSAgICBJ
bnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYwLDEzICsx
NTYwLDEzIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZpbmQoS2UKICAgICAg
ICAgbGlzdEJveE9uQ2hhbmdlKCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1M
U2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBIVE1MU2VsZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVk
VHJlZSkKIHsKICAgICAvLyBXaGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQgZHVyaW5nIGRvY3Vt
ZW50IHBhcnNpbmcsIGl0IHdvbid0IGhhdmUgYW55CiAgICAgLy8gaXRlbXMgeWV0IC0gYnV0IGZv
ciBpbm5lckhUTUwgYW5kIHJlbGF0ZWQgbWV0aG9kcywgdGhpcyBtZXRob2QgaXMgY2FsbGVkCiAg
ICAgLy8gYWZ0ZXIgdGhlIHdob2xlIHN1YnRyZWUgaXMgY29uc3RydWN0ZWQuCiAgICAgcmVjYWxj
TGlzdEl0ZW1zKCk7Ci0gICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6
Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAg
cmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6Omluc2VydGVkSW50b0FuY2Vz
dG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKIH0KIAogdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyMjM3OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHlwZUFoZWFkRmluZChL
ZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzYXZlTGFzdFNlbGVjdGlvbigpOwogCi0gICAgSW5z
ZXJ0ZWRJbnRvUmVzdWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JikgZmluYWw7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogCiAgICAgYm9vbCBp
c09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBmaW5hbCB7IHJldHVybiAhaXNSZXF1aXJlZEZv
cm1Db250cm9sKCk7IH0KICAgICBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IGZp
bmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCwyOCArNDgsMjggQEAgSFRNTFNsb3RFbGVtZW50OjpIVE1MU2xv
dEVsZW1lbnQoY29uc3QgUQogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNsb3RUYWcpKTsKIH0KIAot
SFRNTFNsb3RFbGVtZW50OjpJbnNlcnRlZEludG9SZXN1bHQgSFRNTFNsb3RFbGVtZW50OjppbnNl
cnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJl
bnRPZkluc2VydGVkVHJlZSkKK0hUTUxTbG90RWxlbWVudDo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JS
ZXN1bHQgSFRNTFNsb3RFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBl
IGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewot
ICAgIGF1dG8gaW5zZXJ0aW9uUmVzdWx0ID0gSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNl
cnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNl
cnRpb25SZXN1bHQsIGluc2VydGlvblJlc3VsdCA9PSBJbnNlcnRlZEludG9SZXN1bHQ6OkRvbmUp
OworICAgIGF1dG8gaW5zZXJ0aW9uUmVzdWx0ID0gSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGluc2VydGlvblJlc3VsdCwgaW5zZXJ0aW9uUmVzdWx0ID09IEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0OjpEb25lKTsKIAogICAgIGlmIChpbnNlcnRpb25UeXBlLnRyZWVTY29wZUNo
YW5nZWQgJiYgaXNJblNoYWRvd1RyZWUoKSkgewogICAgICAgICBpZiAoYXV0byBzaGFkb3dSb290
ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmFkZFNs
b3RFbGVtZW50QnlOYW1lKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIp
LCAqdGhpcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6RG9uZTsK
KyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiB9CiAKLXZvaWQg
SFRNTFNsb3RFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTFNsb3RFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewotICAgIGlmIChyZW1vdmFsVHlwZS50cmVlU2Nv
cGVDaGFuZ2VkICYmIHBhcmVudE9mUmVtb3ZlZFRyZWUuaXNJblNoYWRvd1RyZWUoKSkgewotICAg
ICAgICBhdXRvKiBvbGRTaGFkb3dSb290ID0gcGFyZW50T2ZSZW1vdmVkVHJlZS5jb250YWluaW5n
U2hhZG93Um9vdCgpOworICAgIGlmIChyZW1vdmFsVHlwZS50cmVlU2NvcGVDaGFuZ2VkICYmIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUuaXNJblNoYWRvd1RyZWUoKSkgeworICAgICAgICBhdXRvKiBv
bGRTaGFkb3dSb290ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5jb250YWluaW5nU2hhZG93Um9v
dCgpOwogICAgICAgICBBU1NFUlQob2xkU2hhZG93Um9vdCk7CiAgICAgICAgIG9sZFNoYWRvd1Jv
b3QtPnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obmFtZUF0dHIpLCAqdGhpcyk7CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRG
cm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBIVE1MRWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7
CiB9CiAKIHZvaWQgSFRNTFNsb3RFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDggKzQ4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MU2xvdEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBJbnNlcnRlZEludG9SZXN1
bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKLSAg
ICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Cisg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgYXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9u
UmVhc29uKSBmaW5hbDsKIAogICAgIGJvb2wgbV9pblNpZ25hbFNsb3RMaXN0IHsgZmFsc2UgfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsOSBAQCBSZWY8SFRNTFNvdXJjZUVsZW1lbnQ+IEhU
TUxTb3VyY2VFbGVtZW50CiAgICAgcmV0dXJuIGNyZWF0ZShzb3VyY2VUYWcsIGRvY3VtZW50KTsK
IH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxTb3VyY2VFbGVtZW50OjppbnNlcnRl
ZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRP
Zkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxTb3Vy
Y2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIEhUTUxFbGVt
ZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwor
ICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZyBpZiBh
biBhbmNlc3RvciBvZiB0aGUgcGFyZW50IGhhZCBiZWVuIGluc2VydGVkLgogICAgIGlmIChhdXRv
KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCkpIHsKICNpZiBFTkFCTEUoVklERU8pCkBAIC03Niwx
NSArNzYsMTUgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxTb3VyY2VFbGVtZQogICAg
ICAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50PigqcGFyZW50KSkKICAgICAgICAgICAgIGRv
d25jYXN0PEhUTUxQaWN0dXJlRWxlbWVudD4oKnBhcmVudCkuc291cmNlc0NoYW5nZWQoKTsKICAg
ICB9Ci0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6RG9uZTsKKyAgICByZXR1cm4gSW5z
ZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiB9CiAKLXZvaWQgSFRNTFNvdXJjZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZlJlbW92ZWRUcmVlKQordm9pZCBIVE1MU291cmNlRWxlbWVudDo6cmVtb3ZlZEZyb21B
bmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIHdyb25nIGlmIGFu
IGFuY2VzdG9yIG9mIHRoZSBwYXJlbnQgaGFkIGJlZW4gcmVtb3ZlZC4KICAgICBSZWZQdHI8RWxl
bWVudD4gcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlmICghcGFyZW50ICYmIGlzPEVs
ZW1lbnQ+KHBhcmVudE9mUmVtb3ZlZFRyZWUpKQotICAgICAgICBwYXJlbnQgPSAmZG93bmNhc3Q8
RWxlbWVudD4ocGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgaWYgKCFwYXJlbnQgJiYgaXM8RWxl
bWVudD4ob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkpCisgICAgICAgIHBhcmVudCA9ICZkb3duY2Fz
dDxFbGVtZW50PihvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocGFyZW50KSB7CiAj
aWYgRU5BQkxFKFZJREVPKQogICAgICAgICBpZiAoaXM8SFRNTE1lZGlhRWxlbWVudD4oKnBhcmVu
dCkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KFJlbW8KICAgICAgICAgaWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVudD4oKnBhcmVudCkpCiAgICAg
ICAgICAgICBkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1lbnQ+KCpwYXJlbnQpLnNvdXJjZXNDaGFu
Z2VkKCk7CiAgICAgfQotICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwg
cGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogfQogCiB2b2lkIEhUTUxT
b3VyY2VFbGVtZW50OjpzY2hlZHVsZUVycm9yRXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFNvdXJjZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgSW5zZXJ0ZWRJbnRvUmVzdWx0IGluc2Vy
dGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Ci0gICAgdm9pZCBy
ZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIEluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVt
b3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICBib29sIGlzVVJMQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NiwxNyArOTYsMTcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpm
aW5pc2hQYXJzaW5nQ2hpbAogICAgIEhUTUxFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4o
KTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxTdHlsZUVsZW1lbnQ6Omluc2Vy
dGVkSW50byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTFN0
eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUpOworICAgIGF1dG8gcmVzdWx0ID0gSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICAgICBpZiAo
aW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQogICAgICAgICBtX3N0eWxlU2hlZXRP
d25lci5pbnNlcnRlZEludG9Eb2N1bWVudCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFs
VHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKLSAgICBIVE1MRWxlbWVudDo6
cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIEhUTUxF
bGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92
ZWRUcmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQog
ICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCp0aGlzKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7Ci0gICAgSW5zZXJ0ZWRJbnRvUmVzdWx0IGluc2VydGVkSW50byhJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVkRnJvbShS
ZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIEluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIGZpbmFsOwogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlU2hlZXRPd25lci5pc0xvYWRpbmcoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzc5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQgQEAgYm9vbCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2hpbGRTaAogICAgIHJldHVybiBoYXNTaGFkb3dSb290UGFyZW50KGNoaWxk
KSAmJiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNoaWxkKTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBl
LCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIEluc2VydGVkSW50b1Jlc3VsdCBJbnNlcnRlZEludG9S
ZXN1bHQgPSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG8oaW5z
ZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIEluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0ID0gSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpOwogICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1l
bnQpIHsKICAgICAgICAgU3RyaW5nIGluaXRpYWxWYWx1ZSA9IHZhbHVlKCk7CiAgICAgICAgIHNl
dFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoaW5pdGlhbFZhbHVlLmlzTnVsbCgp
ID8gZW1wdHlTdHJpbmcoKSA6IGluaXRpYWxWYWx1ZSk7CiAgICAgfQotICAgIHJldHVybiBJbnNl
cnRlZEludG9SZXN1bHQ7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0Owog
fQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgaW50IG1pbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluTGVuZ3Ro
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWluTGVuZ3RoKGludCk7CiAKLSAgICBJbnNl
cnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBUaGUgZGVyaXZlZCBjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxhY2Vob2xkZXIgcHJv
Y2Vzc2luZyBpcyBuZWVkZWQuCiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNQbGFjZWhvbGRlclZpc2libGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTYg
KzUwLDE2IEBAIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBIVE1MVGl0bGVFbGVtZW50OjoKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MVGl0bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRl
ZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRP
Zkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxUaXRs
ZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlw
ZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgSFRNTEVsZW1l
bnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cisg
ICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKTsKICAgICBkb2N1bWVudCgpLnRpdGxlRWxlbWVudEFkZGVkKCp0aGlz
KTsKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIH0KIAotdm9pZCBIVE1MVGl0bGVFbGVtZW50
OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFy
ZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgSFRNTFRpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSkKIHsKLSAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUs
IHBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2Vz
dG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBkb2N1bWVudCgp
LnRpdGxlRWxlbWVudFJlbW92ZWQoKnRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCi0gICAgSW5zZXJ0ZWRJbnRvUmVzdWx0IGluc2VydGVkSW50byhJ
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVkRnJv
bShSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIGZpbmFsOwogCiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBjb21wdXRlZFRl
eHRXaXRoRGlyZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRy
YWNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgUmVmPEhUTUxU
cmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEhUTUxUcmFja0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotTm9kZTo6SW5zZXJ0
ZWRJbnRvUmVzdWx0IEhUTUxUcmFja0VsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBl
IGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9k
ZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBw
YXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGlu
c2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwog
CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZy4gSWYgSFRNTFRyYWNrRWxlbWVudCBj
YW4gYmUgYW55IGRlc2NlbmRlbnQgb2YgSFRNTE1lZGlhRWxlbWVudCwgdGhlbiBjaGVjayBhbmNl
c3RvcnMgb2YgcGFyZW50T2ZJbnNlcnRlZFRyZWUuCiAgICAgLy8gSWYgSFRNTE1lZGlhRWxlbWVu
dCBvbmx5IHN1cHBvcnRzIEhUTUxUcmFja0VsZW1lbnQgd2hpY2ggaXMgYW4gaW1tZWRpYXRlIGNo
aWxkLCB0aGVuIGNoZWNrIHBhcmVudE5vZGUoKSBpbnN0ZWFkLgpAQCAtODgsMTcgKzg4LDE3IEBA
IE5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBIVE1MVHJhY2tFbGVtZW4KICAgICAvLyBTaW5jZSB3
ZSd2ZSBtb3ZlZCB0byBhIG5ldyBwYXJlbnQsIHdlIG1heSBub3cgYmUgYWJsZSB0byBsb2FkLgog
ICAgIHNjaGVkdWxlTG9hZCgpOwogCi0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6RG9u
ZTsKKyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiB9CiAKLXZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lkIEhUTUxUcmFja0VsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
ck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIHdyb25nLiBJZiBIVE1MVHJhY2tFbGVt
ZW50IGNhbiBiZSBhbnkgZGVzY2VuZGVudCBvZiBIVE1MTWVkaWFFbGVtZW50LCB0aGVuIGNoZWNr
IGFuY2VzdG9ycyBvZiBwYXJlbnRPZkluc2VydGVkVHJlZS4KICAgICAvLyBJZiBIVE1MTWVkaWFF
bGVtZW50IG9ubHkgc3VwcG9ydHMgSFRNTFRyYWNrRWxlbWVudCB3aGljaCBpcyBhbiBpbW1lZGlh
dGUgY2hpbGQsIHRoZW4gY2hlY2sgcGFyZW50Tm9kZSgpIGluc3RlYWQuCi0gICAgaWYgKGlzPEhU
TUxNZWRpYUVsZW1lbnQ+KHBhcmVudE9mUmVtb3ZlZFRyZWUpKQotICAgICAgICBkb3duY2FzdDxI
VE1MTWVkaWFFbGVtZW50PihwYXJlbnRPZlJlbW92ZWRUcmVlKS5kaWRSZW1vdmVUZXh0VHJhY2so
KnRoaXMpOworICAgIGlmIChpczxIVE1MTWVkaWFFbGVtZW50PihvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlKSkKKyAgICAgICAgZG93bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4ob2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSkuZGlkUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKIH0KIAogdm9pZCBIVE1MVHJhY2tF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBmaW5hbDsKIAotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlZEZyb20o
UmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBD
b250YWluZXJOb2RlJikgZmluYWw7CiAKICAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2NSwxMiArMzY1LDEyIEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVw
b3J0QXR0cmlidXRlUGFyc2luZ0UKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJv
bURvY3VtZW50KQogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihmYWxz
ZSwgdGhpcyk7CiAKLSAgICBTdHlsZWRFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwg
cGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgU3R5bGVkRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAKICAgICBpZiAocmVt
b3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50KCku
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmNsZWFyVGFyZ2V0RGVwZW5kZW5jaWVzKCp0aGlzKTsKQEAg
LTk4MSwxMiArOTgxLDEyIEBAIHZvaWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b24KICAgICB9CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBTVkdFbGVtZW50OjppbnNl
cnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJl
bnRPZkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR0Vs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgU3R5bGVkRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAg
ICBTdHlsZWRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24o
KTsKICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwotICAgIHJldHVybiBJbnNl
cnRlZEludG9SZXN1bHQ6OkRvbmU7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0OjpEb25lOwogfQogCiB2b2lkIFNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lm
TmVlZGVkKCkKQEAgLTEwNjMsNyArMTA2Myw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdFbGVtZW50
Ojpsb2NhbENvb3JkaW4KIAogdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICAvLyBJZiB3ZSdyZSBub3QgeWV0IGluIGEgZG9jdW1lbnQsIHRoaXMgZnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQgYWdhaW4gZnJvbSBpbnNlcnRlZEludG8oKS4gRG8gbm90aGluZyBub3cu
CisgICAgLy8gSWYgd2UncmUgbm90IHlldCBpbiBhIGRvY3VtZW50LCB0aGlzIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIGFnYWluIGZyb20gaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoKS4gRG8gbm90aGlu
ZyBub3cuCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSw4IEBAIHBy
b3RlY3RlZDoKIAogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
LCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Ci0gICAgSW5zZXJ0ZWRJbnRvUmVz
dWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJy
aWRlOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9y
KEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCkgeyB1cGRh
dGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCksIHRo
aXMpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxMCArMTUwLDEwIEBAIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1Ob2RlOjpJbnNl
cnRlZEludG9SZXN1bHQgU1ZHRkVJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRpb25U
eXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQor
Tm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHRkVJbWFnZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9k
ZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpOwotICAgIHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlv
bkNhbGxiYWNrOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwor
ICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9u
Q2FsbGJhY2s7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGlu
Z05vZGUoKQpAQCAtMTYxLDkgKzE2MSw5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmRpZEZp
bmlzaEluc2VydGkKICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogfQogCi12b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJl
bW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUm
IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJl
ZSk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpyZW1vdmVkRnJv
bUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAo
cmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQogICAgICAgICBjbGVhclJlc291
cmNlUmVmZXJlbmNlcygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpIG92ZXJyaWRlOwotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlZEZy
b20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92
YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVJbWFnZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsMjIgKzI3MSwyMiBAQCB2b2lkIFNWR0Zv
bnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlCiAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3Bl
KCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7CiB9CiAKLU5vZGU6Okluc2VydGVk
SW50b1Jlc3VsdCBTVkdGb250RmFjZUVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBl
IGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9k
ZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHRm9udEZhY2VFbGVtZW50OjppbnNlcnRl
ZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUm
IHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhp
bnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgU1ZHRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOwog
ICAgIGlmICghaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KSB7CiAgICAgICAgIEFT
U0VSVCghbV9mb250RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6
OkRvbmU7CisgICAgICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsK
ICAgICB9CiAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVnaXN0ZXJTVkdG
b250RmFjZUVsZW1lbnQodGhpcyk7CiAKICAgICByZWJ1aWxkRm9udEZhY2UoKTsKLSAgICByZXR1
cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdDo6RG9uZTsKIH0KIAotdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZlJlbW92
ZWRUcmVlKQordm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVt
b3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWUpCiB7Ci0gICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9m
UmVtb3ZlZFRyZWUpOworICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3Zh
bFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogCiAgICAgaWYgKHJlbW92YWxUeXBlLmRp
c2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkgewogICAgICAgICBtX2ZvbnRFbGVtZW50ID0gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgJKHJldmlzaW9u
IDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKLSAg
ICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWlu
ZXJOb2RlJikgZmluYWw7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAgIHZv
aWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
VXJpRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlVXJpRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMCArODEs
MTAgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbgogICAgICAgICBk
b3duY2FzdDxTVkdGb250RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVudCkucmVidWlsZEZvbnRGYWNl
KCk7CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6
Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUm
IHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
U1ZHRm9udEZhY2VVcmlFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBl
IGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewog
ICAgIGxvYWRGb250KCk7Ci0gICAgcmV0dXJuIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhpbnNl
cnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgcmV0dXJuIFNWR0VsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVl
KTsKIH0KIAogc3RhdGljIGJvb2wgaXNTVkdGb250VGFyZ2V0KGNvbnN0IFNWR0ZvbnRGYWNlVXJp
RWxlbWVudCYgZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VV
cmlFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogICAgIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgZmluYWw7Ci0gICAgSW5zZXJ0ZWRJbnRvUmVzdWx0IGluc2VydGVk
SW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CisgICAgSW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29u
dGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGxvYWRGb250KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjIz
Nzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NiwxNSArMTg2LDE1IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpkaWRBdHRh
Y2hSZW5kZXJlcnMKICAgICB9CiB9CiAKLU5vZGU6Okluc2VydGVkSW50b1Jlc3VsdCBTVkdJbWFn
ZUVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRh
aW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQog
ewotICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBh
cmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBTVkdHcmFwaGljc0VsZW1lbnQ6Omluc2VydGVkSW50
b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICAgICBpZiAo
IWluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIEluc2Vy
dGVkSW50b1Jlc3VsdDo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9y
UmVzdWx0OjpEb25lOwogICAgIC8vIFVwZGF0ZSBpbWFnZSBsb2FkZXIsIGFzIHNvb24gYXMgd2Un
cmUgbGl2aW5nIGluIHRoZSB0cmVlLgogICAgIC8vIFdlIGNhbiBvbmx5IHJlc29sdmUgYmFzZSBV
UklzIHByb3Blcmx5LCBhZnRlciB0aGF0IQogICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVs
ZW1lbnQoKTsKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgIHJldHVy
biBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgZmluYWw7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwot
ICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVk
SW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKIAogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMTIg
Kzg2LDEyIEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpjbGVhclJlc291cmNlUmVmZXIKICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVBbGxUYXJnZXRSZWZlcmVuY2Vz
Rm9yRWxlbWVudCh0aGlzKTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR01QYXRo
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdCBTVkdNUGF0aEVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5
cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7
Ci0gICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKTsKKyAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRp
b25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29u
bmVjdGVkVG9Eb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6TmVl
ZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7Ci0gICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6
RG9uZTsKKyAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bv
c3RJbnNlcnRpb25DYWxsYmFjazsKKyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1
bHQ6OkRvbmU7CiB9CiAKIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdO
b2RlKCkKQEAgLTk5LDEwICs5OSwxMCBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6ZGlkRmluaXNo
SW5zZXJ0aW5nCiAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKIH0KIAotdm9pZCBTVkdNUGF0
aEVsZW1lbnQ6OnJlbW92ZWRGcm9tKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBwYXJlbnRPZlJlbW92ZWRUcmVlKQordm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUpCiB7Ci0gICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20ocmVtb3Zh
bFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOwotICAgIG5vdGlmeVBhcmVudE9mUGF0aENoYW5n
ZSgmcGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgbm90aWZ5UGFy
ZW50T2ZQYXRoQ2hhbmdlKCZvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3Zh
bFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQogICAgICAgICBjbGVhclJlc291cmNlUmVm
ZXJlbmNlcygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkocmV2
aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGJ1aWxk
UGVuZGluZ1Jlc291cmNlKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNl
cygpOwotICAgIEluc2VydGVkSW50b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBp
bnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7
CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JikgZmluYWw7CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksMTYgKzI3OSwxNiBAQCB2
b2lkIFNWR1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBhdGhEZXBlCiAgICAgfQogfQogCi1Ob2Rl
OjpJbnNlcnRlZEludG9SZXN1bHQgU1ZHUGF0aEVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRp
b25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVl
KQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHUGF0aEVsZW1lbnQ6Omluc2Vy
dGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9k
ZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCiB7Ci0gICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNl
cnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIFNWR0dy
YXBoaWNzRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpOwogICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOwotICAg
IHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6OkRvbmU7CisgICAgcmV0dXJuIEluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpyZW1vdmVk
RnJvbShSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1v
dmVkVHJlZSkKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
CiB7Ci0gICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFy
ZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpbnZhbGlk
YXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDggQEAgcHJpdmF0ZToKIAog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKLSAgICBOb2RlOjpJ
bnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJikgZmluYWw7CisgICAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOworICAg
IHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZp
bmFsOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNzk1KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Njcs
NyArNDY3LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1NWR0VsZW1lbnQ6OgogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1NWR0Vs
ZW1lbnQ6Omluc2VydGVkSW50byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JS
ZXN1bHQgU1ZHU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBp
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKICAg
ICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KSB7CiAgICAgICAgIGRvY3Vt
ZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFRpbWVDb250YWluZXIodGhpcyk7CkBAIC00
ODAsMTYgKzQ4MCwxNiBAQCBOb2RlOjpJbnNlcnRlZEludG9SZXN1bHQgU1ZHU1ZHRWxlbWVudDo6
CiAgICAgICAgIGlmICghZG9jdW1lbnQoKS5wYXJzaW5nKCkgJiYgIWRvY3VtZW50KCkucHJvY2Vz
c2luZ0xvYWRFdmVudCgpICYmIGRvY3VtZW50KCkubG9hZEV2ZW50RmluaXNoZWQoKSAmJiAhbV90
aW1lQ29udGFpbmVyLT5pc1N0YXJ0ZWQoKSkKICAgICAgICAgICAgIG1fdGltZUNvbnRhaW5lci0+
YmVnaW4oKTsKICAgICB9Ci0gICAgcmV0dXJuIFNWR0dyYXBoaWNzRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICByZXR1cm4gU1ZH
R3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiB9CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20o
UmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRy
ZWUpCit2b2lkIFNWR1NWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7CiAg
ICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkgewogICAgICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFpbmVyKHRoaXMp
OwogICAgICAgICBwYXVzZUFuaW1hdGlvbnMoKTsKICAgICB9Ci0gICAgU1ZHR3JhcGhpY3NFbGVt
ZW50OjpyZW1vdmVkRnJvbShyZW1vdmFsVHlwZSwgcGFyZW50T2ZSZW1vdmVkVHJlZSk7CisgICAg
U1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlKTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpwYXVzZUFuaW1h
dGlvbnMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIEluc2VydGVkSW50
b1Jlc3VsdCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKKyAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHByZXBhcmVGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmcKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0K
IAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50
byhJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHU2NyaXB0RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBD
b250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBTVkdFbGVtZW50Ojpp
bnNlcnRlZEludG8oaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIFNW
R0VsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKTsKICAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQog
ICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppbnNlcnRlZEludG9Eb2N1bWVu
dCh0aGlzKTsKLSAgICByZXR1cm4gU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlv
blR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICByZXR1cm4gU2NyaXB0RWxlbWVudDo6
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUp
OwogfQogCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAyMjM3OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wg
YWxyZWFkeVN0YXJ0ZWQpOwogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7Ci0gICAgSW5zZXJ0ZWRJbnRvUmVz
dWx0IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Cisg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoSW5zZXJ0
aW5nTm9kZSgpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE3ICsxMTMsMTcgQEAgdm9pZCBTVkdTdHlsZUVs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZAogICAgIFNWR0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpOwogfQogCi1Ob2RlOjpJbnNlcnRlZEludG9SZXN1bHQgU1ZHU3R5bGVFbGVtZW50
OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
IFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CisgICAgYXV0byByZXN1bHQgPSBTVkdFbGVtZW50OjppbnNlcnRl
ZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAg
aWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKICAgICAgICAgbV9zdHlsZVNo
ZWV0T3duZXIuaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKnRoaXMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgU1ZHU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgU1ZHU3R5
bGVFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBD
b250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewotICAgIFNWR0VsZW1lbnQ6
OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBTVkdF
bGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92
ZWRUcmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQog
ICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCp0aGlzKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsOCArNDYsOCBAQCBwcml2YXRlOgogICAgIFNWR1N0eWxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1
bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVy
Tm9kZSYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JikgZmluYWw7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBTVkdU
UmVmRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyYwogICAgIC8vIFJlbW92ZSBhbnkgZXhpc3Rp
bmcgZXZlbnQgbGlzdGVuZXIuCiAgICAgbV90YXJnZXRMaXN0ZW5lci0+ZGV0YWNoKCk7CiAKLSAg
ICAvLyBJZiB3ZSdyZSBub3QgeWV0IGluIGEgZG9jdW1lbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCBi
ZSBjYWxsZWQgYWdhaW4gZnJvbSBpbnNlcnRlZEludG8oKS4KKyAgICAvLyBJZiB3ZSdyZSBub3Qg
eWV0IGluIGEgZG9jdW1lbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWdhaW4gZnJv
bSBpbnNlcnRlZEludG9BbmNlc3RvcigpLgogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yNTYsMTIgKzI1NiwxMiBAQCB2b2lkIFNWR1RSZWZFbGVtZW50Ojpi
dWlsZFBlbmRpbmdSZXNvdXJjCiAgICAgdXBkYXRlUmVmZXJlbmNlZFRleHQodGFyZ2V0LmdldCgp
KTsKIH0KIAotTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1RSZWZFbGVtZW50OjppbnNlcnRl
ZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRP
Zkluc2VydGVkVHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1RSZWZF
bGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUs
IENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIFNWR0VsZW1lbnQ6
Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAg
U1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUpOwogICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6Ok5lZWRzUG9zdEluc2VydGlvbkNh
bGxiYWNrOwotICAgIHJldHVybiBJbnNlcnRlZEludG9SZXN1bHQ6OkRvbmU7CisgICAgICAgIHJl
dHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJh
Y2s7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogfQogCiB2
b2lkIFNWR1RSZWZFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKQEAgLTI2OSw5ICsy
NjksOSBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOCiAgICAgYnVp
bGRQZW5kaW5nUmVzb3VyY2UoKTsKIH0KIAotdm9pZCBTVkdUUmVmRWxlbWVudDo6cmVtb3ZlZEZy
b20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3Zl
ZFRyZWUpCit2b2lkIFNWR1RSZWZFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQog
ewotICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92
ZWRUcmVlKTsKKyAgICBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQogICAgICAgICBtX3RhcmdldExpc3RlbmVyLT5kZXRhY2goKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOCArNDQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKLSAgICBJbnNlcnRlZEludG9SZXN1bHQg
aW5zZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclRh
cmdldCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTAgKzE3MywxMCBAQCB2b2lk
IFNWR1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzCiAgICAgfQogfQogCi1Ob2RlOjpJ
bnNlcnRlZEludG9SZXN1bHQgU1ZHVGV4dFBhdGhFbGVtZW50OjppbnNlcnRlZEludG8oSW5zZXJ0
aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJl
ZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1RleHRQYXRoRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Ci0g
ICAgcmV0dXJuIEluc2VydGVkSW50b1Jlc3VsdDo6TmVlZHNQb3N0SW5zZXJ0aW9uQ2FsbGJhY2s7
CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRp
b25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgcmV0dXJuIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKIH0KIAogdm9pZCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQpAQCAtMTg0LDkgKzE4NCw5
IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnQKICAgICBidWlsZFBl
bmRpbmdSZXNvdXJjZSgpOwogfQogCi12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cmVtb3ZlZEZy
b20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3Zl
ZFRyZWUpCit2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1v
dmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSkKIHsKLSAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBl
LCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogICAg
IGlmIChyZW1vdmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpCiAgICAgICAgIGNsZWFy
UmVzb3VyY2VSZWZlcmVuY2VzKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCShyZXZpc2lvbiAyMjM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIAogICAgIHZvaWQgYnVp
bGRQZW5kaW5nUmVzb3VyY2UoKSBvdmVycmlkZTsKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5z
ZXJ0ZWRJbnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlbW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb21B
bmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNWR1RpdGxlRWxl
bWVudD4gU1ZHVGl0bGVFbGVtZW50OjpjcgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1Rp
dGxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1Ob2RlOjpJbnNlcnRlZEludG9S
ZXN1bHQgU1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSBpbnNlcnRp
b25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKK05vZGU6Okluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0
b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZklu
c2VydGVkVHJlZSkKIHsKLSAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uVHlw
ZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKGluc2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKICAgICBkb2N1bWVu
dCgpLnRpdGxlRWxlbWVudEFkZGVkKCp0aGlzKTsKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVz
dWx0OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsK
IH0KIAotdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKFJlbW92YWxUeXBlIHJlbW92
YWxUeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZlJlbW92ZWRUcmVlKQordm9pZCBTVkdUaXRs
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7Ci0gICAgU1ZHRWxlbWVudDo6
cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIFNWR0Vs
ZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUpOwogICAgIGRvY3VtZW50KCkudGl0bGVFbGVtZW50UmVtb3ZlZCgqdGhpcyk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHJldmlzaW9uIDIyMzc5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsOCArMzIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1RpdGxlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIEluc2VydGVkSW50b1Jlc3Vs
dCBpbnNlcnRlZEludG8oSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwotICAg
IHZvaWQgcmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKKyAg
ICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFuY2Vz
dG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKIAogICAgIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM3OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCwyMCArMTA0LDIwIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QK
ICAgICBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAot
Tm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50byhJbnNl
cnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRU
cmVlKQorTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHVXNlRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKIHsKLSAgICBTVkdHcmFwaGljc0VsZW1lbnQ6Omlu
c2VydGVkSW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1
bWVudCkgewogICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppbnNlcnRlZElu
dG9Eb2N1bWVudCh0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICAg
ICAgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwogICAgIH0KLSAgICByZXR1cm4gSW5zZXJ0ZWRJ
bnRvUmVzdWx0OjpEb25lOworICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6
RG9uZTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1vdmFsVHlwZSBy
ZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZSZW1vdmVkVHJlZSkKK3ZvaWQgU1ZH
VXNlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKLSAgICBTVkdHcmFwaGlj
c0VsZW1lbnQ6OnJlbW92ZWRGcm9tKHJlbW92YWxUeXBlLCBwYXJlbnRPZlJlbW92ZWRUcmVlKTsK
KyAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUs
IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogICAgIGNsZWFyU2hhZG93VHJlZSgpOwogICAgIHVw
ZGF0ZUV4dGVybmFsRG9jdW1lbnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRlOgogICAgIFNWR1Vz
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnNlcnRlZEludG9SZXN1bHQgaW5zZXJ0ZWRJ
bnRvKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
bW92ZWRGcm9tKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5z
ZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlw
ZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3Rv
cihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYnVpbGRQ
ZW5kaW5nUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIyMzc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTEgKzI1MiwxMSBAQCB2b2lkIFNW
R1NNSUxFbGVtZW50OjpyZXNldCgpCiAgICAgcmVzb2x2ZUZpcnN0SW50ZXJ2YWwoKTsKIH0KIAot
Tm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG8oSW5z
ZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVk
VHJlZSkKK05vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1NNSUxFbGVtZW50Ojpp
bnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKQogewotICAgIFNWR0VsZW1lbnQ6Omluc2VydGVk
SW50byhpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CisgICAgU1ZHRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRy
ZWUpOwogICAgIGlmICghaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQotICAgICAg
ICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAgICAgICByZXR1cm4gSW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiAKICAgICAvLyBWZXJpZnkgd2UgYXJlIG5vdCBp
biA8dXNlPiBpbnN0YW5jZSB0cmVlLgogICAgIEFTU0VSVCghaXNJblNoYWRvd1RyZWUoKSk7CkBA
IC0yNjUsNyArMjY1LDcgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvUmVzdWx0IFNWR1NNSUxFbGVtZW50
OgogCiAgICAgU1ZHU1ZHRWxlbWVudCogb3duZXIgPSBvd25lclNWR0VsZW1lbnQoKTsKICAgICBp
ZiAoIW93bmVyKQotICAgICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpEb25lOworICAg
ICAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CiAKICAgICBtX3Rp
bWVDb250YWluZXIgPSAmb3duZXItPnRpbWVDb250YWluZXIoKTsKICAgICBtX3RpbWVDb250YWlu
ZXItPnNldERvY3VtZW50T3JkZXJJbmRleGVzRGlydHkoKTsKQEAgLTI4MCw3ICsyODAsNyBAQCBO
b2RlOjpJbnNlcnRlZEludG9SZXN1bHQgU1ZHU01JTEVsZW1lbnQ6CiAgICAgaWYgKG1fdGltZUNv
bnRhaW5lcikKICAgICAgICAgbV90aW1lQ29udGFpbmVyLT5ub3RpZnlJbnRlcnZhbHNDaGFuZ2Vk
KCk7CiAKLSAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvUmVzdWx0OjpOZWVkc1Bvc3RJbnNlcnRpb25D
YWxsYmFjazsKKyAgICByZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6Ok5lZWRzUG9z
dEluc2VydGlvbkNhbGxiYWNrOwogfQogCiB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaWRGaW5pc2hJ
bnNlcnRpbmdOb2RlKCkKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpk
aWRGaW5pc2hJbnNlcnRpbmdOCiAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKIH0KIAotdm9p
ZCBTVkdTTUlMRWxlbWVudDo6cmVtb3ZlZEZyb20oUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUpCit2b2lkIFNWR1NNSUxFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQogewogICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25u
ZWN0ZWRGcm9tRG9jdW1lbnQpIHsKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsK
QEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpyZW1vdmVkRnJvbShSZW1v
dmFsCiAgICAgICAgIG1fdGltZUNvbnRhaW5lciA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgU1ZH
RWxlbWVudDo6cmVtb3ZlZEZyb20ocmVtb3ZhbFR5cGUsIHBhcmVudE9mUmVtb3ZlZFRyZWUpOwor
ICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOwogfQogCiBib29sIFNWR1NNSUxFbGVtZW50OjpoYXNWYWxpZEF0dHJp
YnV0ZU5hbWUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuaAkocmV2aXNpb24gMjIzNzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgSW5zZXJ0ZWRJbnRvUmVzdWx0
IGluc2VydGVkSW50byhJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZW1vdmVkRnJvbShSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRl
OworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZU5hbWUoKTsK
</data>
<flag name="review"
          id="344084"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>