<?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>186241</bug_id>
          
          <creation_ts>2018-06-02 18:24:20 -0700</creation_ts>
          <short_desc>[JSC] Pass VM&amp; to functions more</short_desc>
          <delta_ts>2018-06-26 22:03:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1429628</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-02 18:24:20 -0700</bug_when>
    <thetext>[JSC] Pass VM&amp; to functions more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429629</commentid>
    <comment_count>1</comment_count>
      <attachid>341859</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-02 18:25:23 -0700</bug_when>
    <thetext>Created attachment 341859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429641</commentid>
    <comment_count>2</comment_count>
      <attachid>341863</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-03 06:49:05 -0700</bug_when>
    <thetext>Created attachment 341863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436798</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-26 19:05:28 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436799</commentid>
    <comment_count>4</comment_count>
      <attachid>343675</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-26 19:09:13 -0700</bug_when>
    <thetext>Created attachment 343675
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436834</commentid>
    <comment_count>5</comment_count>
      <attachid>343675</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-26 21:23:24 -0700</bug_when>
    <thetext>Comment on attachment 343675
Patch

r=me if the EWS bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436836</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-26 21:28:34 -0700</bug_when>
    <thetext>OK, mac-wk2, mac-debug, jsc-mips, and gtk-wk2 passes. I&apos;ll land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436848</commentid>
    <comment_count>7</comment_count>
      <attachid>343675</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-26 22:01:36 -0700</bug_when>
    <thetext>Comment on attachment 343675
Patch

Clearing flags on attachment: 343675

Committed r233245: &lt;https://trac.webkit.org/changeset/233245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436849</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-26 22:01:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436851</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-26 22:03:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/41507432&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341859</attachid>
            <date>2018-06-02 18:25:23 -0700</date>
            <delta_ts>2018-06-03 06:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186241-20180603102522.patch</filename>
            <type>text/plain</type>
            <size>48936</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmI5OGI1ZTAzNDRhZjQyNTE3NTc0OTI2ZTE0N2IyMWRmOTkxMmY5Li5kYzUxNTNmZmFlZTJmNGFj
OWJkMGQyY2M5YmRiOWUxMmExOGIyMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOC0wNi0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQYXNzIFZNJiB0byBmdW5jdGlvbnMgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB0aHJl
YWRzIFZNJiB0byBmdW5jdGlvbnMgcmVxdWlyaW5nIFZNJiBtb3JlLgorCisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0SXNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6Omluc3RhbGwpOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAg
KEpTQzo6V2F0Y2hwb2ludDo6ZmlyZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmZp
cmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAg
ICAgICAqIGRmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRBZGFwdG9y
OjphZGQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUlu
aXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBl
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAg
ICogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNsb3cp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6Om1ldGhvZFRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ6Ok9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFs
dWUpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6Ok9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6
CisKIDIwMTgtMDYtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgQmFzZWxpbmUgb3BfanRydWUgZW1pdHMgYW4gaW5zYW5lIGFtb3VudCBvZiBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4MGEwNzBi
N2FiNjk4ZmI0OGE3MTBkZTVhNzYzMzk1YmI0OWIyMDcuLjJlMzYyMzgyZDU5YmYzNTU2MDgxMjYy
MWIzODZkYzIwMGViYjM0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCkBAIC02MzAsOSArNjMwLDcgQEAgYm9vbCBKU09iamVjdElzQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIodm0pOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwotICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKLSAgICByZXR1cm4ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3Ry
dWN0RGF0YShqc09iamVjdCwgY29uc3RydWN0RGF0YSkgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZTsK
KyAgICByZXR1cm4gdG9KUyhvYmplY3QpLT5pc0NvbnN0cnVjdG9yKHZtKTsKIH0KIAogSlNPYmpl
Y3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAKaW5kZXggM2YwMmQ0ZjM5Mjg5YjdkZjA4
NDQyYWU0Mjk5Y2U5MDBiZDlkMzQwNC4uYjI2ZmJmNmFjYzg2M2EyYWRmZTUyMDFiYjYyZWRlYjIy
MDdiYmQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcApAQCAtMzYsMTggKzM2LDIwIEBAIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2U6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
CiAgICAgUkVMRUFTRV9BU1NFUlQoa2V5LmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1
aXZhbGVuY2UpOwogfQogCi12b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6Omluc3RhbGwoKQordm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlOjppbnN0YWxsKFZNJiB2bSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2tl
eS5pc1dhdGNoYWJsZSgpKTsKIAotICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+YWRk
VHJhbnNpdGlvbldhdGNocG9pbnQoJm1fc3RydWN0dXJlV2F0Y2hwb2ludCk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKIAotICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+Z2V0Q29u
Y3VycmVudGx5KG1fa2V5LnVpZCgpKTsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBtX2tleS5v
YmplY3QoKS0+c3RydWN0dXJlKCktPnByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KG9m
ZnNldCk7CisgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCgmbV9zdHJ1Y3R1
cmVXYXRjaHBvaW50KTsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0Q29uY3VycmVudGx5KG1fa2V5LnVpZCgpKTsKKyAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBz
dHJ1Y3R1cmUtPnByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KG9mZnNldCk7CiAgICAg
c2V0LT5hZGQoJm1fcHJvcGVydHlXYXRjaHBvaW50KTsKIH0KIAotdm9pZCBBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRl
dGFpbCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6
ZmlyZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAgICAvLyBPbmUgb2Yg
dGhlIHdhdGNocG9pbnRzIGZpcmVkLCBidXQgdGhlIG90aGVyIG9uZSBkaWRuJ3QuIE1ha2Ugc3Vy
ZSB0aGF0IG5laXRoZXIgb2YgdGhlbSBhcmUKICAgICAvLyBpbiBhbnkgc2V0IGFueW1vcmUuIFRo
aXMgc2ltcGxpZmllcyB0aGluZ3MgYnkgYWxsb3dpbmcgdXMgdG8gcmVpbnN0YWxsIHRoZSB3YXRj
aHBvaW50cwpAQCAtNjEsMTEgKzYzLDExIEBAIHZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZTo6ZmlyZShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlv
bjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICBpbnN0YWxsKCk7CisgICAgICAgIGlu
c3RhbGwodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlRmlyZShkZXRh
aWwpOworICAgIGhhbmRsZUZpcmUodm0sIGRldGFpbCk7CiB9CiAKIGJvb2wgQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aXNWYWxpZCgpIGNvbnN0CkBAIC03Mywy
MiArNzUsMjIgQEAgYm9vbCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQordm9pZCBBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgcHRy
ZGlmZl90IG15T2Zmc2V0ID0gT0JKRUNUX09GRlNFVE9GKEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UsIG1fc3RydWN0dXJlV2F0Y2hwb2ludCk7CiAKICAgICBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKiBwYXJlbnQgPSBiaXR3aXNl
X2Nhc3Q8QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSo+KGJpdHdp
c2VfY2FzdDxjaGFyKj4odGhpcykgLSBteU9mZnNldCk7CiAKLSAgICBwYXJlbnQtPmZpcmUoZGV0
YWlsKTsKKyAgICBwYXJlbnQtPmZpcmUodm0sIGRldGFpbCk7CiB9CiAKLXZvaWQgQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQordm9pZCBBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpQcm9wZXJ0eVdhdGNocG9pbnQ6OmZpcmVJ
bnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAgICBwdHJkaWZm
X3QgbXlPZmZzZXQgPSBPQkpFQ1RfT0ZGU0VUT0YoQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZSwgbV9wcm9wZXJ0eVdhdGNocG9pbnQpOwogCiAgICAgQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSogcGFyZW50ID0gYml0d2lzZV9jYXN0
PEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpIC0gbXlPZmZzZXQpOwogICAgIAotICAgIHBhcmVudC0+ZmlyZShkZXRh
aWwpOworICAgIHBhcmVudC0+ZmlyZSh2bSwgZGV0YWlsKTsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLmgKaW5kZXggOThlMzM4MTkzNzhmNTdkMzZhY2UxNjI0ZWJjODBiNWIzNDlmMjU4Ny4uNTBk
ODRiYTg4OGQ1MWI5MjkyMDM3ZjExNDRlNDg2YmRiZGUyZTJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oCkBAIC00MSwyOSArNDEsMjkg
QEAgY2xhc3MgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiAK
ICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkgY29uc3QgeyByZXR1cm4g
bV9rZXk7IH0KIAotICAgIHZvaWQgaW5zdGFsbCgpOworICAgIHZvaWQgaW5zdGFsbChWTSYpOwog
CiAgICAgdmlydHVhbCB+QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZSgpID0gZGVmYXVsdDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSA9
IDA7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBX
YXRjaHBvaW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZVdhdGNocG9pbnQoKSB7
IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVE
ZXRhaWwmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBG
aXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgfTsKICAgICBjbGFzcyBQcm9wZXJ0eVdhdGNocG9p
bnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAgICBQcm9wZXJ0eVdh
dGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmlyZUludGVybmFs
KGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwo
Vk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgfTsKIAotICAgIHZvaWQgZmly
ZShjb25zdCBGaXJlRGV0YWlsJik7CisgICAgdm9pZCBmaXJlKFZNJiwgY29uc3QgRmlyZURldGFp
bCYpOwogCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CiAgICAgU3RydWN0dXJl
V2F0Y2hwb2ludCBtX3N0cnVjdHVyZVdhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQuY3BwCmluZGV4IDUwY2Y3Mzc4ZGYzYzBjOGVlZjEzY2YzMjQ4MTlhYjdiZjJiZTAyMjcu
LmM5NmQ1YTRkM2YyYzA2MTZiMThiNThmYzYwZTgwNjVhNGVhMGJhNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi12b2lkIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50OjpmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAg
aWYgKERGRzo6c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIkZpcmlu
ZyB3YXRjaHBvaW50ICIsIFJhd1BvaW50ZXIodGhpcyksICIgb24gIiwgKm1fY29kZUJsb2NrLCAi
XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaAppbmRleCA2MzVjZDc4Y2FhNjJhNjY2
ZDg4ZWQzZWM4MDc5Y2UzYmMwY2U5MDFiLi42MTAyNjFmNmE1NThjNTJlZmQwNjJmZjIxM2QyZDUy
Y2RjOGVlMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBv
aW50IHsKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaXJlSW50ZXJuYWwoY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwCmluZGV4IGQ2Y2MyMmQ1MTUwZGY4ZWNkYjhiYjhhMzVjNWFjZDJjNTdm
NzFlNTAuLmVlY2Q4ZmJjNTlhMzdlYWM5MmFmOGFiODA4ODc5N2U4ZjEwZmIzMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
CkBAIC00MCwxNyArNDAsMTcgQEAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHUKICAgICBSRUxFQVNF
X0FTU0VSVCgha2V5LndhdGNoaW5nUmVxdWlyZXNSZXBsYWNlbWVudFdhdGNocG9pbnQoKSk7CiB9
CiAKLXZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpp
bnN0YWxsKCkKK3ZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50OjppbnN0YWxsKFZNJiB2bSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNo
YWJsZSgpKTsKIAotICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlv
bldhdGNocG9pbnQodGhpcyk7CisgICAgbV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPmFk
ZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOwogfQogCi12b2lkIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRh
aWwmKQordm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogewogICAgIGlmIChtX2tl
eS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewot
ICAgICAgICBpbnN0YWxsKCk7CisgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmgKaW5kZXggNjY0NjhmMGVmODQ1YmMzYjdmNjU0OWQwZWRkYjM1MDM4ZDM1OGVi
MC4uZTBlMWJlOGQwNzA1N2JkNmI2MTFmOGE1MzkxZDVkODdiMmEzMmQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzYs
MTIgKzM2LDEyIEBAIGNsYXNzIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoKSA9IGRlZmF1bHQ7CiAgICAgTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiwgSW5zdHJ1Y3Rpb24qKTsKIAotICAgIHZvaWQgaW5zdGFsbCgpOworICAgIHZvaWQgaW5z
dGFsbChWTSYpOwogCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRlcm5h
bChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0m
LCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gbV9rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAK
aW5kZXggM2JkNDQ1MzJjZDEzMWVmZDY2Nzg3NzQyODdjMGM5ZWYzMWI0NGE3ZC4uNzgxNjM1Nzli
ODc4MTI3MWVhNGExNmQ2MTc3YTg0MGE5ODAwNTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpwdXNoKAogICAgIHJldHVy
biBoZWFkLmdldCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6
OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikKK3ZvaWQgU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCiB7
CiAgICAgaWYgKCFtX2tleSB8fCAhbV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246
OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIGltcGxpY2l0bHkg
Y2F1c2UgbXkgb3duIGRlbWlzZTogc3R1YiByZXNldCByZW1vdmVzIGFsbCB3YXRjaHBvaW50cy4K
QEAgLTU5LDcgKzU5LDYgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBWTSYgdm0gPSAqbV9rZXkub2JqZWN0KCktPnZtKCk7CiAgICAgaWYgKG1fa2V5LmtpbmQo
KSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpIHsKICAgICAgICAgLy8gSWYgdGhpcyB3
YXMgYSBwcmVzZW5jZSBjb25kaXRpb24sIGxldCdzIHdhdGNoIHRoZSBwcm9wZXJ0eSBmb3IgcmVw
bGFjZW1lbnRzLiBUaGlzIGlzIHByb2ZpdGFibGUKICAgICAgICAgLy8gZm9yIHRoZSBERkcsIHdo
aWNoIHdpbGwgd2FudCB0aGUgcmVwbGFjZW1lbnQgc2V0IHRvIGJlIHZhbGlkIGluIG9yZGVyIHRv
IGRvIGNvbnN0YW50IGZvbGRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAppbmRl
eCA2NjVjNTZhOTg2ZjBmNmM1MGE1NGUwMzBhODQ5NzA3NWI0ZmY2YTk0Li4zYzBhN2ZiNGQ2MTI2
MTU4MTFhYjMzOWI4Y2E5NTYyOGJkYzUxMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+JiBoZWFkKTsKIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
cmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBtX2tleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAppbmRleCA3YWIzODVmNTg1Y2M5MDMxYzQ2ZGU1
YTkwNjFjZGZiYThmMjA0Zjg5Li5iMTlhZGI0ZWJjMDMwMDI3NmI3NWM5YWVlMDdjYjVmMjg3YzZj
ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3Bw
CkBAIC00OSwxMCArNDksMTAgQEAgV2F0Y2hwb2ludDo6fldhdGNocG9pbnQoKQogICAgIH0KIH0K
IAotdm9pZCBXYXRjaHBvaW50OjpmaXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQg
V2F0Y2hwb2ludDo6ZmlyZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghaXNPbkxpc3QoKSk7Ci0gICAgZmlyZUludGVybmFsKGRldGFpbCk7
CisgICAgZmlyZUludGVybmFsKHZtLCBkZXRhaWwpOwogfQogCiBXYXRjaHBvaW50U2V0OjpXYXRj
aHBvaW50U2V0KFdhdGNocG9pbnRTdGF0ZSBzdGF0ZSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lk
IFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRh
aWwmIGRldGFpbCkKICAgICAgICAgQVNTRVJUKG1fc2V0LmJlZ2luKCkgIT0gd2F0Y2hwb2ludCk7
CiAgICAgICAgIEFTU0VSVCghd2F0Y2hwb2ludC0+aXNPbkxpc3QoKSk7CiAgICAgICAgIAotICAg
ICAgICB3YXRjaHBvaW50LT5maXJlKGRldGFpbCk7CisgICAgICAgIHdhdGNocG9pbnQtPmZpcmUo
dm0sIGRldGFpbCk7CiAgICAgICAgIC8vIEFmdGVyIHdlIGZpcmUgdGhlIHdhdGNocG9pbnQsIHRo
ZSB3YXRjaHBvaW50IHBvaW50ZXIgbWF5IGJlIGEgZGFuZ2xpbmcgcG9pbnRlci4gVGhhdCdzCiAg
ICAgICAgIC8vIGZpbmUsIGJlY2F1c2Ugd2UgaGF2ZSBubyB1c2UgZm9yIHRoZSBwb2ludGVyIGFu
eW1vcmUuCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmgKaW5kZXggNDQ3NmUyYTdiNTEzNWVhN2RiY2YyZWM2ODhjNzM5N2I3MjkwMGUwMS4uZjgyZTAy
YmIxNmMwNzMwODMzN2E1ZjdlOGFkMDZhMWM4YzVhZTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBWTTsKKwogY2xhc3MgRmlyZURldGFpbCB7CiAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCkgPSBkZWxldGU7CiAgICAgCkBAIC03MywxMSArNzUsMTEgQEAgY2xh
c3MgV2F0Y2hwb2ludCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiB7
CiAgICAgdmlydHVhbCB+V2F0Y2hwb2ludCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgPSAwOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBXYXRjaHBvaW50U2V0OwotICAgIHZvaWQgZmlyZShjb25zdCBGaXJl
RGV0YWlsJik7CisgICAgdm9pZCBmaXJlKFZNJiwgY29uc3QgRmlyZURldGFpbCYpOwogfTsKIAog
ZW51bSBXYXRjaHBvaW50U3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnQuY3BwCmluZGV4IDIwN2IyZmNlY2FmNDQxMmZhY2JmMWRhMmIyMmI0MTgxMjk3NGQz
NTUuLmMwOTI3YzA4YjMyZWVhZGJlNDFhMTMyNmFiNGY1YzZmNjNiZmZkZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnQKIHsKIH0KIAotdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWls
KQordm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgaWYgKERGRzo6c2hvdWxk
RHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIkZpcmluZyB3YXRjaHBvaW50ICIs
IFJhd1BvaW50ZXIodGhpcyksICIgKCIsIGtleSgpLCAiKSBvbiAiLCAqbV9jb2RlQmxvY2ssICJc
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgKaW5kZXggMDg5
Y2NhNmM3MTM2Y2Q1OTcwYjY4MjM1YThjZTM1NTNkNDE4YzhmYi4uNjE5OWE3MDhkZTc2ZmY3ZDgy
OGYyZDU1Nzg2NzQwYTQ2NDFkNDA0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWCiAg
ICAgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiwgQ29kZUJsb2NrKik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5k
bGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUZpcmUo
Vk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAwODU0YzU2YjA3NjQzNjVm
NjBjMDIyYmIwZWIyMTc4NGNhYTNmMzdiLi4wNmJmNmI4OTQzOTExMzgyODRlMDgwZDU2ZmRlNjJh
MDFhZDUxNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC00MywxNyArNDMsMTcgQEAg
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQo
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWtleS53YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRj
aHBvaW50KCkpOwogfQogCi12b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFs
bCgpCit2b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CiAgICAgCi0gICAgbV9r
ZXkub2JqZWN0KCktPnN0cnVjdHVyZSgpLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsK
KyAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9p
bnQodGhpcyk7CiB9CiAKLXZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50
ZXJuYWwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQordm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkK
IHsKICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdh
dGNoYWJpbGl0eSkpIHsKLSAgICAgICAgaW5zdGFsbCgpOworICAgICAgICBpbnN0YWxsKHZtKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IDQw
ZmNjMTAwOWYzZmQ2MGI1NjBmZDA3MDQ5MWMwYTUwMGUyN2VjN2MuLmMxZjU3NGY1MzM5MjZkNDMw
N2IyZGUzMDZkNTM3ZjEwYmI3ZGU0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMzgsMTAg
KzM4LDEwIEBAIGNsYXNzIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRj
aHBvaW50IHsKICAgICAKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9rZXk7IH0KICAgICAKLSAgICB2b2lkIGluc3RhbGwoKTsKKyAgICB2
b2lkIGluc3RhbGwoVk0mKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNv
bnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBtX2tleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCA4NGJhMmRmYWMyMjZlN2VhMGRkYmM0ZTE3ZmY5
ZTlkZTY3MGNjMzkwLi4xNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0Y2JhYjcxODhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwCkBAIC01OCwxMiArNTgsMTMgQEAgdm9pZCBJbmZlcnJlZFZhbHVlQWRhcHRvcjo6YWRk
KAogdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRBZGFwdG9yOjphZGQoCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIENv
bW1vbkRhdGEmIGNvbW1vbikKIHsKKyAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAg
IHN3aXRjaCAoa2V5LmtpbmQoKSkgewogICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OkVxdWl2
YWxlbmNlOgotICAgICAgICBjb21tb24uYWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50cy5hZGQoa2V5LCBjb2RlQmxvY2spLT5pbnN0YWxsKCk7CisgICAgICAgIGNvbW1vbi5h
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRzLmFkZChrZXksIGNvZGVCbG9j
ayktPmluc3RhbGwodm0pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBj
b21tb24uYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50cy5hZGQoa2V5LCBjb2RlQmxvY2spLT5p
bnN0YWxsKCk7CisgICAgICAgIGNvbW1vbi5hZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzLmFk
ZChrZXksIGNvZGVCbG9jayktPmluc3RhbGwodm0pOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBjOGQzZTQ3MTRjZWZkOTI0OWZlYjk4ODVmMDVmY2Y2OGI2OTVlNTIwLi5iMTBmMDA3MzJjYzE2
NmI0NDY0Zjk0NjY0OTQ0YTQ5OWVjNjc3Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgdm9p
ZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSW5z
dHJ1Y3Rpb24qIHBjLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoY29uZGl0aW9u
LmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpCiAgICAg
ICAgICAgICBvZmZzZXQgPSBjb25kaXRpb24uY29uZGl0aW9uKCkub2Zmc2V0KCk7Ci0gICAgICAg
IHdhdGNocG9pbnRzLmFkZChjb25kaXRpb24sIHBjKS0+aW5zdGFsbCgpOworICAgICAgICB3YXRj
aHBvaW50cy5hZGQoY29uZGl0aW9uLCBwYyktPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIEFT
U0VSVCgob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpID09IHNsb3QuaXNVbnNldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBk
ODVmNzEwNmZjZTBiYmRjOThlN2YyZjJmY2U5MDJjZTRiYjg5N2M4Li5lNWZkODcyNzMxZTdkZWMz
NGVmZjMzYWI5NmFhYWYzODViMGZhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpTT2JqZWN0Kj4g
c3BlY2llc0NvbnN0cnUKIAogICAgICAgICBjb25zdHJ1Y3RvciA9IHRoaXNPYmplY3QtPmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvcik7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKLSAgICAgICAgaWYgKGNvbnN0cnVj
dG9yLmlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICBpZiAoY29uc3RydWN0b3IuaXNDb25zdHJ1
Y3Rvcih2bSkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvck9iamVjdCA9IGpz
Q2FzdDxKU09iamVjdCo+KGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAgIGlmIChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkgIT0gY29uc3RydWN0b3JPYmplY3QtPmdsb2JhbE9iamVjdCh2bSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNpZXNDb25zdHJ1Y3RS
ZXN1bHQ6OkZhc3RQYXRoLCBudWxscHRyKTs7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBjbGFzcyBB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQgOiBwdWJsaWMg
QWRhcHRpdmVJbmZlcnJlZAogICAgIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5V2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIEFycmF5UHJvdG90
eXBlKik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikg
b3ZlcnJpZGU7CiAKICAgICBBcnJheVByb3RvdHlwZSogbV9hcnJheVByb3RvdHlwZTsKIH07CkBA
IC0xNDk2LDEwICsxNDk2LDEwIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVT
cGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgbV9jb25zdHJ1
Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5UHJvdG90eXBlQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4oY29uc3RydWN0b3JDb25kaXRpb24sIHRoaXMpOwot
ICAgIG1fY29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgbV9jb25zdHJ1Y3Rv
cldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCiAgICAgbV9jb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVdhdGNocG9pbnQ+KHNwZWNpZXNDb25kaXRpb24sIHRoaXMpOwotICAgIG1fY29uc3Ry
dWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgIG1fY29uc3RydWN0b3JTcGVj
aWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKICAgICAvLyBXZSBvbmx5IHdhdGNoIHRoaXMg
ZnJvbSB0aGUgREZHLCBhbmQgdGhlIERGRyBtYWtlcyBzdXJlIHRvIG9ubHkgc3RhcnQgd2F0Y2hp
bmcgaWYgdGhlIHdhdGNocG9pbnQgaXMgaW4gdGhlIElzV2F0Y2hlZCBzdGF0ZS4KICAgICBSRUxF
QVNFX0FTU0VSVCghZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuaXNCZWlu
Z1dhdGNoZWQoKSk7IApAQCAtMTUxMiw3ICsxNTEyLDcgQEAgQXJyYXlQcm90b3R5cGVBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJy
ZWQKIHsKIH0KIAotdm9pZCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdh
dGNocG9pbnQ6OmhhbmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQordm9pZCBBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUo
Vk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJl
YW0gb3V0OwogICAgIG91dC5wcmludCgiQXJyYXlQcm90b3R5cGUgYWRhcHRpb24gb2YgIiwga2V5
KCksICIgZmFpbGVkOiAiLCBkZXRhaWwpOwpAQCAtMTUyMiw4ICsxNTIyLDggQEAgdm9pZCBBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUo
Y29uc3QgRmlyZURldGEKICAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgV1RGOjpkYXRhTG9nKHN0cmluZ0RldGFpbCwgIlxuIik7CiAKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9hcnJheVByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuZmlyZUFsbChnbG9i
YWxPYmplY3QtPnZtKCksIHN0cmluZ0RldGFpbCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fYXJyYXlQcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgZ2xvYmFs
T2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuZmlyZUFsbCh2bSwgc3RyaW5nRGV0YWls
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
Y3BwCmluZGV4IDAxMWUwOGYyNDU4NzMwMjA0NjFjNmI1YjcwODllMzYyZTNjYjc5MDEuLmIzMDQ2
NjA1OWFlNjU1M2Q3ZGY1YmJmMTk3ZWNlYjA2MmVlMmMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLmlzQ29uc3RydWN0b3IoKTsKKyAgICBib29sIGlzQ29uc3RydWN0b3IgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9yKGV4ZWMtPnZtKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQ29uc3RydWN0b3IpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAppbmRleCAx
MjUyYWE4NGIzMDFlYjdmNmQwZDliYTMxMTBiYTRiNTFlMjk0NmNhLi5iYWRkNDFmMjY1MzYzZTU5
MjE4MzhjYzc2YTA0MTA1NDdmZDVmMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEZ1
bmN0aW9uUmFyZURhdGE6OmNsZWFyKGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICBtX29iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5maXJlQWxsKCp2bSgpLCByZWFzb24pOwogfQogCi12
b2lkIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpCit2b2lkIEZ1bmN0aW9uUmFyZURhdGE6
OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikKIHsKICAgICBtX3JhcmVEYXRhLT5jbGVhcigiQWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmlyZWQuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggMmM1NGVlZGQ2ZjI5Yjgy
MmIzNTRkNzc5MTBiZmE1N2IxZDk5NGYwMy4uZjRmMDI3NWY3OGYzNWY4NGVmMDgxNzVhODQ2YThj
NDI4YWU1NWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuaApAQCAtMTIyLDcgKzEyMiw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIDogbV9yYXJlRGF0YShyYXJlRGF0
YSkKICAgICAgICAgeyB9CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpcmVJbnRlcm5h
bChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZmlyZUludGVybmFs
KFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogICAgIHByaXZhdGU6CiAgICAgICAg
IEZ1bmN0aW9uUmFyZURhdGEqIG1fcmFyZURhdGE7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwCmluZGV4IGQzOWU4NmMxMDFmMDMzMzQxNTNhODVkYjIzYWNmMTJkNjEwNGZlOWIuLjNh
OGExYmExMmYyNDI3ZWFiZTI1MjY4MDUxZTU3MWJjYTRjNTMwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRj
aHBvaW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBJ
bmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWls
JikKK3ZvaWQgSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZt
LCBjb25zdCBGaXJlRGV0YWlsJikKIHsKICAgICBJbmZlcnJlZFN0cnVjdHVyZSogaW5mZXJyZWRT
dHJ1Y3R1cmUgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8SW5mZXJyZWRTdHJ1Y3R1cmUqPigKQEAg
LTQxLDcgKzQxLDcgQEAgdm9pZCBJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRl
cm5hbChjb25zdCBGaXJlRGV0YWlsJikKICAgICBpZiAoIWluZmVycmVkVHlwZS0+aXNMaXZlKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbmZlcnJlZFR5cGUtPnJlbW92ZVN0cnVjdHVy
ZSgqaW5mZXJyZWRUeXBlLT52bSgpKTsKKyAgICBpbmZlcnJlZFR5cGUtPnJlbW92ZVN0cnVjdHVy
ZSh2bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRl
eCBjMTk1MjNjOWUxMjdkNjA0ODM5YzVjYTE1YzM0ZGYzZWZhNjAzZmU5Li42MjlkMDg5ZjU0OTc3
ODFlNDU3OTUyNDE2ZTJhNDFhYjBhYzg3MWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSW5mZXJyZWRTdHJ1Y3R1cmVX
YXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgewogcHJvdGVjdGVkOgotICAgIHZvaWQgZmly
ZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpcmVJbnRl
cm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAppbmRleCA3M2I1MzEzZDFhZGRkMTU0MDVjMGUyYjU4ODRiNzZkZWUwMzZjMTc0
Li41NGRjZWJhN2QwOWMyZDE5NmQyMzcyZjRkNmQ4N2IzM2ViYjRiMTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMTE1
LDcgKzExNSw3IEBAIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
QVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSk7CisgICAgQVNT
RVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0pKTsKICAgICBBU1NF
UlQobmV3VGFyZ2V0ICYmIG5ld1RhcmdldCAhPSBleGVjLT5qc0NhbGxlZSgpKTsKIAogICAgIEFT
U0VSVChiYXNlQ2xhc3MtPmhhc01vbm9Qcm90bygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCAyZGM1ZjI1ODljNmFkMDlmZGQx
YWNmYzJjOTE5YTA5OGIwMmI0ZGUyLi4yNDRjNGY3MmE4ZjY3ODNjYWRiMDRjMmY1ZDQxODdmOGQ5
YTFkOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCkBAIC05OCw3ICs5OCw3IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShFeGVjU3RhdGUqIGV4CiB7CiAg
ICAgLy8gV2UgYWxsb3cgbmV3VGFyZ2V0ID09IEpTVmFsdWUoKSBiZWNhdXNlIHRoZSBBUEkgbmVl
ZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgY2xhc3NlcyB3aXRob3V0IGhhdmluZyBhIHJlYWwgSlMg
ZnJhbWUuCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgYWxsb3cgc3ViY2xhc3NpbmcgaW4gdGhlIEFQ
SSB3ZSBqdXN0IHRyZWF0IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYXMgbmV3VGFyZ2V0ID09IGV4
ZWMtPmpzQ2FsbGVlKCkKLSAgICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25z
dHJ1Y3RvcigpKTsKKyAgICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1
Y3RvcihleGVjLT52bSgpKSk7CiAKICAgICBpZiAobmV3VGFyZ2V0ICYmIG5ld1RhcmdldCAhPSBl
eGVjLT5qc0NhbGxlZSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmVT
bG93KGV4ZWMsIG5ld1RhcmdldCwgYmFzZUNsYXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA5NGQ1YTUxNWU5NmM5ZjIxYWVkODJiYjBiZWM5ZTZk
YTY5NjYyYWYzLi4zNTFiNzhhZDMxNzIwMjIxZjg0NzRiNmM1YzdmZTAwNmQyMGY4YTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjAsOCArMjIw
LDggQEAgY2xhc3MgSlNWYWx1ZSB7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0Z1bmN0aW9uKFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJiwgQ2FsbFR5
cGUmLCBDYWxsRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0Owot
ICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihDb25zdHJ1Y3RUeXBlJiwgQ29uc3RydWN0RGF0YSYpIGNv
bnN0OworICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpIGNvbnN0OworICAgIGJvb2wgaXNDb25z
dHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5cGUmLCBDb25zdHJ1Y3REYXRhJikgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNGJhOWQ1MDdkZWI1ZmI1YzU2
NmVlNjc1YjJjZjExYjEwZGY0OWMxMS4uMGYzOTJhODg4ZGJjNTU3NGNiZmQ3OTk1NmM5MWJkNjYx
ZWE2Y2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCkBAIC03NzQsMjIgKzc3NCwxOCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0NhbGxhYmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiAgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0NhbGxhYmxlKHZtLCBjYWxsVHlwZSwgY2FsbERhdGEp
OwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NvbnN0cnVjdG9yKCkgY29uc3QKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZtKSBjb25zdAogewogICAgIGlmICgh
aXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBKU0NlbGwqIGNlbGwgPSBhc0Nl
bGwoKTsKLSAgICBDb25zdHJ1Y3REYXRhIGlnbm9yZWQ7Ci0gICAgcmV0dXJuIGNlbGwtPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY2VsbCwgaWdub3JlZCkgIT0gQ29uc3RydWN0VHlw
ZTo6Tm9uZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ29uc3RydWN0b3Iodm0pOwogfQogCi1p
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NvbnN0cnVjdG9yKENvbnN0cnVjdFR5cGUmIGNvbnN0cnVj
dFR5cGUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpIGNvbnN0CitpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc0NvbnN0cnVjdG9yKFZNJiB2bSwgQ29uc3RydWN0VHlwZSYgY29uc3RydWN0VHlw
ZSwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWlzQ2Vs
bCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7
Ci0gICAgY29uc3RydWN0VHlwZSA9IGNlbGwtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERh
dGEoY2VsbCwgY29uc3RydWN0RGF0YSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdFR5cGUgIT0gQ29u
c3RydWN0VHlwZTo6Tm9uZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ29uc3RydWN0b3Iodm0s
IGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOwogfQogCiAvLyB0aGlzIG1ldGhvZCBpcyBo
ZXJlIHRvIGJlIGFmdGVyIHRoZSBpbmxpbmUgZGVjbGFyYXRpb24gb2YgSlNDZWxsOjppbmhlcml0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA3YzFmMDE5NzNiNmNk
ZjMzODkzZTRjZjNlNmJjZTUyZDhiZWNiYWEyLi5hZTZlZjZjZmY5OWViNTJhNjM3MDBjOWZhOTM5
MGY5MjcwMWQ5MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
MTExLDYgKzExMSw4IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgYm9v
bCBpc1Byb3h5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKFZNJik7CiAgICAgYm9vbCBp
c0NhbGxhYmxlKFZNJiwgQ2FsbFR5cGUmLCBDYWxsRGF0YSYpOworICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcihWTSYpOworICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYsIENvbnN0cnVjdFR5cGUmLCBD
b25zdHJ1Y3REYXRhJik7CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyop
IGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYp
IGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAyMzQ3MzZlNDc2MTIy
NzVjMjc2NWRjYzJlZGE1N2Y3N2YwZTdlMWI3Li5jZGE2YTFlY2I5OWJjMzM2NWFlMjY5YjZiMjcw
ZjM4OTgwYTM1NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCkBAIC0yNDcsNiArMjQ3LDE5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNDYWxs
YWJsZShWTSYgdm0sIENhbGxUeXBlJiBjYWxsVHlwZSwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAg
IHJldHVybiBjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZTsKIH0KIAoraW5saW5lIGJvb2wgSlND
ZWxsOjppc0NvbnN0cnVjdG9yKFZNJiB2bSkKK3sKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGU7CisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIHJldHVybiBpc0Nv
bnN0cnVjdG9yKHZtLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKK30KKworaW5saW5l
IGJvb2wgSlNDZWxsOjppc0NvbnN0cnVjdG9yKFZNJiB2bSwgQ29uc3RydWN0VHlwZSYgY29uc3Ry
dWN0VHlwZSwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3RU
eXBlID0gbWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHRoaXMsIGNvbnN0cnVjdERh
dGEpOworICAgIHJldHVybiBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7Cit9
CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAogewogICAg
IHJldHVybiBtX3R5cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKQEAgLTI4Miw5ICsyOTUsMTAg
QEAgaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKCkgY29uc3QK
IGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYgdm0pIGNv
bnN0CiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0g
c3RydWN0dXJlLT5zdHJ1Y3R1cmUodm0pKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHJvb3RTdHJ1
Y3R1cmUsIHJvb3RTdHJ1Y3R1cmUgPT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKHZtKSk7Ci0K
KyAgICAgICAgQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJl
KHZtKSk7CisjZW5kaWYKICAgICByZXR1cm4gJnN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhv
ZFRhYmxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggYjQwNDVlMjkzNjBmMzU0ZDY3NWRlYjgzNTgxYzBlMTJiZTA4MGNl
OS4uM2FhYmY4NGU5OGU1NzMzMTZiYTQ3NTEzYTEzNjFjNmYzMDFjNDY3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTAxNSw2
NCArMTAxNSw2NCBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogCiAgICAgICAgIHsKICAgICAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVX
YXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCk7Ci0gICAgICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKLSAgICAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwo
KTsKKyAgICAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsK
ICAgICAgICAgfQogICAgICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVByb3RvdHlw
ZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgICAgIG1f
YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pih2bSwgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwot
ICAgICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5z
dGFsbCgpOworICAgICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICB9CiAKICAgICAgICAgewogICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCk7Ci0gICAgICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KICAgICAgICAgewogICAgICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwotICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX21hcFByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwg
bV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBtX21hcFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fc2V0SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9zZXRJdGVyYXRvclByb3Rv
dHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX3NldEl0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24s
IG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9zZXRJdGVy
YXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfQogICAg
ICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBz
ZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24s
IG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9zZXRQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1f
c2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4oY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAg
ICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgICAgICBt
X3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pih2bSwgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
LSAgICAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5z
dGFsbCgpOworICAgICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KICAgICAgICAgewogICAgICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wpOwotICAgICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX3N0cmlu
Z0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fc3RyaW5nUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX3N0
cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAg
ICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgICAgIH0KIAogICAgICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3Rv
dHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAgICAgICAgICAgbV9tYXBQ
cm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlv
biwgbV9tYXBTZXRXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0
Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQp
OworICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdl
dCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX3Nl
dEFkZFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50
LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAg
ICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAg
ICB9CiAKICAgICAgICAgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlKCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVU
b1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBt
X251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX251bWJlclByb3RvdHlw
ZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9udW1iZXJQcm90
b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24s
IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fbnVtYmVyUHJvdG90
eXBlVG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgICAgIG1fbnVtYmVy
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihu
dW1iZXJQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
ZykpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludC5oCmluZGV4IGJmMWE3ZGI4ZDlkZmYzZDA3MWMwODJjMTQ5NDhmNTY2ZDZjYTUyMTQu
LjRlMGMyMDkwNWU2Mzg4ZDM4NDE1YzdlYWU0MjM0MTMwMDkzMDRhMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaApAQCAtMzMsMjEgKzMzLDE5IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFdhdGNocG9pbnQ+CiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTsKLSAgICBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludChWTSYgdm0sIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25k
aXRpb24sIFdhdGNocG9pbnQmIHdhdGNocG9pbnQpCisgICAgT2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlv
biwgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKICAgICAgICAgOiBCYXNlKGNvbmRpdGlvbikKLSAg
ICAgICAgLCBtX3ZtKHZtKQogICAgICAgICAsIG1fd2F0Y2hwb2ludCh3YXRjaHBvaW50KQogICAg
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2F0Y2hwb2ludC5zdGF0ZU9uSlNUaHJlYWQoKSA9
PSBJc1dhdGNoZWQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGhhbmRsZUZpcmUoY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlCisgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiB2bSwgY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX3dhdGNocG9pbnQuZmly
ZUFsbChtX3ZtLCBTdHJpbmdGaXJlRGV0YWlsKCJPYmplY3QgUHJvcGVydHkgaXMgY2hhbmdlZC4i
KSk7CisgICAgICAgIG1fd2F0Y2hwb2ludC5maXJlQWxsKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJP
YmplY3QgUHJvcGVydHkgaXMgY2hhbmdlZC4iKSk7CiAgICAgfQogCi0gICAgVk0mIG1fdm07CiAg
ICAgV2F0Y2hwb2ludCYgbV93YXRjaHBvaW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IDVjM2VlNWViODVmY2RlNzkwMzAzYWZl
MGYwYjEzMjA2Yzc0YjQ2ZDIuLjgxMWUyOWQ1ZGY0ZjAwMmVjOWJiMjEzMTA4ODZhMmExNDIwOTA4
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAK
QEAgLTExMiw4ICsxMTIsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdQogICAgICAgICBSRUxF
QVNFX0FTU0VSVChpbmZvLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpICYmIGluZm8uaW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKICAgICB9CiAKLSAgICBDb25zdHJ1Y3REYXRhIGlnbm9y
ZWRDb25zdHJ1Y3REYXRhOwotICAgIG1faXNDb25zdHJ1Y3RpYmxlID0ganNDYXN0PEpTT2JqZWN0
Kj4odGFyZ2V0KS0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGpzQ2FzdDxKU09i
amVjdCo+KHRhcmdldCksIGlnbm9yZWRDb25zdHJ1Y3REYXRhKSAhPSBDb25zdHJ1Y3RUeXBlOjpO
b25lOworICAgIG1faXNDb25zdHJ1Y3RpYmxlID0ganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KS0+
aXNDb25zdHJ1Y3Rvcih2bSk7CiAKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIHRhcmdldEFz
T2JqZWN0KTsKICAgICBtX2hhbmRsZXIuc2V0KHZtLCB0aGlzLCBoYW5kbGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggM2Q1ZTE2
NTU2OTU4NmEwYjY5OGE4NDYzMmJlYmI0OWZkNzA3YjlkYy4uMjllZjZjYzliYzc0Yjc0NTU2OWUw
NzA4NDRhYjBiNmJlMmQ4ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTEwMSwxMyArMTAxLDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlOwotICAgIGlmICghdGFyZ2V0LmlzQ29uc3RydWN0b3IoY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSkpCisgICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSwgY29uc3Ry
dWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1
Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOwogCiAg
ICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA+PSAzKSB7CiAgICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOwotICAg
ICAgICBpZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKCkpCisgICAgICAgIGlmICghbmV3VGFy
Z2V0LmlzQ29uc3RydWN0b3Iodm0pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVz
ZW50IikpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCBhZTMwMWUyNjlmZTA3YTJjN2E5ZDQzMzNhMjhi
ODEzNzM1MjJmM2Y2Li43NWE2MmI3MGU1YTYzMDljYWQxYzNmMjE4YTI4ZTllNzIzNWUxZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mCiAKIHByaXZh
dGU6CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoYW5kbGVG
aXJlKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUZpcmUoVk0m
LCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSog
bV9zdHJ1Y3R1cmVSYXJlRGF0YTsKIH07CkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBjbGFzcyBPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50
IHsKIHB1YmxpYzoKICAgICBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIFN0cnVjdHVyZVJhcmVEYXRhKik7CiAK
LSAgICB2b2lkIGluc3RhbGwoKTsKKyAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAogcHJvdGVjdGVk
OgotICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKICAg
ICAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CkBAIC0xNjAs
OSArMTYwLDkgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBmb3IgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBpZiAoY29u
ZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2Up
IHsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwotICAgICAgICAg
ICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3Rh
bGwoKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX29i
amVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5p
bnN0YWxsKCk7CisgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50
U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICBtX29i
amVjdFRvU3RyaW5nVmFsdWUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CkBAIC0xODUsMjAgKzE4NSwy
MCBAQCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6T2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocAogICAgIFJFTEVBU0VfQVNTRVJUKCFrZXkud2F0
Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpKTsKIH0KIAotdm9pZCBPYmplY3RU
b1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbCgpCit2b2lkIE9iamVj
dFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKFZNJiB2bSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2tleS5pc1dhdGNoYWJsZSgpKTsKIAotICAgIG1fa2V5Lm9i
amVjdCgpLT5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CisgICAg
bV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRo
aXMpOwogfQogCi12b2lkIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpCit2b2lkIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJl
RGV0YWlsJikKIHsKICAgICBpZiAoIW1fc3RydWN0dXJlUmFyZURhdGEtPmlzTGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRp
b246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgaW5zdGFsbCgpOworICAgICAgICBp
bnN0YWxsKHZtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBA
IGJvb2wgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQ6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX3N0cnVjdHVyZVJhcmVEYXRhLT5pc0xp
dmUoKTsKIH0KIAotdm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YWlsJikKK3ZvaWQgT2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikKIHsKICAgICBtX3N0cnVjdHVyZVJhcmVEYXRhLT5j
bGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341863</attachid>
            <date>2018-06-03 06:49:05 -0700</date>
            <delta_ts>2018-06-26 19:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186241-20180603224904.patch</filename>
            <type>text/plain</type>
            <size>50409</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmI5OGI1ZTAzNDRhZjQyNTE3NTc0OTI2ZTE0N2IyMWRmOTkxMmY5Li40MTU4NTRiYTBhYWI1MWRl
ZGY2YmI1MjExMDdmZGQyNDU1ZDA3NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOC0wNi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQYXNzIFZNJiB0byBmdW5jdGlvbnMgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB0aHJl
YWRzIFZNJiB0byBmdW5jdGlvbnMgcmVxdWlyaW5nIFZNJiBtb3JlLgorCisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0SXNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6Omluc3RhbGwpOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAg
KEpTQzo6V2F0Y2hwb2ludDo6ZmlyZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmZp
cmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAg
ICAgICAqIGRmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRBZGFwdG9y
OjphZGQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUlu
aXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBl
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAg
ICogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNsb3cp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6Om1ldGhvZFRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ6Ok9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFs
dWUpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6Ok9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6
CisKIDIwMTgtMDYtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgQmFzZWxpbmUgb3BfanRydWUgZW1pdHMgYW4gaW5zYW5lIGFtb3VudCBvZiBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZTk5YjgwN2JmMzAxMzFhMGMxMGJkNGM3M2RlZGJiNTA5ZmZlYTFiYi4u
NDVlMTdkYmM4ODRmY2ZjYTk2MDZmYTAyOGJjYzcwOGY5NjdhN2I4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE4LTA2LTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIFBhc3MgVk0mIHRvIGZ1bmN0aW9ucyBtb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYyNDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUpOgorCiAyMDE4LTA2LTAxICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVkaXRvciBjYW4gaG9sZCByZWZlcmVu
Y2VzIHRvIERvY3VtZW50cyBhZnRlciB5b3UgbmF2aWdhdGUgYXdheQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBkODBhMDcwYjdhYjY5OGZiNDhhNzEwZGU1
YTc2MzM5NWJiNDliMjA3Li4yZTM2MjM4MmQ1OWJmMzU1NjA4MTI2MjFiMzg2ZGMyMDBlYmIzNGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNjMwLDkg
KzYzMCw3IEBAIGJvb2wgSlNPYmplY3RJc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCkKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgcmV0
dXJuIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoanNPYmplY3Qs
IGNvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIHRvSlMo
b2JqZWN0KS0+aXNDb25zdHJ1Y3Rvcih2bSk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2Fs
bEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludEJhc2UuY3BwCmluZGV4IDNmMDJkNGYzOTI4OWI3ZGYwODQ0MmFlNDI5OWNlOTAwYmQ5
ZDM0MDQuLmIyNmZiZjZhY2M4NjNhMmFkZmU1MjAxYmI2MmVkZWIyMjA3YmJkMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAKQEAg
LTM2LDE4ICszNiwyMCBAQCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogICAgIFJFTEVBU0VfQVNT
RVJUKGtleS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsKIH0KIAot
dm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjppbnN0YWxs
KCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aW5z
dGFsbChWTSYgdm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7
CiAKLSAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBv
aW50KCZtX3N0cnVjdHVyZVdhdGNocG9pbnQpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7CiAKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmdldENvbmN1cnJlbnRseShtX2tleS51
aWQoKSk7Ci0gICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbV9rZXkub2JqZWN0KCktPnN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOworICAgIHN0cnVj
dHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoJm1fc3RydWN0dXJlV2F0Y2hwb2ludCk7CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSht
X2tleS51aWQoKSk7CisgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9wZXJ0
eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgIHNldC0+YWRkKCZtX3Byb3Bl
cnR5V2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTo6ZmlyZShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoVk0mIHZtLCBjb25z
dCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgLy8gT25lIG9mIHRoZSB3YXRjaHBvaW50cyBm
aXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0LiBNYWtlIHN1cmUgdGhhdCBuZWl0aGVyIG9m
IHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBhbnltb3JlLiBUaGlzIHNpbXBsaWZpZXMgdGhp
bmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFsbCB0aGUgd2F0Y2hwb2ludHMKQEAgLTYxLDEx
ICs2MywxMSBAQCB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKLSAgICAgICAgaW5zdGFsbCgpOworICAgICAgICBpbnN0YWxsKHZtKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZUZpcmUoZGV0YWlsKTsKKyAgICBoYW5kbGVG
aXJlKHZtLCBkZXRhaWwpOwogfQogCiBib29sIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2U6OmlzVmFsaWQoKSBjb25zdApAQCAtNzMsMjIgKzc1LDIyIEBAIGJvb2wg
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aXNWYWxpZCgpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2
bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIHB0cmRpZmZfdCBteU9mZnNldCA9
IE9CSkVDVF9PRkZTRVRPRihBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLCBtX3N0cnVjdHVyZVdhdGNocG9pbnQpOwogCiAgICAgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZSogcGFyZW50ID0gYml0d2lzZV9jYXN0PEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRo
aXMpIC0gbXlPZmZzZXQpOwogCi0gICAgcGFyZW50LT5maXJlKGRldGFpbCk7CisgICAgcGFyZW50
LT5maXJlKHZtLCBkZXRhaWwpOwogfQogCi12b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2U6OlByb3BlcnR5V2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0
IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBj
b25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgcHRyZGlmZl90IG15T2Zmc2V0ID0gT0JK
RUNUX09GRlNFVE9GKEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Us
IG1fcHJvcGVydHlXYXRjaHBvaW50KTsKIAogICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UqIHBhcmVudCA9IGJpdHdpc2VfY2FzdDxBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSAt
IG15T2Zmc2V0KTsKICAgICAKLSAgICBwYXJlbnQtPmZpcmUoZGV0YWlsKTsKKyAgICBwYXJlbnQt
PmZpcmUodm0sIGRldGFpbCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oCmluZGV4IDk4ZTMz
ODE5Mzc4ZjU3ZDM2YWNlMTYyNGViYzgwYjViMzQ5ZjI1ODcuLjUwZDg0YmE4ODhkNTFiOTI5MjAz
N2YxMTQ0ZTQ4NmJkYmRlMmUyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuaApAQCAtNDEsMjkgKzQxLDI5IEBAIGNsYXNzIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgewogCiAgICAgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKLSAgICB2
b2lkIGluc3RhbGwoKTsKKyAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAogICAgIHZpcnR1YWwgfkFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UoKSA9IGRlZmF1bHQ7CiAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgPSAwOwogCiBwcml2YXRlOgog
ICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAg
cHVibGljOgogICAgICAgICBTdHJ1Y3R1cmVXYXRjaHBvaW50KCkgeyB9CiAgICAgcHJvdGVjdGVk
OgotICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJy
aWRlOwogICAgIH07CiAgICAgY2xhc3MgUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIFdhdGNo
cG9pbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvcGVydHlXYXRjaHBvaW50KCkgeyB9CiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWls
Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpIG92ZXJyaWRlOwogICAgIH07CiAKLSAgICB2b2lkIGZpcmUoY29uc3QgRmlyZURldGFp
bCYpOworICAgIHZvaWQgZmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsKIAogICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnQgbV9zdHJ1
Y3R1cmVXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA1
MGNmNzM3OGRmM2MwYzhlZWYxM2NmMzI0ODE5YWI3YmYyYmUwMjI3Li5jOTZkNWE0ZDNmMmMwNjE2
YjE4YjU4ZmM2MGU4MDY1YTRlYTBiYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJiBk
ZXRhaWwpCit2b2lkIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KFZNJiwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIGlmIChERkc6OnNob3VsZER1
bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJGaXJpbmcgd2F0Y2hwb2ludCAiLCBS
YXdQb2ludGVyKHRoaXMpLCAiIG9uICIsICptX2NvZGVCbG9jaywgIlxuIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRj
aHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmgKaW5kZXggNjM1Y2Q3OGNhYTYyYTY2NmQ4OGVkM2VjODA3OWNlM2Jj
MGNlOTAxYi4uNjEwMjYxZjZhNTU4YzUyZWZkMDYyZmYyMTNkMmQ1MmNkYzhlZTA1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgfQogICAg
IAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApp
bmRleCBkNmNjMjJkNTE1MGRmOGVjZGI4YmI4YTM1YzVhY2QyYzU3ZjcxZTUwLi5lZWNkOGZiYzU5
YTM3ZWFjOTJhZjhhYjgwODg3OTdlOGYxMGZiMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNDAsMTcgKzQwLDE3
IEBAIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6TExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1CiAgICAgUkVMRUFTRV9BU1NFUlQoIWtleS53YXRj
aGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50KCkpOwogfQogCi12b2lkIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbCgpCit2b2lkIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYg
dm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CiAKLSAgICBt
X2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMp
OworICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hw
b2ludCh0aGlzKTsKIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikKK3ZvaWQgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0m
IHZtLCBjb25zdCBGaXJlRGV0YWlsJikKIHsKICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJv
cGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgaW5zdGFsbCgp
OworICAgICAgICBpbnN0YWxsKHZtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4
IDY2NDY4ZjBlZjg0NWJjM2I3ZjY1NDlkMGVkZGIzNTAzOGQzNThlYjAuLmUwZTFiZThkMDcwNTdi
ZDZiNjExZjhhNTM5MWQ1ZDg3YjJhMzJkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM2LDEyICszNiwxMiBAQCBjbGFz
cyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMg
V2F0Y2hwb2ludCB7CiAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50KCkgPSBkZWZhdWx0OwogICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIEluc3RydWN0aW9u
Kik7CiAKLSAgICB2b2lkIGluc3RhbGwoKTsKKyAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAogICAg
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tl
eTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFp
bCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFp
bCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1f
a2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDNiZDQ0NTMyY2Qx
MzFlZmQ2Njc4Nzc0Mjg3YzBjOWVmMzFiNDRhN2QuLjc4MTYzNTc5Yjg3ODEyNzFlYTRhMTZkNjE3
N2E4NDBhOTgwMDUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludCogU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6cHVzaCgKICAgICByZXR1cm4gaGVhZC5nZXQoKTsKIH0K
IAotdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoY29u
c3QgRmlyZURldGFpbCYpCit2b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6OmZp
cmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogewogICAgIGlmICghbV9rZXkg
fHwgIW1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxp
dHkpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCBpbXBsaWNpdGx5IGNhdXNlIG15IG93biBkZW1p
c2U6IHN0dWIgcmVzZXQgcmVtb3ZlcyBhbGwgd2F0Y2hwb2ludHMuCkBAIC01OSw3ICs1OSw2IEBA
IHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0
IEZpcmVEZXRhaWwmKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVk0mIHZtID0gKm1f
a2V5Lm9iamVjdCgpLT52bSgpOwogICAgIGlmIChtX2tleS5raW5kKCkgPT0gUHJvcGVydHlDb25k
aXRpb246OlByZXNlbmNlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEgcHJlc2VuY2UgY29u
ZGl0aW9uLCBsZXQncyB3YXRjaCB0aGUgcHJvcGVydHkgZm9yIHJlcGxhY2VtZW50cy4gVGhpcyBp
cyBwcm9maXRhYmxlCiAgICAgICAgIC8vIGZvciB0aGUgREZHLCB3aGljaCB3aWxsIHdhbnQgdGhl
IHJlcGxhY2VtZW50IHNldCB0byBiZSB2YWxpZCBpbiBvcmRlciB0byBkbyBjb25zdGFudCBmb2xk
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKaW5kZXggNjY1YzU2YTk4NmYwZjZj
NTBhNTRlMDMwYTg0OTcwNzViNGZmNmE5NC4uM2MwYTdmYjRkNjEyNjE1ODExYWIzMzliOGNhOTU2
MjhiZGM1MTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC02MSw3ICs2
MSw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0
Y2hwb2ludCB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50PiYgaGVhZCk7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRlcm5hbChj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gbV9rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAKaW5kZXggN2FiMzg1ZjU4NWNjOTAzMWM0NmRlNWE5MDYxY2RmYmE4ZjIwNGY4
OS4uYjE5YWRiNGViYzAzMDAyNzZiNzVjOWFlZTA3Y2I1ZjI4N2M2Y2YwZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcApAQCAtNDksMTAgKzQ5LDEw
IEBAIFdhdGNocG9pbnQ6On5XYXRjaHBvaW50KCkKICAgICB9CiB9CiAKLXZvaWQgV2F0Y2hwb2lu
dDo6ZmlyZShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIFdhdGNocG9pbnQ6OmZpcmUo
Vk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IWlzT25MaXN0KCkpOwotICAgIGZpcmVJbnRlcm5hbChkZXRhaWwpOworICAgIGZpcmVJbnRlcm5h
bCh2bSwgZGV0YWlsKTsKIH0KIAogV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldChXYXRjaHBv
aW50U3RhdGUgc3RhdGUpCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsV2F0Y2hwb2ludHMoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAg
ICAgIEFTU0VSVChtX3NldC5iZWdpbigpICE9IHdhdGNocG9pbnQpOwogICAgICAgICBBU1NFUlQo
IXdhdGNocG9pbnQtPmlzT25MaXN0KCkpOwogICAgICAgICAKLSAgICAgICAgd2F0Y2hwb2ludC0+
ZmlyZShkZXRhaWwpOworICAgICAgICB3YXRjaHBvaW50LT5maXJlKHZtLCBkZXRhaWwpOwogICAg
ICAgICAvLyBBZnRlciB3ZSBmaXJlIHRoZSB3YXRjaHBvaW50LCB0aGUgd2F0Y2hwb2ludCBwb2lu
dGVyIG1heSBiZSBhIGRhbmdsaW5nIHBvaW50ZXIuIFRoYXQncwogICAgICAgICAvLyBmaW5lLCBi
ZWNhdXNlIHdlIGhhdmUgbm8gdXNlIGZvciB0aGUgcG9pbnRlciBhbnltb3JlLgogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCmluZGV4IDQ0NzZlMmE3
YjUxMzVlYTdkYmNmMmVjNjg4YzczOTdiNzI5MDBlMDEuLmY4MmUwMmJiMTZjMDczMDgzMzdhNWY3
ZThhZDA2YTFjOGM1YWUwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Vk07CisKIGNsYXNzIEZpcmVEZXRhaWwgewogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qp
ID0gZGVsZXRlOwogICAgIApAQCAtNzMsMTEgKzc1LDExIEBAIGNsYXNzIFdhdGNocG9pbnQgOiBw
dWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gewogICAgIHZpcnR1YWwgfldh
dGNocG9pbnQoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50ZXJuYWwo
Y29uc3QgRmlyZURldGFpbCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVybmFsKFZN
JiwgY29uc3QgRmlyZURldGFpbCYpID0gMDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
V2F0Y2hwb2ludFNldDsKLSAgICB2b2lkIGZpcmUoY29uc3QgRmlyZURldGFpbCYpOworICAgIHZv
aWQgZmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsKIH07CiAKIGVudW0gV2F0Y2hwb2ludFN0
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcAppbmRl
eCAyMDdiMmZjZWNhZjQ0MTJmYWNiZjFkYTJiMjJiNDE4MTI5NzRkMzU1Li5jMDkyN2MwOGIzMmVl
YWRiZTQxYTEzMjZhYjRmNWM2ZjYzYmZmZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50CiB7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBv
aW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmly
ZURldGFpbCYgZGV0YWlsKQogewogICAgIGlmIChERkc6OnNob3VsZER1bXBEaXNhc3NlbWJseSgp
KQogICAgICAgICBkYXRhTG9nKCJGaXJpbmcgd2F0Y2hwb2ludCAiLCBSYXdQb2ludGVyKHRoaXMp
LCAiICgiLCBrZXkoKSwgIikgb24gIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCmluZGV4IDA4OWNjYTZjNzEzNmNkNTk3MGI2
ODIzNWE4Y2UzNTUzZDQxOGM4ZmIuLjYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4Njc0MGE0NjQx
ZDQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VgogICAgIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYs
IENvZGVCbG9jayopOwogCiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJl
RGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURl
dGFpbCYpIG92ZXJyaWRlOwogCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMDg1NGM1NmIwNzY0MzY1ZjYwYzAyMmJiMGViMjE3ODRj
YWEzZjM3Yi4uMDZiZjZiODk0MzkxMTM4Mjg0ZTA4MGQ1NmZkZTYyYTAxYWQ1MTcyNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNDMsMTcgKzQzLDE3IEBAIEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludDo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KAogICAgIFJFTEVBU0VfQVNT
RVJUKCFrZXkud2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpKTsKIH0KIAot
dm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoKQordm9pZCBBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKG1fa2V5LmlzV2F0Y2hhYmxlKCkpOwogICAgIAotICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1
Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CisgICAgbV9rZXkub2JqZWN0
KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOwogfQogCi12
b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVE
ZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50
ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgaWYgKG1fa2V5
LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0g
ICAgICAgIGluc3RhbGwoKTsKKyAgICAgICAgaW5zdGFsbCh2bSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCA0MGZjYzEwMDlmM2ZkNjBiNTYw
ZmQwNzA0OTFjMGE1MDBlMjdlYzdjLi5jMWY1NzRmNTMzOTI2ZDQzMDdiMmRlMzA2ZDUzN2YxMGJi
N2RlNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM4LDEwICszOCwxMCBAQCBjbGFzcyBB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgCiAg
ICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5OyB9CiAgICAgCi0gICAgdm9pZCBpbnN0YWxsKCk7CisgICAgdm9pZCBpbnN0YWxsKFZNJik7
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gbV9rZXk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50
cy5jcHAKaW5kZXggODRiYTJkZmFjMjI2ZTdlYTBkZGJjNGUxN2ZmOWU5ZGU2NzBjYzM5MC4uMTcz
ZDAzZTVmOTljZmFmYjMxYjcxNWY2YTBhOGJlNGNiYWI3MTg4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcApAQCAtNTgsMTIg
KzU4LDEzIEBAIHZvaWQgSW5mZXJyZWRWYWx1ZUFkYXB0b3I6OmFkZCgKIHZvaWQgQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5LCBDb21tb25EYXRhJiBjb21tb24p
CiB7CisgICAgVk0mIHZtID0gKmNvZGVCbG9jay0+dm0oKTsKICAgICBzd2l0Y2ggKGtleS5raW5k
KCkpIHsKICAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZToKLSAgICAgICAg
Y29tbW9uLmFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHMuYWRkKGtleSwg
Y29kZUJsb2NrKS0+aW5zdGFsbCgpOworICAgICAgICBjb21tb24uYWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50cy5hZGQoa2V5LCBjb2RlQmxvY2spLT5pbnN0YWxsKHZtKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgY29tbW9uLmFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludHMuYWRkKGtleSwgY29kZUJsb2NrKS0+aW5zdGFsbCgpOworICAgICAg
ICBjb21tb24uYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50cy5hZGQoa2V5LCBjb2RlQmxvY2sp
LT5pbnN0YWxsKHZtKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYzhkM2U0NzE0Y2VmZDky
NDlmZWI5ODg1ZjA1ZmNmNjhiNjk1ZTUyMC4uYjEwZjAwNzMyY2MxNjZiNDQ2NGY5NDY2NDk0NGE0
OTllYzY3Nzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC02NzYsNyArNjc2LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJv
dG90eXBlQ2FjaGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEluc3RydWN0aW9uKiBwYywKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5k
KCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKQogICAgICAgICAgICAgb2Zmc2V0ID0g
Y29uZGl0aW9uLmNvbmRpdGlvbigpLm9mZnNldCgpOwotICAgICAgICB3YXRjaHBvaW50cy5hZGQo
Y29uZGl0aW9uLCBwYyktPmluc3RhbGwoKTsKKyAgICAgICAgd2F0Y2hwb2ludHMuYWRkKGNvbmRp
dGlvbiwgcGMpLT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICBBU1NFUlQoKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KSA9PSBzbG90LmlzVW5zZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZDg1ZjcxMDZmY2UwYmJkYzk4
ZTdmMmYyZmNlOTAyY2U0YmI4OTdjOC4uZTVmZDg3MjczMWU3ZGVjMzRlZmYzM2FiOTZhYWFmMzg1
YjBmYWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6
cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNDb25zdHJ1CiAK
ICAgICAgICAgY29uc3RydWN0b3IgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
eGNlcHRpb25SZXN1bHQoKSk7Ci0gICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc0NvbnN0cnVjdG9y
KCkpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdG9yLmlzQ29uc3RydWN0b3Iodm0pKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogY29uc3RydWN0b3JPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihj
b25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICBpZiAoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
ICE9IGNvbnN0cnVjdG9yT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwg
bnVsbHB0cik7OwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgY2xhc3MgQXJyYXlQcm90b3R5cGVBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWQK
ICAgICBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBBcnJheVByb3RvdHlwZSopOwogCiBwcml2YXRl
OgotICAgIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogCiAgICAg
QXJyYXlQcm90b3R5cGUqIG1fYXJyYXlQcm90b3R5cGU7CiB9OwpAQCAtMTQ5NiwxMCArMTQ5Niwx
MCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIG1fY29uc3RydWN0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdh
dGNocG9pbnQ+KGNvbnN0cnVjdG9yQ29uZGl0aW9uLCB0aGlzKTsKLSAgICBtX2NvbnN0cnVjdG9y
V2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgIG1fY29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKIAogICAgIG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50
PihzcGVjaWVzQ29uZGl0aW9uLCB0aGlzKTsKLSAgICBtX2NvbnN0cnVjdG9yU3BlY2llc1dhdGNo
cG9pbnQtPmluc3RhbGwoKTsKKyAgICBtX2NvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmlu
c3RhbGwodm0pOwogCiAgICAgLy8gV2Ugb25seSB3YXRjaCB0aGlzIGZyb20gdGhlIERGRywgYW5k
IHRoZSBERkcgbWFrZXMgc3VyZSB0byBvbmx5IHN0YXJ0IHdhdGNoaW5nIGlmIHRoZSB3YXRjaHBv
aW50IGlzIGluIHRoZSBJc1dhdGNoZWQgc3RhdGUuCiAgICAgUkVMRUFTRV9BU1NFUlQoIWdsb2Jh
bE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLmlzQmVpbmdXYXRjaGVkKCkpOyAKQEAg
LTE1MTIsNyArMTUxMiw3IEBAIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
V2F0Y2hwb2ludDo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkCiB7CiB9CiAKLXZvaWQg
QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVG
aXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKFZNJiB2bSwgY29uc3QgRmly
ZURldGFpbCYgZGV0YWlsKQogewogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICBvdXQu
cHJpbnQoIkFycmF5UHJvdG90eXBlIGFkYXB0aW9uIG9mICIsIGtleSgpLCAiIGZhaWxlZDogIiwg
ZGV0YWlsKTsKQEAgLTE1MjIsOCArMTUyMiw4IEBAIHZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAg
ICAgaWYgKEFycmF5UHJvdG90eXBlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIFdURjo6ZGF0
YUxvZyhzdHJpbmdEZXRhaWwsICJcbiIpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fYXJyYXlQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpOwotICAgIGdsb2JhbE9iamVj
dC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLmZpcmVBbGwoZ2xvYmFsT2JqZWN0LT52bSgpLCBz
dHJpbmdEZXRhaWwpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5
UHJvdG90eXBlLT5nbG9iYWxPYmplY3Qodm0pOworICAgIGdsb2JhbE9iamVjdC0+YXJyYXlTcGVj
aWVzV2F0Y2hwb2ludCgpLmZpcmVBbGwodm0sIHN0cmluZ0RldGFpbCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAppbmRleCAwMTFlMDhm
MjQ1ODczMDIwNDYxYzZiNWI3MDg5ZTM2MmUzY2I3OTAxLi5iMzA0NjYwNTlhZTY1NTNkN2RmNWJi
ZjE5N2VjZWIwNjJlZTJjMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBib29s
IGlzQ29uc3RydWN0b3IgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0NvbnN0cnVjdG9y
KCk7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCku
aXNDb25zdHJ1Y3RvcihleGVjLT52bSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKaW5kZXggMTI1MmFhODRiMzAxZWI3ZjZk
MGQ5YmEzMTEwYmE0YjUxZTI5NDZjYS4uYmFkZDQxZjI2NTM2M2U1OTIxODM4Y2M3NmEwNDEwNTQ3
ZmQ1ZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBGdW5jdGlvblJhcmVEYXRhOjpj
bGVhcihjb25zdCBjaGFyKiByZWFzb24pCiAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnQuZmlyZUFsbCgqdm0oKSwgcmVhc29uKTsKIH0KIAotdm9pZCBGdW5jdGlvblJhcmVE
YXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmKQordm9pZCBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmls
ZUNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYp
CiB7CiAgICAgbV9yYXJlRGF0YS0+Y2xlYXIoIkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50IGZpcmVkLiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IDJjNTRlZWRkNmYyOWI4MjJiMzU0ZDc3OTEwYmZhNTdi
MWQ5OTRmMDMuLmY0ZjAyNzVmNzhmMzVmODRlZjA4MTc1YTg0NmE4YzQyOGFlNTVkY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAg
LTEyMiw3ICsxMjIsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgICAgICA6IG1fcmFyZURhdGEocmFyZURhdGEpCiAgICAgICAgIHsgfQog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFp
bCYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVE
ZXRhaWwmKSBvdmVycmlkZTsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblJhcmVEYXRh
KiBtX3JhcmVEYXRhOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCBkMzll
ODZjMTAxZjAzMzM0MTUzYTg1ZGIyM2FjZjEyZDYxMDRmZTliLi4zYThhMWJhMTJmMjQyN2VhYmUy
NTI2ODA1MWU1NzFiY2E0YzUzMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSW5mZXJyZWRTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpCit2b2lkIEluZmVycmVk
U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFp
bCYpCiB7CiAgICAgSW5mZXJyZWRTdHJ1Y3R1cmUqIGluZmVycmVkU3RydWN0dXJlID0KICAgICAg
ICAgYml0d2lzZV9jYXN0PEluZmVycmVkU3RydWN0dXJlKj4oCkBAIC00MSw3ICs0MSw3IEBAIHZv
aWQgSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURl
dGFpbCYpCiAgICAgaWYgKCFpbmZlcnJlZFR5cGUtPmlzTGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaW5mZXJyZWRUeXBlLT5yZW1vdmVTdHJ1Y3R1cmUoKmluZmVycmVkVHlwZS0+
dm0oKSk7CisgICAgaW5mZXJyZWRUeXBlLT5yZW1vdmVTdHJ1Y3R1cmUodm0pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKaW5kZXggYzE5NTIzYzllMTI3ZDYw
NDgzOWM1Y2ExNWMzNGRmM2VmYTYwM2ZlOS4uNjI5ZDA4OWY1NDk3NzgxZTQ1Nzk1MjQxNmUyYTQx
YWIwYWM4NzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5m
ZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludCA6IHB1Ymxp
YyBXYXRjaHBvaW50IHsKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBG
aXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBG
aXJlRGV0YWlsJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXgg
NzNiNTMxM2QxYWRkZDE1NDA1YzBlMmI1ODg0Yjc2ZGVlMDM2YzE3NC4uNTRkY2ViYTdkMDljMmQx
OTZkMjM3MmY0ZDZkODdiMzNlYmI0YjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBTdHJ1
Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VSVCghbmV3VGFyZ2V0
IHx8IG5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKCkpOworICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8
IG5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKHZtKSk7CiAgICAgQVNTRVJUKG5ld1RhcmdldCAmJiBu
ZXdUYXJnZXQgIT0gZXhlYy0+anNDYWxsZWUoKSk7CiAKICAgICBBU1NFUlQoYmFzZUNsYXNzLT5o
YXNNb25vUHJvdG8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmgKaW5kZXggMmRjNWYyNTg5YzZhZDA5ZmRkMWFjZmMyYzkxOWEwOThiMDJi
NGRlMi4uMjQ0YzRmNzJhOGY2NzgzY2FkYjA0YzJmNWQ0MTg3ZjhkOWExZDk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtOTgs
NyArOTgsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleAogewogICAgIC8vIFdlIGFsbG93IG5l
d1RhcmdldCA9PSBKU1ZhbHVlKCkgYmVjYXVzZSB0aGUgQVBJIG5lZWRzIHRvIGJlIGFibGUgdG8g
Y3JlYXRlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgYSByZWFsIEpTIGZyYW1lLgogICAgIC8vIFNp
bmNlIHdlIGRvbid0IGFsbG93IHN1YmNsYXNzaW5nIGluIHRoZSBBUEkgd2UganVzdCB0cmVhdCBu
ZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGFzIG5ld1RhcmdldCA9PSBleGVjLT5qc0NhbGxlZSgpCi0g
ICAgQVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSk7CisgICAg
QVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoZXhlYy0+dm0oKSkp
OwogCiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJnZXQgIT0gZXhlYy0+anNDYWxsZWUoKSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhleGVjLCBuZXdUYXJn
ZXQsIGJhc2VDbGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKaW5kZXggOTRkNWE1MTVlOTZjOWYyMWFlZDgyYmIwYmVjOWU2ZGE2OTY2MmFmMy4uMzUxYjc4
YWQzMTcyMDIyMWY4NDc0YjZjNWM3ZmUwMDZkMjBmOGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjIwLDggKzIyMCw4IEBAIGNsYXNzIEpTVmFs
dWUgewogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgaXNGdW5jdGlvbihWTSYp
IGNvbnN0OwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYsIENhbGxUeXBlJiwgQ2FsbERhdGEmKSBj
b25zdDsKLSAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdDsKLSAgICBib29sIGlzQ29uc3Ry
dWN0b3IoQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKKyAgICBib29sIGlz
Q29uc3RydWN0b3IoVk0mKSBjb25zdDsKKyAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mLCBDb25z
dHJ1Y3RUeXBlJiwgQ29uc3RydWN0RGF0YSYpIGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWQo
KSBjb25zdDsKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWRP
ck51bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCmluZGV4IDRiYTlkNTA3ZGViNWZiNWM1NjZlZTY3NWIyY2YxMWIxMGRm
NDljMTEuLjBmMzkyYTg4OGRiYzU1NzRjYmZkNzk5NTZjOTFiZDY2MWVhNmNmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
Nzc0LDIyICs3NzQsMTggQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0s
IENhbGxUeXBlJiBjYWxsVHlwZSwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBhc0Nl
bGwoKS0+aXNDYWxsYWJsZSh2bSwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIH0KIAotaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcigpIGNvbnN0CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0NvbnN0cnVjdG9yKFZNJiB2bSkgY29uc3QKIHsKICAgICBpZiAoIWlzQ2VsbCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7Ci0gICAgQ29uc3Ry
dWN0RGF0YSBpZ25vcmVkOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSgpLT5nZXRDb25z
dHJ1Y3REYXRhKGNlbGwsIGlnbm9yZWQpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0
dXJuIGFzQ2VsbCgpLT5pc0NvbnN0cnVjdG9yKHZtKTsKIH0KIAotaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNDb25zdHJ1Y3RvcihDb25zdHJ1Y3RUeXBlJiBjb25zdHJ1Y3RUeXBlLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKSBjb25zdAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDb25zdHJ1
Y3RvcihWTSYgdm0sIENvbnN0cnVjdFR5cGUmIGNvbnN0cnVjdFR5cGUsIENvbnN0cnVjdERhdGEm
IGNvbnN0cnVjdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NlbGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEpTQ2VsbCogY2VsbCA9IGFzQ2VsbCgpOwotICAgIGNvbnN0cnVjdFR5
cGUgPSBjZWxsLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwsIGNvbnN0cnVj
dERhdGEpOwotICAgIHJldHVybiBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7
CisgICAgcmV0dXJuIGFzQ2VsbCgpLT5pc0NvbnN0cnVjdG9yKHZtLCBjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhKTsKIH0KIAogLy8gdGhpcyBtZXRob2QgaXMgaGVyZSB0byBiZSBhZnRlciB0
aGUgaW5saW5lIGRlY2xhcmF0aW9uIG9mIEpTQ2VsbDo6aW5oZXJpdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggN2MxZjAxOTczYjZjZGYzMzg5M2U0Y2YzZTZiY2U1
MmQ4YmVjYmFhMi4uYWU2ZWY2Y2ZmOTllYjUyYTYzNzAwYzlmYTkzOTBmOTI3MDFkOTE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTExMSw2ICsxMTEsOCBAQCBj
bGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0
OwogICAgIGJvb2wgaXNGdW5jdGlvbihWTSYpOwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYsIENh
bGxUeXBlJiwgQ2FsbERhdGEmKTsKKyAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKTsKKyAgICBi
b29sIGlzQ29uc3RydWN0b3IoVk0mLCBDb25zdHJ1Y3RUeXBlJiwgQ29uc3RydWN0RGF0YSYpOwog
ICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBib29s
IGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggMjM0NzM2ZTQ3NjEyMjc1YzI3NjVkY2MyZWRhNTdm
NzdmMGU3ZTFiNy4uY2RhNmExZWNiOTliYzMzNjVhZTI2OWI2YjI3MGYzODk4MGEzNTQ1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjQ3
LDYgKzI0NywxOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ2FsbGFibGUoVk0mIHZtLCBDYWxs
VHlwZSYgY2FsbFR5cGUsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gY2FsbFR5cGUg
IT0gQ2FsbFR5cGU6Ok5vbmU7CiB9CiAKK2lubGluZSBib29sIEpTQ2VsbDo6aXNDb25zdHJ1Y3Rv
cihWTSYgdm0pCit7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOworICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICByZXR1cm4gaXNDb25zdHJ1Y3Rvcih2bSwgY29u
c3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7Cit9CisKK2lubGluZSBib29sIEpTQ2VsbDo6aXND
b25zdHJ1Y3RvcihWTSYgdm0sIENvbnN0cnVjdFR5cGUmIGNvbnN0cnVjdFR5cGUsIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0VHlwZSA9IG1ldGhvZFRhYmxl
KHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzLCBjb25zdHJ1Y3REYXRhKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lOworfQorCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlID09
IEFQSVZhbHVlV3JhcHBlclR5cGU7CkBAIC0yODIsOSArMjk1LDEwIEBAIGlubGluZSBjb25zdCBN
ZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZSgpIGNvbnN0CiBpbmxpbmUgY29uc3QgTWV0
aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoVk0mIHZtKSBjb25zdAogewogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+c3RydWN0
dXJlKHZtKSkKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyb290U3RydWN0dXJlLCByb290U3RydWN0
dXJlID09IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpOwotCisgICAgICAgIEFTU0VSVChy
b290U3RydWN0dXJlID09IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpOworI2VuZGlmCiAg
ICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGI0MDQ1ZTI5MzYwZjM1NGQ2NzVkZWI4MzU4MWMwZTEyYmUwODBjZTkuLjNhYWJmODRlOThlNTcz
MzE2YmE0NzUxM2ExMzYxYzZmMzAxYzQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwMTUsNjQgKzEwMTUsNjQgQEAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3QKIAogICAgICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAg
bV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBj
b25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAg
ICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBt
X2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0
aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9h
cnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KICAgICAg
ICAgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlv
biwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fYXJy
YXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5p
bnN0YWxsKHZtKTsKICAgICAgICAgfQogCiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAg
bV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odm0sIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAg
ICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwoKTsK
KyAgICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CisgICAgICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmlu
c3RhbGwodm0pOwogICAgICAgICB9CiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJv
dG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAg
ICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7Ci0gICAgICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+
aW5zdGFsbCgpOworICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICB9CiAKICAgICAgICAgewogICAgICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7
Ci0gICAgICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKLSAgICAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KICAgICAgICAgewogICAgICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpOwotICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0
b3JXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBtX3NldFByb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KIAogICAg
ICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBz
ZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAg
ICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmlu
c3RhbGwodm0pOwogICAgICAgICB9CiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5n
UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAg
ICAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1i
b2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1f
c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9zdHJpbmdQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICB9
CiAKICAgICAgICAgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hw
b2ludCk7Ci0gICAgICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwo
KTsKKyAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1f
bWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KIAogICAg
ICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBz
ZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5hZGQpOwotICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsK
LSAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAg
ICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9zZXRQcm90
b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfQogCiAgICAgICAgIHsK
ICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nKTsKLSAgICAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dh
dGNocG9pbnQpOwotICAgICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9p
bnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5n
V2F0Y2hwb2ludCk7CisgICAgICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlKCkt
PmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaAppbmRleCBi
ZjFhN2RiOGQ5ZGZmM2QwNzFjMDgyYzE0OTQ4ZjU2NmQ2Y2E1MjE0Li40ZTBjMjA5MDVlNjM4OGQz
ODQxNWM3ZWFlNDIzNDEzMDA5MzA0YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50LmgKQEAgLTMzLDIxICszMywxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBXYXRj
aHBvaW50PgogY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQgOiBw
dWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U7Ci0gICAgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQoVk0m
IHZtLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uLCBXYXRjaHBvaW50
JiB3YXRjaHBvaW50KQorICAgIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24sIFdhdGNocG9pbnQmIHdh
dGNocG9pbnQpCiAgICAgICAgIDogQmFzZShjb25kaXRpb24pCi0gICAgICAgICwgbV92bSh2bSkK
ICAgICAgICAgLCBtX3dhdGNocG9pbnQod2F0Y2hwb2ludCkKICAgICB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHdhdGNocG9pbnQuc3RhdGVPbkpTVGhyZWFkKCkgPT0gSXNXYXRjaGVkKTsKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmKSBv
dmVycmlkZQorICAgIHZvaWQgaGFuZGxlRmlyZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgbV93YXRjaHBvaW50LmZpcmVBbGwobV92bSwgU3RyaW5n
RmlyZURldGFpbCgiT2JqZWN0IFByb3BlcnR5IGlzIGNoYW5nZWQuIikpOworICAgICAgICBtX3dh
dGNocG9pbnQuZmlyZUFsbCh2bSwgU3RyaW5nRmlyZURldGFpbCgiT2JqZWN0IFByb3BlcnR5IGlz
IGNoYW5nZWQuIikpOwogICAgIH0KIAotICAgIFZNJiBtX3ZtOwogICAgIFdhdGNocG9pbnQmIG1f
d2F0Y2hwb2ludDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAppbmRleCA1YzNlZTVlYjg1ZmNkZTc5MDMwM2FmZTBmMGIxMzIwNmM3NGI0NmQy
Li44MTFlMjlkNWRmNGYwMDJlYzliYjIxMzEwODg2YTJhMTQyMDkwOGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC0xMTIsOCArMTEyLDcg
QEAgdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHUKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5p
bXBsZW1lbnRzSGFzSW5zdGFuY2UoKSAmJiBpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UoKSk7CiAgICAgfQogCi0gICAgQ29uc3RydWN0RGF0YSBpZ25vcmVkQ29uc3RydWN0RGF0YTsK
LSAgICBtX2lzQ29uc3RydWN0aWJsZSA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCktPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBp
Z25vcmVkQ29uc3RydWN0RGF0YSkgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZTsKKyAgICBtX2lzQ29u
c3RydWN0aWJsZSA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCktPmlzQ29uc3RydWN0b3Iodm0p
OwogCiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXRBc09iamVjdCk7CiAgICAgbV9o
YW5kbGVyLnNldCh2bSwgdGhpcywgaGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDNkNWUxNjU1Njk1ODZhMGI2OThhODQ2
MzJiZWJiNDlmZDcwN2I5ZGMuLjI5ZWY2Y2M5YmM3NGI3NDU1NjllMDcwODQ0YWIwYjZiZTJkOGYz
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgQ29uc3RydWN0RGF0
YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZTsKLSAgICBp
ZiAoIXRhcmdldC5pc0NvbnN0cnVjdG9yKGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpKQor
ICAgIGlmICghdGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKIAogICAgIEpTVmFsdWUgbmV3VGFy
Z2V0ID0gdGFyZ2V0OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAg
ICAgICBuZXdUYXJnZXQgPSBleGVjLT5hcmd1bWVudCgyKTsKLSAgICAgICAgaWYgKCFuZXdUYXJn
ZXQuaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICBpZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9y
KHZtKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhl
IHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCIpKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHAKaW5kZXggYWUzMDFlMjY5ZmUwN2EyYzdhOWQ0MzMzYTI4YjgxMzczNTIyZjNmNi4uNzVh
NjJiNzBlNWE2MzA5Y2FkMWMzZjIxOGEyOGU5ZTcyMzVlMWZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCBjbGFzcyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJlRGV0
YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURldGFp
bCYpIG92ZXJyaWRlOwogCiAgICAgU3RydWN0dXJlUmFyZURhdGEqIG1fc3RydWN0dXJlUmFyZURh
dGE7CiB9OwpAQCAtMTAwLDEwICsxMDAsMTAgQEAgY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwdWJsaWM6CiAgICAg
T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mLCBTdHJ1Y3R1cmVSYXJlRGF0YSopOwogCi0gICAgdm9pZCBpbnN0YWxs
KCk7CisgICAgdm9pZCBpbnN0YWxsKFZNJik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJ
bnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJu
YWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwpAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQg
U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgZm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24o
KS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSB7CiAgICAgICAgICAgICBt
X29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKLSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAg
ICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0
aXZlV2F0Y2hwb2ludFNldC5hZGQoY29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCgpOworICAgICAg
ICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2ludFNldC5hZGQoY29uZGl0aW9u
LCB0aGlzKS0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgbV9vYmplY3RUb1N0cmluZ1ZhbHVl
LnNldCh2bSwgdGhpcywgdmFsdWUpOwpAQCAtMTg1LDIwICsxODUsMjAgQEAgT2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Ok9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHAKICAgICBSRUxFQVNFX0FTU0VSVCgha2V5LndhdGNoaW5nUmVxdWlyZXNSZXBs
YWNlbWVudFdhdGNocG9pbnQoKSk7CiB9CiAKLXZvaWQgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoKQordm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbChWTSYgdm0pCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CiAKLSAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJl
KCktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOworICAgIG1fa2V5Lm9iamVjdCgpLT5z
dHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKIH0KIAotdm9pZCBP
YmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmKQordm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYpCiB7CiAgICAg
aWYgKCFtX3N0cnVjdHVyZVJhcmVEYXRhLT5pc0xpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFi
aWxpdHkpKSB7Ci0gICAgICAgIGluc3RhbGwoKTsKKyAgICAgICAgaW5zdGFsbCh2bSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ojppc1ZhbGlkKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVSYXJlRGF0YS0+aXNMaXZlKCk7CiB9CiAKLXZvaWQg
T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ6Omhh
bmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYpCit2b2lkIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmly
ZURldGFpbCYpCiB7CiAgICAgbV9zdHJ1Y3R1cmVSYXJlRGF0YS0+Y2xlYXJPYmplY3RUb1N0cmlu
Z1ZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKaW5kZXggMTAzZDQ3NjhlOWJmNmY5
YTI2MzI4ZTM4ZGQxYzZlYTg3NzAwNjMwNC4uZjljMzIzMmI1YWNmNmM4MDc4M2NkY2E0Y2EzYjYz
MzY4MDdlZmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAtOTUsNyArOTUsNyBAQCBK
U1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1
ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgaWYg
KCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3IoKSkKKyAgICBpZiAoIWNvbnN0cnVjdG9y
VmFsdWUuaXNDb25zdHJ1Y3Rvcih2bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBh
IGNvbnN0cnVjdG9yIikpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9y
VmFsdWUuZ2V0T2JqZWN0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343675</attachid>
            <date>2018-06-26 19:09:13 -0700</date>
            <delta_ts>2018-06-26 22:01:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186241-20180627110911.patch</filename>
            <type>text/plain</type>
            <size>50275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZTk5N2NmODE3YzM5OGIxMmM2MjYxMDZlNjRmNDcyMDQ4Y2ZjOGQ4Li5mZTUzZmY1OTdmY2E3NDBm
MDVhM2FmZmNlMmJiZDlmNDg3MTFkMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQYXNzIFZNJiB0byBmdW5jdGlvbnMgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB0aHJl
YWRzIFZNJiB0byBmdW5jdGlvbnMgcmVxdWlyaW5nIFZNJiBtb3JlLgorCisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0SXNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6Omluc3RhbGwpOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjppbnN0YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAgICAgICAg
KEpTQzo6V2F0Y2hwb2ludDo6ZmlyZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmZp
cmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAg
ICAgICAqIGRmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAgICogZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRBZGFwdG9y
OjphZGQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUlu
aXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBl
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAg
ICogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNsb3cp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6Om1ldGhvZFRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ6Ok9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0Q29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFs
dWUpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6aW5zdGFsbCk6CisgICAgICAgIChKU0M6Ok9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpPYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6
CisKIDIwMTgtMDYtMjYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSlNJbW11dGFibGVCdXR0ZXJmbHkgY2FuJ3QgYmUgYWxsb2NhdGVkIGZyb20gYSBzdWJzcGFj
ZSB3aXRoIEhlYXBDZWxsOjpLaW5kOjpBdXhpbGlhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNmRmMTg0Njlj
MTI3MjE3MDUyNmEzMmMxZTg5MWEyYjAxNTZiODYxLi4yMTAyYWRlZDAxNDQzYTZlYTM3YzJlYWVj
OWU4MDMzNTQ0ZDg1NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjYg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
UGFzcyBWTSYgdG8gZnVuY3Rpb25zIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NjI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
ZmluZSk6CisKIDIwMTgtMDYtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHN0YXRpYyBpbml0aWFsaXplcnMgbW9yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlMmE0ZTJhODhhMWFmZDk5OTY2
ZGRkYzczZjk5ZDAwZGQwNmE3ZjJjLi41NjZiNzM2MmYxYjVkZmU0OWVmM2Q5NmNmNTcyNGVmNDg3
OGZiZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAt
NjMwLDkgKzYzMCw3IEBAIGJvb2wgSlNPYmplY3RJc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0g
ICAgcmV0dXJuIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoanNP
YmplY3QsIGNvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJu
IHRvSlMob2JqZWN0KS0+aXNDb25zdHJ1Y3Rvcih2bSk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0Q2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuY3BwCmluZGV4IDNmMDJkNGYzOTI4OWI3ZGYwODQ0MmFlNDI5OWNl
OTAwYmQ5ZDM0MDQuLmIyNmZiZjZhY2M4NjNhMmFkZmU1MjAxYmI2MmVkZWIyMjA3YmJkMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5j
cHAKQEAgLTM2LDE4ICszNiwyMCBAQCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlOjpBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogICAgIFJFTEVB
U0VfQVNTRVJUKGtleS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsK
IH0KIAotdm9pZCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpp
bnN0YWxsKCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZTo6aW5zdGFsbChWTSYgdm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFi
bGUoKSk7CiAKLSAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25X
YXRjaHBvaW50KCZtX3N0cnVjdHVyZVdhdGNocG9pbnQpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gbV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7CiAKLSAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmdldENvbmN1cnJlbnRseSht
X2tleS51aWQoKSk7Ci0gICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbV9rZXkub2JqZWN0KCktPnN0
cnVjdHVyZSgpLT5wcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOworICAg
IHN0cnVjdHVyZS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoJm1fc3RydWN0dXJlV2F0Y2hwb2lu
dCk7CisKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseShtX2tleS51aWQoKSk7CisgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5w
cm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgIHNldC0+YWRkKCZt
X3Byb3BlcnR5V2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZTo6ZmlyZShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lk
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoVk0mIHZt
LCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgLy8gT25lIG9mIHRoZSB3YXRjaHBv
aW50cyBmaXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0LiBNYWtlIHN1cmUgdGhhdCBuZWl0
aGVyIG9mIHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBhbnltb3JlLiBUaGlzIHNpbXBsaWZp
ZXMgdGhpbmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFsbCB0aGUgd2F0Y2hwb2ludHMKQEAg
LTYxLDExICs2MywxMSBAQCB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9rZXkuaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdh
dGNoYWJpbGl0eSkpIHsKLSAgICAgICAgaW5zdGFsbCgpOworICAgICAgICBpbnN0YWxsKHZtKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZUZpcmUoZGV0YWlsKTsKKyAgICBo
YW5kbGVGaXJlKHZtLCBkZXRhaWwpOwogfQogCiBib29sIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmlzVmFsaWQoKSBjb25zdApAQCAtNzMsMjIgKzc1LDIyIEBA
IGJvb2wgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6aXNWYWxp
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVy
bmFsKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIHB0cmRpZmZfdCBteU9m
ZnNldCA9IE9CSkVDVF9PRkZTRVRPRihBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLCBtX3N0cnVjdHVyZVdhdGNocG9pbnQpOwogCiAgICAgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSogcGFyZW50ID0gYml0d2lzZV9jYXN0PEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqPihiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRoaXMpIC0gbXlPZmZzZXQpOwogCi0gICAgcGFyZW50LT5maXJlKGRldGFpbCk7CisgICAg
cGFyZW50LT5maXJlKHZtLCBkZXRhaWwpOwogfQogCi12b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OlByb3BlcnR5V2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0m
IHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgcHRyZGlmZl90IG15T2Zmc2V0
ID0gT0JKRUNUX09GRlNFVE9GKEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UsIG1fcHJvcGVydHlXYXRjaHBvaW50KTsKIAogICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqIHBhcmVudCA9IGJpdHdpc2VfY2FzdDxBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0
aGlzKSAtIG15T2Zmc2V0KTsKICAgICAKLSAgICBwYXJlbnQtPmZpcmUoZGV0YWlsKTsKKyAgICBw
YXJlbnQtPmZpcmUodm0sIGRldGFpbCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oCmluZGV4
IDk4ZTMzODE5Mzc4ZjU3ZDM2YWNlMTYyNGViYzgwYjViMzQ5ZjI1ODcuLjUwZDg0YmE4ODhkNTFi
OTI5MjAzN2YxMTQ0ZTQ4NmJkYmRlMmUyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaApAQCAtNDEsMjkgKzQxLDI5IEBAIGNsYXNzIEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgewogCiAgICAgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAK
LSAgICB2b2lkIGluc3RhbGwoKTsKKyAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAogICAgIHZpcnR1
YWwgfkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UoKSA9IGRlZmF1
bHQ7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikgPSAwOwogCiBwcml2
YXRlOgogICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7
CiAgICAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmVXYXRjaHBvaW50KCkgeyB9CiAgICAgcHJv
dGVjdGVkOgotICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYp
IG92ZXJyaWRlOwogICAgIH07CiAgICAgY2xhc3MgUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGlj
IFdhdGNocG9pbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvcGVydHlXYXRjaHBvaW50KCkg
eyB9CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJl
RGV0YWlsJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3Qg
RmlyZURldGFpbCYpIG92ZXJyaWRlOwogICAgIH07CiAKLSAgICB2b2lkIGZpcmUoY29uc3QgRmly
ZURldGFpbCYpOworICAgIHZvaWQgZmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsKIAogICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnQg
bV9zdHJ1Y3R1cmVXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApp
bmRleCA1MGNmNzM3OGRmM2MwYzhlZWYxM2NmMzI0ODE5YWI3YmYyYmUwMjI3Li5jOTZkNWE0ZDNm
MmMwNjE2YjE4YjU4ZmM2MGU4MDY1YTRlYTBiYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRj
aHBvaW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0
YWlsJiBkZXRhaWwpCit2b2lkIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUlu
dGVybmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIGlmIChERkc6OnNo
b3VsZER1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJGaXJpbmcgd2F0Y2hwb2lu
dCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIG9uICIsICptX2NvZGVCbG9jaywgIlxuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50LmgKaW5kZXggNjM1Y2Q3OGNhYTYyYTY2NmQ4OGVkM2VjODA3
OWNlM2JjMGNlOTAxYi4uNjEwMjYxZjZhNTU4YzUyZWZkMDYyZmYyMTNkMmQ1MmNkYzhlZTA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAg
fQogICAgIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRh
aWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZXRh
aWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcAppbmRleCBkNmNjMjJkNTE1MGRmOGVjZGI4YmI4YTM1YzVhY2QyYzU3ZjcxZTUwLi5lZWNk
OGZiYzU5YTM3ZWFjOTJhZjhhYjgwODg3OTdlOGYxMGZiMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNDAsMTcg
KzQwLDE3IEBAIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1CiAgICAgUkVMRUFTRV9BU1NFUlQoIWtl
eS53YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50KCkpOwogfQogCi12b2lkIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFsbCgpCit2
b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6aW5zdGFs
bChWTSYgdm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXkuaXNXYXRjaGFibGUoKSk7CiAK
LSAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50
KHRoaXMpOworICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9u
V2F0Y2hwb2ludCh0aGlzKTsKIH0KIAotdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikKK3ZvaWQg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJu
YWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJikKIHsKICAgICBpZiAobV9rZXkuaXNXYXRjaGFi
bGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgaW5z
dGFsbCgpOworICAgICAgICBpbnN0YWxsKHZtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5o
CmluZGV4IDY2NDY4ZjBlZjg0NWJjM2I3ZjY1NDlkMGVkZGIzNTAzOGQzNThlYjAuLmUwZTFiZThk
MDcwNTdiZDZiNjExZjhhNTM5MWQ1ZDg3YjJhMzJkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM2LDEyICszNiwxMiBA
QCBjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBw
dWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50KCkgPSBkZWZhdWx0OwogICAgIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYsIEluc3Ry
dWN0aW9uKik7CiAKLSAgICB2b2lkIGluc3RhbGwoKTsKKyAgICB2b2lkIGluc3RhbGwoVk0mKTsK
IAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVy
biBtX2tleTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmly
ZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwgY29uc3QgRmly
ZURldGFpbCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIG1fa2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDNiZDQ0
NTMyY2QxMzFlZmQ2Njc4Nzc0Mjg3YzBjOWVmMzFiNDRhN2QuLjc4MTYzNTc5Yjg3ODEyNzFlYTRh
MTZkNjE3N2E4NDBhOTgwMDUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludCogU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6cHVzaCgKICAgICByZXR1cm4gaGVhZC5nZXQo
KTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpmaXJlSW50ZXJu
YWwoY29uc3QgRmlyZURldGFpbCYpCit2b2lkIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogewogICAgIGlmICgh
bV9rZXkgfHwgIW1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRj
aGFiaWxpdHkpKSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCBpbXBsaWNpdGx5IGNhdXNlIG15IG93
biBkZW1pc2U6IHN0dWIgcmVzZXQgcmVtb3ZlcyBhbGwgd2F0Y2hwb2ludHMuCkBAIC01OSw3ICs1
OSw2IEBAIHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KGNvbnN0IEZpcmVEZXRhaWwmKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVk0mIHZt
ID0gKm1fa2V5Lm9iamVjdCgpLT52bSgpOwogICAgIGlmIChtX2tleS5raW5kKCkgPT0gUHJvcGVy
dHlDb25kaXRpb246OlByZXNlbmNlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEgcHJlc2Vu
Y2UgY29uZGl0aW9uLCBsZXQncyB3YXRjaCB0aGUgcHJvcGVydHkgZm9yIHJlcGxhY2VtZW50cy4g
VGhpcyBpcyBwcm9maXRhYmxlCiAgICAgICAgIC8vIGZvciB0aGUgREZHLCB3aGljaCB3aWxsIHdh
bnQgdGhlIHJlcGxhY2VtZW50IHNldCB0byBiZSB2YWxpZCBpbiBvcmRlciB0byBkbyBjb25zdGFu
dCBmb2xkaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKaW5kZXggNjY1YzU2YTk4
NmYwZjZjNTBhNTRlMDMwYTg0OTcwNzViNGZmNmE5NC4uM2MwYTdmYjRkNjEyNjE1ODExYWIzMzli
OGNhOTU2MjhiZGM1MTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC02
MSw3ICs2MSw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQgOiBwdWJs
aWMgV2F0Y2hwb2ludCB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50PiYgaGVhZCk7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRl
cm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwo
Vk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gbV9rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5jcHAKaW5kZXggN2FiMzg1ZjU4NWNjOTAzMWM0NmRlNWE5MDYxY2RmYmE4
ZjIwNGY4OS4uYjE5YWRiNGViYzAzMDAyNzZiNzVjOWFlZTA3Y2I1ZjI4N2M2Y2YwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcApAQCAtNDksMTAg
KzQ5LDEwIEBAIFdhdGNocG9pbnQ6On5XYXRjaHBvaW50KCkKICAgICB9CiB9CiAKLXZvaWQgV2F0
Y2hwb2ludDo6ZmlyZShjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIFdhdGNocG9pbnQ6
OmZpcmUoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIWlzT25MaXN0KCkpOwotICAgIGZpcmVJbnRlcm5hbChkZXRhaWwpOworICAgIGZpcmVJ
bnRlcm5hbCh2bSwgZGV0YWlsKTsKIH0KIAogV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldChX
YXRjaHBvaW50U3RhdGUgc3RhdGUpCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXYXRjaHBvaW50
U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwp
CiAgICAgICAgIEFTU0VSVChtX3NldC5iZWdpbigpICE9IHdhdGNocG9pbnQpOwogICAgICAgICBB
U1NFUlQoIXdhdGNocG9pbnQtPmlzT25MaXN0KCkpOwogICAgICAgICAKLSAgICAgICAgd2F0Y2hw
b2ludC0+ZmlyZShkZXRhaWwpOworICAgICAgICB3YXRjaHBvaW50LT5maXJlKHZtLCBkZXRhaWwp
OwogICAgICAgICAvLyBBZnRlciB3ZSBmaXJlIHRoZSB3YXRjaHBvaW50LCB0aGUgd2F0Y2hwb2lu
dCBwb2ludGVyIG1heSBiZSBhIGRhbmdsaW5nIHBvaW50ZXIuIFRoYXQncwogICAgICAgICAvLyBm
aW5lLCBiZWNhdXNlIHdlIGhhdmUgbm8gdXNlIGZvciB0aGUgcG9pbnRlciBhbnltb3JlLgogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCmluZGV4IDc3
OGZlMTZjMzgyOGFkMjI0Y2JjMWUzY2RmMDA5M2QwYTY2Zjg3ODguLmNhZmY0MThjODZlYTMwYzQw
N2YyYjg2NjUzNWIzZTdiMTdkYzBiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1dhdGNocG9pbnQuaApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVk07CisKIGNsYXNzIEZpcmVEZXRhaWwgewogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QpID0gZGVsZXRlOwogICAgIApAQCAtOTYsMTEgKzk4LDExIEBAIGNsYXNzIFdhdGNocG9p
bnQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gewogICAgIHZpcnR1
YWwgfldhdGNocG9pbnQoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50
ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVy
bmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpID0gMDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgV2F0Y2hwb2ludFNldDsKLSAgICB2b2lkIGZpcmUoY29uc3QgRmlyZURldGFpbCYpOwor
ICAgIHZvaWQgZmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsKIH07CiAKIGVudW0gV2F0Y2hw
b2ludFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNw
cAppbmRleCBmN2I5MWM4ZDc1ODQyOWIxMzE5MTY5ZTkyNWE0YWRkM2NkMmI5ZGQ0Li41YjRhMjM3
MThkNDZiNjljZGRmMTJkYmVmZDY5NjBmZGY5MDNlMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50CiB7CiB9CiAKLXZvaWQgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpoYW5kbGVGaXJlKFZNJiwgY29u
c3QgRmlyZURldGFpbCYgZGV0YWlsKQogewogICAgIGlmIChERkc6OnNob3VsZER1bXBEaXNhc3Nl
bWJseSgpKQogICAgICAgICBkYXRhTG9nKCJGaXJpbmcgd2F0Y2hwb2ludCAiLCBSYXdQb2ludGVy
KHRoaXMpLCAiICgiLCBrZXkoKSwgIikgb24gIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCmluZGV4IDA4OWNjYTZjNzEzNmNk
NTk3MGI2ODIzNWE4Y2UzNTUzZDQxOGM4ZmIuLjYxOTlhNzA4ZGU3NmZmN2Q4MjhmMmQ1NTc4Njc0
MGE0NjQxZDQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQu
aApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VgogICAgIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYsIENvZGVCbG9jayopOwogCiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlRmlyZShjb25z
dCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3Qg
RmlyZURldGFpbCYpIG92ZXJyaWRlOwogCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggZDg4MjA3MWM3ZWIwYjNhOGI2ZDc4M2ZmMTEz
ZmVlNDkzZTMzNjBiYS4uZDRhOGI5YTdkOGM3ODJiZGRiOWMxZTRhYzcxZmNiMjU0ZjBiZDYwZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNDMsMTcgKzQzLDE3IEBAIEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KAogICAgIFJFTEVB
U0VfQVNTRVJUKCFrZXkud2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpKTsK
IH0KIAotdm9pZCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoKQordm9pZCBB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKG1fa2V5LmlzV2F0Y2hhYmxlKCkpOwogICAgIAotICAgIG1fa2V5Lm9iamVjdCgp
LT5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CisgICAgbV9rZXku
b2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOwog
fQogCi12b2lkIEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0
IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Ojpm
aXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgaWYg
KG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkp
KSB7Ci0gICAgICAgIGluc3RhbGwoKTsKKyAgICAgICAgaW5zdGFsbCh2bSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAppbmRleCA0MGZjYzEwMDlmM2Zk
NjBiNTYwZmQwNzA0OTFjMGE1MDBlMjdlYzdjLi5jMWY1NzRmNTMzOTI2ZDQzMDdiMmRlMzA2ZDUz
N2YxMGJiN2RlNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKQEAgLTM4LDEwICszOCwxMCBAQCBj
bGFzcyBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAg
ICAgCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5OyB9CiAgICAgCi0gICAgdm9pZCBpbnN0YWxsKCk7CisgICAgdm9pZCBpbnN0YWxs
KFZNJik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0
YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGV0
YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
bV9rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRX
YXRjaHBvaW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRj
aHBvaW50cy5jcHAKaW5kZXggODRiYTJkZmFjMjI2ZTdlYTBkZGJjNGUxN2ZmOWU5ZGU2NzBjYzM5
MC4uMTczZDAzZTVmOTljZmFmYjMxYjcxNWY2YTBhOGJlNGNiYWI3MTg4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcApAQCAt
NTgsMTIgKzU4LDEzIEBAIHZvaWQgSW5mZXJyZWRWYWx1ZUFkYXB0b3I6OmFkZCgKIHZvaWQgQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5LCBDb21tb25EYXRhJiBj
b21tb24pCiB7CisgICAgVk0mIHZtID0gKmNvZGVCbG9jay0+dm0oKTsKICAgICBzd2l0Y2ggKGtl
eS5raW5kKCkpIHsKICAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZToKLSAg
ICAgICAgY29tbW9uLmFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHMuYWRk
KGtleSwgY29kZUJsb2NrKS0+aW5zdGFsbCgpOworICAgICAgICBjb21tb24uYWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50cy5hZGQoa2V5LCBjb2RlQmxvY2spLT5pbnN0YWxs
KHZtKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgY29tbW9uLmFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludHMuYWRkKGtleSwgY29kZUJsb2NrKS0+aW5zdGFsbCgpOwor
ICAgICAgICBjb21tb24uYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50cy5hZGQoa2V5LCBjb2Rl
QmxvY2spLT5pbnN0YWxsKHZtKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYzhkM2U0NzE0
Y2VmZDkyNDlmZWI5ODg1ZjA1ZmNmNjhiNjk1ZTUyMC4uYjEwZjAwNzMyY2MxNjZiNDQ2NGY5NDY2
NDk0NGE0OTllYzY3Nzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC02NzYsNyArNjc2LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRC
eUlkUHJvdG90eXBlQ2FjaGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEluc3RydWN0aW9uKiBw
YywKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24o
KS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKQogICAgICAgICAgICAgb2Zm
c2V0ID0gY29uZGl0aW9uLmNvbmRpdGlvbigpLm9mZnNldCgpOwotICAgICAgICB3YXRjaHBvaW50
cy5hZGQoY29uZGl0aW9uLCBwYyktPmluc3RhbGwoKTsKKyAgICAgICAgd2F0Y2hwb2ludHMuYWRk
KGNvbmRpdGlvbiwgcGMpLT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICBBU1NFUlQoKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KSA9PSBzbG90LmlzVW5zZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggY2M2OWY4YjYzYzc5
NDI4M2UyYWNlNDhkNzBmMjI2YTFhNjBiYzExZi4uNDc3NDc1MDU0OTExMjgzYWQzMGZjODdlMGNl
YjM1ODJkZTk4YWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNDb25z
dHJ1CiAKICAgICAgICAgY29uc3RydWN0b3IgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBleGNlcHRpb25SZXN1bHQoKSk7Ci0gICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc0NvbnN0
cnVjdG9yKCkpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdG9yLmlzQ29uc3RydWN0b3Iodm0pKSB7
CiAgICAgICAgICAgICBKU09iamVjdCogY29uc3RydWN0b3JPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICBpZiAoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpICE9IGNvbnN0cnVjdG9yT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0
UGF0aCwgbnVsbHB0cik7OwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgY2xhc3MgQXJyYXlQcm90b3R5
cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5m
ZXJyZWQKICAgICBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9p
bnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mLCBBcnJheVByb3RvdHlwZSopOwogCiBw
cml2YXRlOgotICAgIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBoYW5kbGVGaXJlKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwog
CiAgICAgQXJyYXlQcm90b3R5cGUqIG1fYXJyYXlQcm90b3R5cGU7CiB9OwpAQCAtMTQ5NiwxMCAr
MTQ5NiwxMCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNo
cG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIG1fY29uc3RydWN0b3JXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVdhdGNocG9pbnQ+KGNvbnN0cnVjdG9yQ29uZGl0aW9uLCB0aGlzKTsKLSAgICBtX2NvbnN0
cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgIG1fY29uc3RydWN0b3JXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKIAogICAgIG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRj
aHBvaW50PihzcGVjaWVzQ29uZGl0aW9uLCB0aGlzKTsKLSAgICBtX2NvbnN0cnVjdG9yU3BlY2ll
c1dhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICBtX2NvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogCiAgICAgLy8gV2Ugb25seSB3YXRjaCB0aGlzIGZyb20gdGhlIERG
RywgYW5kIHRoZSBERkcgbWFrZXMgc3VyZSB0byBvbmx5IHN0YXJ0IHdhdGNoaW5nIGlmIHRoZSB3
YXRjaHBvaW50IGlzIGluIHRoZSBJc1dhdGNoZWQgc3RhdGUuCiAgICAgUkVMRUFTRV9BU1NFUlQo
IWdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLmlzQmVpbmdXYXRjaGVkKCkp
OyAKQEAgLTE1MTIsMTUgKzE1MTIsMTUgQEAgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlXYXRjaHBvaW50OjpBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWQKIHsKIH0K
IAotdm9pZCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6
OmhhbmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQordm9pZCBBcnJheVByb3RvdHlw
ZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUoVk0mIHZtLCBj
b25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgYXV0byBsYXp5RGV0YWlsID0gY3JlYXRl
TGF6eUZpcmVEZXRhaWwoIkFycmF5UHJvdG90eXBlIGFkYXB0aW9uIG9mICIsIGtleSgpLCAiIGZh
aWxlZDogIiwgZGV0YWlsKTsKIAogICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBXVEY6OmRhdGFMb2cobGF6eURldGFpbCwgIlxuIik7CiAKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9hcnJheVByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuZmlyZUFsbChn
bG9iYWxPYmplY3QtPnZtKCksIGxhenlEZXRhaWwpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3Qodm0pOworICAgIGdsb2Jh
bE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLmZpcmVBbGwodm0sIGxhenlEZXRhaWwp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHAKaW5kZXggMDExZTA4ZjI0NTg3MzAyMDQ2MWM2YjViNzA4OWUzNjJlM2NiNzkwMS4uYjMwNDY2
MDU5YWU2NTUzZDdkZjViYmYxOTdlY2ViMDYyZWUyYzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkuaXNDb25zdHJ1Y3RvcigpOworICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3IoZXhlYy0+dm0oKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNDb25zdHJ1Y3RvcikpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCmluZGV4IGRj
M2NiN2RiYWIzZTNhNTA2MDk2OTJiYjg4NzM0NzUxMzNkMDVlZDguLjNhY2IyMjI3MDg0OTNjNzIz
NzVkNTYxNjM4ZWEwODBjZmM5NTM0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRnVu
Y3Rpb25SYXJlRGF0YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQogICAgIG1fb2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LmZpcmVBbGwoKnZtKCksIHJlYXNvbik7CiB9CiAKLXZv
aWQgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ6
OmZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikKK3ZvaWQgRnVuY3Rpb25SYXJlRGF0YTo6
QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYsIGNv
bnN0IEZpcmVEZXRhaWwmKQogewogICAgIG1fcmFyZURhdGEtPmNsZWFyKCJBbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCBmaXJlZC4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCAyYzU0ZWVkZDZmMjliODIy
YjM1NGQ3NzkxMGJmYTU3YjFkOTk0ZjAzLi5mNGYwMjc1Zjc4ZjM1Zjg0ZWYwODE3NWE4NDZhOGM0
MjhhZTU1ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5oCkBAIC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YSBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgOiBtX3JhcmVEYXRhKHJhcmVEYXRh
KQogICAgICAgICB7IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmlyZUludGVybmFs
KGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwo
Vk0mLCBjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
RnVuY3Rpb25SYXJlRGF0YSogbV9yYXJlRGF0YTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAKaW5kZXggZDM5ZTg2YzEwMWYwMzMzNDE1M2E4NWRiMjNhY2YxMmQ2MTA0ZmU5Yi4uM2E4
YTFiYTEyZjI0MjdlYWJlMjUyNjgwNTFlNTcxYmNhNGM1MzAyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIElu
ZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwm
KQordm9pZCBJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0s
IGNvbnN0IEZpcmVEZXRhaWwmKQogewogICAgIEluZmVycmVkU3RydWN0dXJlKiBpbmZlcnJlZFN0
cnVjdHVyZSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDxJbmZlcnJlZFN0cnVjdHVyZSo+KApAQCAt
NDEsNyArNDEsNyBAQCB2b2lkIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVy
bmFsKGNvbnN0IEZpcmVEZXRhaWwmKQogICAgIGlmICghaW5mZXJyZWRUeXBlLT5pc0xpdmUoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGluZmVycmVkVHlwZS0+cmVtb3ZlU3RydWN0dXJl
KCppbmZlcnJlZFR5cGUtPnZtKCkpOworICAgIGluZmVycmVkVHlwZS0+cmVtb3ZlU3RydWN0dXJl
KHZtKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4
IGMxOTUyM2M5ZTEyN2Q2MDQ4MzljNWNhMTVjMzRkZjNlZmE2MDNmZTkuLjYyOWQwODlmNTQ5Nzc4
MWU0NTc5NTI0MTZlMmE0MWFiMGFjODcxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJbmZlcnJlZFN0cnVjdHVyZVdh
dGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaXJl
SW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVy
bmFsKFZNJiwgY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCmluZGV4IDczYjUzMTNkMWFkZGQxNTQwNWMwZTJiNTg4NGI3NmRlZTAzNmMxNzQu
LjU0ZGNlYmE3ZDA5YzJkMTk2ZDIzNzJmNGQ2ZDg3YjMzZWJiNGIxOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0xMTUs
NyArMTE1LDcgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZVNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBB
U1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3RvcigpKTsKKyAgICBBU1NF
UlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSkpOwogICAgIEFTU0VS
VChuZXdUYXJnZXQgJiYgbmV3VGFyZ2V0ICE9IGV4ZWMtPmpzQ2FsbGVlKCkpOwogCiAgICAgQVNT
RVJUKGJhc2VDbGFzcy0+aGFzTW9ub1Byb3RvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDJkYzVmMjU4OWM2YWQwOWZkZDFh
Y2ZjMmM5MTlhMDk4YjAyYjRkZTIuLjI0NGM0ZjcyYThmNjc4M2NhZGIwNGMyZjVkNDE4N2Y4ZDlh
MWQ5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKQEAgLTk4LDcgKzk4LDcgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEV4ZWNTdGF0ZSogZXgKIHsKICAg
ICAvLyBXZSBhbGxvdyBuZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGJlY2F1c2UgdGhlIEFQSSBuZWVk
cyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIGEgcmVhbCBKUyBm
cmFtZS4KICAgICAvLyBTaW5jZSB3ZSBkb24ndCBhbGxvdyBzdWJjbGFzc2luZyBpbiB0aGUgQVBJ
IHdlIGp1c3QgdHJlYXQgbmV3VGFyZ2V0ID09IEpTVmFsdWUoKSBhcyBuZXdUYXJnZXQgPT0gZXhl
Yy0+anNDYWxsZWUoKQotICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0
cnVjdG9yKCkpOworICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0cnVj
dG9yKGV4ZWMtPnZtKCkpKTsKIAogICAgIGlmIChuZXdUYXJnZXQgJiYgbmV3VGFyZ2V0ICE9IGV4
ZWMtPmpzQ2FsbGVlKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNs
b3coZXhlYywgbmV3VGFyZ2V0LCBiYXNlQ2xhc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDk0ZDVhNTE1ZTk2YzlmMjFhZWQ4MmJiMGJlYzllNmRh
Njk2NjJhZjMuLjM1MWI3OGFkMzE3MjAyMjFmODQ3NGI2YzVjN2ZlMDA2ZDIwZjhhOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIyMCw4ICsyMjAs
OCBAQCBjbGFzcyBKU1ZhbHVlIHsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBib29s
IGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0mLCBDYWxsVHlw
ZSYsIENhbGxEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKENvbnN0cnVjdFR5cGUmLCBDb25zdHJ1Y3REYXRhJikgY29u
c3Q7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJikgY29uc3Q7CisgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKICAgICBi
b29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBi
b29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA0YWIyMWJiYjc2OGFjNmZlNTk2
Yzk0NjIxY2ZhNTBiNTE2MjlhZjk5Li5mN2FmODY4YjczYmE1ZjhhZGY1M2I5YzVmOTIyZjZhZmU2
YTIxZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKQEAgLTc3MiwyMiArNzcyLDE4IEBAIGlubGluZSBib29sIEpTVmFsdWU6Omlz
Q2FsbGFibGUoVk0mIHZtLCBDYWxsVHlwZSYgY2FsbFR5cGUsIENhbGxEYXRhJiBjYWxsRGF0YSkK
ICAgICByZXR1cm4gYXNDZWxsKCktPmlzQ2FsbGFibGUodm0sIGNhbGxUeXBlLCBjYWxsRGF0YSk7
CiB9CiAKLWlubGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoKSBjb25zdAoraW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgaWYgKCFp
c0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpTQ2VsbCogY2VsbCA9IGFzQ2Vs
bCgpOwotICAgIENvbnN0cnVjdERhdGEgaWdub3JlZDsKLSAgICByZXR1cm4gY2VsbC0+bWV0aG9k
VGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsLCBpZ25vcmVkKSAhPSBDb25zdHJ1Y3RUeXBl
OjpOb25lOworICAgIHJldHVybiBhc0NlbGwoKS0+aXNDb25zdHJ1Y3Rvcih2bSk7CiB9CiAKLWlu
bGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoQ29uc3RydWN0VHlwZSYgY29uc3RydWN0
VHlwZSwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkgY29uc3QKK2lubGluZSBib29sIEpT
VmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZtLCBDb25zdHJ1Y3RUeXBlJiBjb25zdHJ1Y3RUeXBl
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKSBjb25zdAogewogICAgIGlmICghaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsK
LSAgICBjb25zdHJ1Y3RUeXBlID0gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShjZWxsLCBjb25zdHJ1Y3REYXRhKTsKLSAgICByZXR1cm4gY29uc3RydWN0VHlwZSAhPSBDb25z
dHJ1Y3RUeXBlOjpOb25lOworICAgIHJldHVybiBhc0NlbGwoKS0+aXNDb25zdHJ1Y3Rvcih2bSwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7CiB9CiAKIC8vIHRoaXMgbWV0aG9kIGlzIGhl
cmUgdG8gYmUgYWZ0ZXIgdGhlIGlubGluZSBkZWNsYXJhdGlvbiBvZiBKU0NlbGw6OmluaGVyaXRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDdjMWYwMTk3M2I2Y2Rm
MzM4OTNlNGNmM2U2YmNlNTJkOGJlY2JhYTIuLmFlNmVmNmNmZjk5ZWI1MmE2MzcwMGM5ZmE5Mzkw
ZjkyNzAxZDkxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0x
MTEsNiArMTExLDggQEAgY2xhc3MgSlNDZWxsIDogcHVibGljIEhlYXBDZWxsIHsKICAgICBib29s
IGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGlzRnVuY3Rpb24oVk0mKTsKICAgICBib29sIGlz
Q2FsbGFibGUoVk0mLCBDYWxsVHlwZSYsIENhbGxEYXRhJik7CisgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKFZNJik7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJiwgQ29uc3RydWN0VHlwZSYsIENv
bnN0cnVjdERhdGEmKTsKICAgICBib29sIGluaGVyaXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZvKikg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0PiBib29sIGluaGVyaXRzKFZNJikg
Y29uc3Q7CiAgICAgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDIzNDczNmU0NzYxMjI3
NWMyNzY1ZGNjMmVkYTU3Zjc3ZjBlN2UxYjcuLmNkYTZhMWVjYjk5YmMzMzY1YWUyNjliNmIyNzBm
Mzg5ODBhMzU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKQEAgLTI0Nyw2ICsyNDcsMTkgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc0NhbGxh
YmxlKFZNJiB2bSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAg
cmV0dXJuIGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lOwogfQogCitpbmxpbmUgYm9vbCBKU0Nl
bGw6OmlzQ29uc3RydWN0b3IoVk0mIHZtKQoreworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0
VHlwZTsKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgcmV0dXJuIGlzQ29u
c3RydWN0b3Iodm0sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOworfQorCitpbmxpbmUg
Ym9vbCBKU0NlbGw6OmlzQ29uc3RydWN0b3IoVk0mIHZtLCBDb25zdHJ1Y3RUeXBlJiBjb25zdHJ1
Y3RUeXBlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdFR5
cGUgPSBtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcywgY29uc3RydWN0RGF0
YSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZTsKK30K
KwogaW5saW5lIGJvb2wgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHlwZSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOwpAQCAtMjgyLDkgKzI5NSwxMCBA
QCBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAog
aW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKFZNJiB2bSkgY29u
c3QKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7Cisj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpCi0gICAgICAgIEFTU0VSVF9VTlVTRUQocm9vdFN0cnVj
dHVyZSwgcm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUodm0pKTsKLQor
ICAgICAgICBBU1NFUlQocm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUo
dm0pKTsKKyNlbmRpZgogICAgIHJldHVybiAmc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCA2YTliNzhkYThjM2MyNDY4OGYzOWRhODJhMTZiOGM5YzEyOThkODRi
Li5mNDZjODVlNmFjMGE4NTVmMGQwNjYxMTdlOTU2NjlhNDU1YmUyZGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMDE1LDY0
ICsxMDE1LDY0IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAKICAgICAgICAgewogICAgICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
KTsKLSAgICAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOwotICAgICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCgp
OworICAgICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwog
ICAgICAgICB9CiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBl
KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICAgICAgbV9h
cnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHZtLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0g
ICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKCk7CisgICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0KIAogICAgICAgICB7CiAgICAg
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
KTsKLSAgICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOwotICAgICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfQogICAgICAgICB7CiAgICAgICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCk7Ci0gICAgICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBt
X21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fbWFwUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90
eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1fc2V0SXRlcmF0b3JQ
cm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwg
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBtX3NldEl0ZXJh
dG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICB9CiAgICAg
ICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNl
dHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNvbmRpdGlvbiwg
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3NldFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9z
ZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pihjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICAg
ICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgICAgICB9CiAKICAgICAgICAgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgICAgIG1f
c3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHZtLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwot
ICAgICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0
YWxsKCk7CisgICAgICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9p
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOworICAgICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfQogICAgICAgICB7CiAgICAgICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCk7Ci0gICAgICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fc3RyaW5n
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9zdHJpbmdQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1fc3Ry
aW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4oY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAg
ICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICAgICAgfQogCiAgICAgICAgIHsKICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgICAgICBtX21hcFBy
b3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9u
LCBtX21hcFNldFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRj
aHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9p
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7
CisgICAgICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgICAgICB9CiAKICAgICAgICAgewogICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0
KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgICAgIG1fc2V0UHJvdG90eXBl
QWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fc2V0
QWRkV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQt
Pmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKKyAgICAg
ICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAg
IH0KIAogICAgICAgICB7CiAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5cGUoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgICAgICBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1f
bnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBl
VG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKCk7CisgICAgICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwg
bV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICAgICAgbV9udW1iZXJQcm90b3R5
cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICAgICAgbV9udW1iZXJQ
cm90b1RvU3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51
bWJlclByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
KSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50LmgKaW5kZXggYmYxYTdkYjhkOWRmZjNkMDcxYzA4MmMxNDk0OGY1NjZkNmNhNTIxNC4u
NGUwYzIwOTA1ZTYzODhkMzg0MTVjN2VhZTQyMzQxMzAwOTMwNGEwNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oCkBAIC0zMywyMSArMzMsMTkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgV2F0Y2hwb2ludD4KIGNsYXNzIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOwotICAgIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50KFZNJiB2bSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRp
dGlvbiwgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKKyAgICBPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
LCBXYXRjaHBvaW50JiB3YXRjaHBvaW50KQogICAgICAgICA6IEJhc2UoY29uZGl0aW9uKQotICAg
ICAgICAsIG1fdm0odm0pCiAgICAgICAgICwgbV93YXRjaHBvaW50KHdhdGNocG9pbnQpCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXRjaHBvaW50LnN0YXRlT25KU1RocmVhZCgpID09
IElzV2F0Y2hlZCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgaGFuZGxlRmlyZShjb25z
dCBGaXJlRGV0YWlsJikgb3ZlcnJpZGUKKyAgICB2b2lkIGhhbmRsZUZpcmUoVk0mIHZtLCBjb25z
dCBGaXJlRGV0YWlsJikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fd2F0Y2hwb2ludC5maXJl
QWxsKG1fdm0sIFN0cmluZ0ZpcmVEZXRhaWwoIk9iamVjdCBQcm9wZXJ0eSBpcyBjaGFuZ2VkLiIp
KTsKKyAgICAgICAgbV93YXRjaHBvaW50LmZpcmVBbGwodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIk9i
amVjdCBQcm9wZXJ0eSBpcyBjaGFuZ2VkLiIpKTsKICAgICB9CiAKLSAgICBWTSYgbV92bTsKICAg
ICBXYXRjaHBvaW50JiBtX3dhdGNocG9pbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZjU2OWNhNTk2NTBhM2IxMjc0ZGVmZTYy
YjIwODE3ZGI1Y2RlOTIxMi4uNzUyMWRjOTVlYzIzZmUzNDc1MzBhMmQwZTY1ZTM4OTdiMTg3YWMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApA
QCAtMTEyLDggKzExMiw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkgJiYgaW5mby5pbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlKCkpOwogICAgIH0KIAotICAgIENvbnN0cnVjdERhdGEgaWdub3Jl
ZENvbnN0cnVjdERhdGE7Ci0gICAgbV9pc0NvbnN0cnVjdGlibGUgPSBqc0Nhc3Q8SlNPYmplY3Qq
Pih0YXJnZXQpLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoanNDYXN0PEpTT2Jq
ZWN0Kj4odGFyZ2V0KSwgaWdub3JlZENvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5v
bmU7CisgICAgbV9pc0NvbnN0cnVjdGlibGUgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLT5p
c0NvbnN0cnVjdG9yKHZtKTsKIAogICAgIG1fdGFyZ2V0LnNldCh2bSwgdGhpcywgdGFyZ2V0QXNP
YmplY3QpOwogICAgIG1faGFuZGxlci5zZXQodm0sIHRoaXMsIGhhbmRsZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAppbmRleCBhNDMzZjZk
ZTUxMzNhODFkY2VhNThiNmY1Y2JmNjA3ZDM3YTU4MTZiLi43OTk5ZTM0NmE4OGI0MzM2YzVmZGI2
NWEzZWMzZDgyM2VkNWI1ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtMTAxLDEzICsxMDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGU7Ci0gICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhKSkKKyAgICBpZiAoIXRhcmdldC5pc0NvbnN0cnVjdG9yKHZtLCBjb25zdHJ1
Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zKSk7CiAKICAgICBKU1ZhbHVlIG5l
d1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsK
ICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMik7Ci0gICAgICAgIGlmICghbmV3
VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgaWYgKCFuZXdUYXJnZXQuaXNDb25zdHJ1
Y3Rvcih2bSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFy
Z3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCJfcykpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmlu
ZGV4IGEwMzc1ZmI5ODJmZGY4NzE3OWJjYTcwNTc2MTBmMDM2Yjg5ZTdiNjUuLjg5ODRjZTkxOTU2
YTgxZDUxYWQwZDUyMzM2MzBlNjk5ZTM2ZGViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
Y2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQgOiBwdWJsaWMgQWRhcHRpdmVJbmYKIAogcHJpdmF0ZToKICAgICBib29sIGlzVmFsaWQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGhhbmRsZUZpcmUoY29uc3QgRmlyZURldGFpbCYpIG92
ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVy
cmlkZTsKIAogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBtX3N0cnVjdHVyZVJhcmVEYXRhOwogfTsK
QEAgLTEwMCwxMCArMTAwLDEwIEBAIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgewogcHVibGljOgogICAgIE9iamVjdFRv
U3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uJiwgU3RydWN0dXJlUmFyZURhdGEqKTsKIAotICAgIHZvaWQgaW5zdGFsbCgpOworICAg
IHZvaWQgaW5zdGFsbChWTSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaXJlSW50ZXJuYWwo
Y29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKFZNJiwg
Y29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBtX2tleTsKQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lkIFN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZt
LCBTdHJ1Y3R1cgogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uIDog
Y29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgp
ID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewogICAgICAgICAgICAgbV9vYmplY3RU
b1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Pihl
cXVpdkNvbmRpdGlvbiwgdGhpcyk7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRp
dmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9vYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNo
cG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1f
b2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcykt
Pmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5zZXQodm0s
IHRoaXMsIHZhbHVlKTsKQEAgLTE4NSwyMCArMTg1LDIwIEBAIE9iamVjdFRvU3RyaW5nQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwCiAgICAgUkVMRUFTRV9BU1NFUlQoIWtleS53YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRX
YXRjaHBvaW50KCkpOwogfQogCi12b2lkIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50OjppbnN0YWxsKCkKK3ZvaWQgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6Omluc3RhbGwoVk0mIHZtKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fa2V5
LmlzV2F0Y2hhYmxlKCkpOwogCi0gICAgbV9rZXkub2JqZWN0KCktPnN0cnVjdHVyZSgpLT5hZGRU
cmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKKyAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJl
KHZtKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQodGhpcyk7CiB9CiAKLXZvaWQgT2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25zdCBGaXJl
RGV0YWlsJikKK3ZvaWQgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6
OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmKQogewogICAgIGlmICghbV9z
dHJ1Y3R1cmVSYXJlRGF0YS0+aXNMaXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X2tleS5pc1dhdGNoYWJsZShQcm9wZXJ0eUNvbmRpdGlvbjo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkg
ewotICAgICAgICBpbnN0YWxsKCk7CisgICAgICAgIGluc3RhbGwodm0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBPYmplY3RUb1N0cmluZ0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aXNWYWxpZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fc3RydWN0dXJlUmFyZURhdGEtPmlzTGl2ZSgpOwogfQogCi12b2lkIE9iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OjpoYW5kbGVGaXJl
KGNvbnN0IEZpcmVEZXRhaWwmKQordm9pZCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDo6aGFuZGxlRmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwm
KQogewogICAgIG1fc3RydWN0dXJlUmFyZURhdGEtPmNsZWFyT2JqZWN0VG9TdHJpbmdWYWx1ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4IDAwYWUwZGFlNDE1MjE5Mjg4M2JlNGRk
OWYwNzQzZmM5ZmQ1ODZiMGMuLmI3MTgxZGQwODU1Yzg0MmZjODdkNzI3ZDJhMjY0NGJjYjk2YzA0
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1ZSBK
U0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgY29uc3Ry
dWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGlmICghY29uc3Ry
dWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKCkpCisgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlz
Q29uc3RydWN0b3Iodm0pKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zKTsKICAg
ICBKU09iamVjdCogY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvclZhbHVlLmdldE9iamVjdCgpOwog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>