<?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>271695</bug_id>
          
          <creation_ts>2024-03-26 00:08:51 -0700</creation_ts>
          <short_desc>REGRESSION(276672@main): Broke with newer SDK</short_desc>
          <delta_ts>2024-03-26 00:15:14 -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>
          
          <blocked>271534</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2023863</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-03-26 00:08:51 -0700</bug_when>
    <thetext>https://commits.webkit.org/276672@main introduced a regression:
Broke with newer SDK

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2023865</commentid>
    <comment_count>1</comment_count>
      <attachid>470602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-03-26 00:08:58 -0700</bug_when>
    <thetext>Created attachment 470602
REVERT of 276672@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2023866</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-26 00:14:07 -0700</bug_when>
    <thetext>Committed 276676@main (b03ed1747f3d): &lt;https://commits.webkit.org/276676@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 470602.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2023867</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-03-26 00:15:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/125399984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470602</attachid>
            <date>2024-03-26 00:08:58 -0700</date>
            <delta_ts>2024-03-26 00:14:08 -0700</delta_ts>
            <desc>REVERT of 276672@main</desc>
            <filename>bug-271695-20240326070858.patch</filename>
            <type>text/plain</type>
            <size>109086</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA4YWI4NTUyMmI0ZWNjYTljOTFhYzdjNTkwMGI1Y2NjMjMyMTE2NTdjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDI2IE1hciAyMDI0IDA3OjA4OjU1ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI3NjY3MkBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3MTY5NQoKQnJva2Ugd2l0aCBuZXdlciBTREsKClJldmVydGVk
IGNoYW5nZXNldDoKCiJVc2Ugc3RkOjpzcGFuIG1vcmUgd2l0aCBTaGFyZWRCdWZmZXIiCmh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1MzQKaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvMjc2NjcyQG1haW4KLS0tCiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgg
ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMSAtCiBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwICAgICAgfCAgIDggKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0lt
cGwuaCAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24u
aCAgICAgICAgICAgIHwgIDExIC0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCAg
ICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oICAg
ICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
ICAgICAgICAgIHwgICA4ICstCiAuLi4vQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwICAgICB8ICAgMiArLQogLi4uL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
ICAgICAgIHwgICA1ICstCiAuLi4vZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCAg
ICAgICAgfCAgIDQgKy0KIC4uLi9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAg
ICAgICB8ICAgMiArLQogLi4uL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICAg
ICAgIHwgICAyICstCiAuLi4vV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
ICAgfCAgIDIgKy0KIC4uLi9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCAgICAg
ICB8ICAgMiArLQogLi4uL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCAgICAg
IHwgIDEwICstCiAuLi4vTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCAgICAgICAg
fCAgIDIgKy0KIC4uLi9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCB8
ICAgMiArLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCAgICAgIHwg
ICAyICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCAgICAgICAgICAgfCAg
IDIgKy0KIC4uLi9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCAgICAgICAgICB8ICAx
MiArLQogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAgICAgICAgIHwgICAy
ICstCiAuLi4vbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCAgICAgfCAgMTQg
Ky0KIC4uLi9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgICAgICB8ICAgNCAr
LQogU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwICAgICAgIHwgICAyICst
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCAgICAgICAgICAgfCAgIDIgKy0K
IC4uLi9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCB8ICAgMiArLQog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCAgICAgIHwgICA2ICstCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCAgICAgICAgfCAgIDggKy0KIC4u
Li9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgICAgICB8ICAgMiArLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggICAgICAgIHwgICAyICstCiAuLi4v
YXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwICAgICAgfCAgIDYgKy0KIC4uLi9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICAgICAgICB8ICAgMiArLQogLi4uL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggICAgICAgIHwgICAyICstCiAuLi4vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwICAgfCAgIDggKy0KIC4uLi9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwICB8ICAgMiArLQogLi4uL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgICAgICAgIHwgICAyICstCiAuLi4vYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCAgICAgfCAgIDQgKy0KIC4uLi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tICAgICB8ICAgMiArLQogLi4uL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIHwgICA2ICstCiAuLi4vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gICAgICAgfCAgIDIgKy0KIC4uLi9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICB8ICAgMiArLQogLi4uL2dyYXBoaWNzL2Nv
Y29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tIHwgIDIxICstLQogLi4uL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgICAgIHwgICA3ICstCiAuLi4vcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQWRhcHRlckd0ay5jcHAgfCAgIDIgKy0KIC4uLi9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCAgICB8ICAgMiArLQogLi4uL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgIHwgICAyICstCiAuLi4vTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgIDIgKy0KIC4uLi9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgICB8ICA0NiArKystLS0KIC4uLi9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oICAgICB8ICAxMCArLQogLi4uL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGFCdWlsZGVyLmNwcCAgICAgIHwgICAyICstCiAuLi4vcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAgICAgICAgfCAgIDIgKy0KIC4uLi9iYWNrZ3JvdW5kLWZldGNoL0Jh
Y2tncm91bmRGZXRjaC5jcHAgICAgICB8ICAgMiArLQogLi4uL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwICAgIHwgICAyICstCiAuLi4vbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcCAgICB8ICAyNCArLS0KIC4uLi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmggICAgICB8ICAgNCArLQogLi4uL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcCAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vc3RvcmFnZS9DYWNoZVN0b3JhZ2VEaXNr
U3RvcmUuY3BwICAgICAgICAgfCAgIDQgKy0KIC4uLi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuY3BwICAgICB8ICAgMiArLQogLi4uL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuY3BwICAgICAgIHwgICAyICstCiAuLi4vVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwICAgICAgfCAgIDIgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAgICAgICB8ICAgMiArLQogLi4uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbSAgICAgICAgIHwgICA0ICstCiAuLi4vc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAgfCAgIDIgKy0KIC4uLi93aW4vSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVI
YW5kbGVyLmNwcCB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZEd0azMuY3BwIHwgICAyICstCiAuLi4vR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24u
Y3BwICAgICAgfCAgIDIgKy0KIC4uLi9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cCAgICAgICB8ICAgMiArLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgIHwgICA4ICstCiAuLi4vV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
ICAgICAgfCAgIDIgKy0KIC4uLi9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgICAgICAg
ICAgICB8IDEzOCArKysrKysrKystLS0tLS0tLS0KIC4uLi9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbSAgICAgICB8ICAgNSArLQogNzcgZmlsZXMgY2hhbmdlZCwgMjQ5IGluc2Vy
dGlvbnMoKyksIDI0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggOGM0MzZlNTA2
YzEwLi42ZTg1MjNlMGY4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE2OCw5ICsxNjgsOSBAQCBX
VEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
bG9uZyBsb25nIG9mZnNldCwgRmlsZQogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBmbHVzaEZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKIC8vIFJldHVybnMgbnVt
YmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3Qgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYg
c3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgotV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1G
aWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Blbk1vZGUsIE9w
dGlvblNldDxGaWxlTG9ja01vZGU+ID0gRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpOwogV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCmluZGV4IGViNGQ3ODQ1ODFlZC4uMDZlYzFjZTNiM2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtODAw
LDcgKzgwMCw2IEBAIHB1YmxpYzoKICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBCYXNlOjpjYXBhY2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IXNpemUoKTsgfQogICAgIHN0ZDo6c3Bhbjxjb25zdCBUPiBzcGFuKCkgY29uc3QgeyByZXR1cm4g
eyBkYXRhKCksIHNpemUoKSB9OyB9Ci0gICAgc3RkOjpzcGFuPFQ+IG11dGFibGVTcGFuKCkgeyBy
ZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CiAKICAgICBWZWN0b3I8VD4gc3VidmVjdG9yKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGggPSBzdGQ6OmR5bmFtaWNfZXh0ZW50KSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDNkZGZh
Y2FlYTc4NC4uMGQyMDdiNTZlODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAKQEAgLTEzNCwyMCArMTM0LDIwIEBAIGJvb2wgZmx1c2hGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuICFmc3luYyhoYW5kbGUpOwogfQogCi1pbnQ2NF90
IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBkbyB7Ci0gICAgICAgIGF1
dG8gYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgICAgICBp
bnQgYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCkpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID49IDApCiAgICAgICAgICAgICBy
ZXR1cm4gYnl0ZXNXcml0dGVuOwogICAgIH0gd2hpbGUgKGVycm5vID09IEVJTlRSKTsKICAgICBy
ZXR1cm4gLTE7CiB9CiAKLWludDY0X3QgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitpbnQgcmVhZEZyb21GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgZG8g
ewotICAgICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOwor
ICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNp
emVfdD4obGVuZ3RoKSk7CiAgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKICAgICAgICAgICAg
IHJldHVybiBieXRlc1JlYWQ7CiAgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oCmluZGV4IGUzMjQzZDQ4N2EyYi4uNGZhYjRmMTkxZmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oCkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZChB
U0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gYWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3Rl
cnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSk7IH0KIAogICAgIC8vIE5vdCB1c2luZyB0aGUgYWRkKCkg
bmFtaW5nIHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIGNhbGwgYWRkKEFTQ0lJTGl0ZXJhbCkg
d2hlbiB0aGV5IGhhdmUgYSBzdHJpbmcgbGl0ZXJhbC4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZENTdHJpbmcoY29uc3QgY2hhciogcykgeyByZXR1
cm4gcyA/IGFkZChXVEY6OnNwYW44KHMpKSA6IG51bGxwdHI7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZENTdHJpbmcoY29uc3QgY2hhciogcykg
eyByZXR1cm4gcyA/IGFkZChzdGQ6OnNwYW4geyBzLCBzdHJsZW4ocykgfSkgOiBudWxscHRyOyB9
CiAKICAgICAvLyBSZXR1cm5zIG51bGwgaWYgdGhlIGlucHV0IGRhdGEgY29udGFpbnMgYW4gaW52
YWxpZCBVVEYtOCBzZXF1ZW5jZS4KICAgICBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBh
ZGRVVEY4KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKaW5kZXggODIyYjVjNTkzYjJjLi45YjMwZDA5NzZlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdDb21tb24uaApAQCAtMTE1MywyMCArMTE1Myw5IEBAIGlubGluZSBzdGQ6
OnNwYW48Y29uc3QgVUNoYXI+IHNwYW4oY29uc3QgVUNoYXImIGNoYXJhY3RlcikKICAgICByZXR1
cm4geyAmY2hhcmFjdGVyLCAxIH07CiB9CiAKLWlubGluZSBzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IHNwYW44KGNvbnN0IGNoYXIqIHN0cmluZykKLXsKLSAgICByZXR1cm4geyByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oc3RyaW5nKSwgc3RyaW5nID8gc3RybGVuKHN0cmluZykgOiAwIH07
Ci19Ci0KLWlubGluZSBzdGQ6OnNwYW48Y29uc3QgY2hhcj4gc3Bhbihjb25zdCBjaGFyKiBzdHJp
bmcpCi17Ci0gICAgcmV0dXJuIHsgc3RyaW5nLCBzdHJpbmcgPyBzdHJsZW4oc3RyaW5nKSA6IDAg
fTsKLX0KLQogfQogCiB1c2luZyBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2U7CiB1c2luZyBX
VEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlOwogdXNpbmcgV1RGOjppc0xhdGluMTsK
IHVzaW5nIFdURjo6c3BhbjsKLXVzaW5nIFdURjo6c3Bhbjg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCmluZGV4IDA4MTI5MzM5NGEyMC4uMTVhNDAyMGFkY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2li
bGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIAogICAgIC8vIE5vdCB1
c2luZyBjcmVhdGUoKSBuYW1pbmcgdG8gZW5jb3VyYWdlIGRldmVsb3BlcnMgdG8gY2FsbCBjcmVh
dGUoQVNDSUlMaXRlcmFsKSB3aGVuIHRoZXkgaGF2ZSBhIHN0cmluZyBsaXRlcmFsLgotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tQ1N0cmluZyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzKSB7IHJldHVybiBjcmVhdGUoV1RGOjpzcGFuOChjaGFyYWN0ZXJz
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUNTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gY3JlYXRlKHN0ZDo6c3Bh
biB7IGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0ZXJzKSB9KTsgfQogCiAgICAgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbChTdHJpbmdJbXBsJiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CmluZGV4IGIxZDY4NTEzNTE2NS4uNGU4Yzc2NDI0OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaApAQCAtNDA4LDcgKzQwOCw3IEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KHN0
ZDo6c3Bhbjxjb25zdCBVQ2hhcj4gY2hhcmFjdGVycykKIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0
cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycykKIHsKLSAgICBpbml0aWFsaXplKFdURjo6
c3BhbjgoY2hhcmFjdGVycykpOworICAgIGluaXRpYWxpemUoc3RkOjpzcGFuIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJzID8gc3RybGVuKGNo
YXJhY3RlcnMpIDogMCB9KTsKIH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoc3Rk
OjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJhY3RlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggYjdmZjgzZjJiOGQyLi4xYzIzMzA1M2M5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBib29sIGZsdXNoRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQ2NF90IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
dm9pZCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxl
KSkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjg1LDEwICsyODUsMTAgQEAgaW50NjRfdCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQogCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ5dGVzV3JpdHRlbik7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oYnl0ZXNXcml0dGVuKTsKIH0KIAotaW50NjRfdCByZWFkRnJvbUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2lu
dCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgdm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0
dXJuIC0xOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGludDY0X3QgcmVhZEZyb21GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
NjRfdD4oYnl0ZXNSZWFkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQp
OwogfQogCiBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggNDdlNTZj
ODA1YWMwLi45ZTlmMDQ5MzU4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051bGwoKSkKICAgICAgICAgbV9kYXRhID0g
eyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVmZmVyID0gbV9ibG9i
TG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFycmF5QnVmZmVyLT5zcGFuKCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRl
ciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNDRmNDk4ZmQyYTBkLi5jNWRh
OTZmZjNmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBA
IC00MTYsNyArNDE2LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoKmNodW5rKTsKKyAgICAgICAgICAgICAgICBkYXRh
LmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZUFzQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IGEyMjgyNmI0OGNiYS4uOWEyMzhlZjkyZjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKQEAgLTExNiw3ICsxMTYsOCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBXVEZNb3Zl
KGtpZHNBcnJheSkpOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpLnNwYW4oKSk7CisgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAogc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCkBAIC0xNzgsNyArMTc5LDcgQEAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5
SURzQ2VuYyhjb24KICAgICAgICAgICAgIGlmIChDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSkgewogICAg
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdCA6IGZwc1Bzc2gtPmluaXREYXRh
Qm94KCkucmVxdWVzdHMoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJl
cXVlc3QucmVxdWVzdEluZm8oKS5rZXlJRCgpOwotICAgICAgICAgICAgICAgICAgICBrZXlJRHMu
YXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELnNwYW4oKSkpOworICAgICAgICAgICAg
ICAgICAgICBrZXlJRHMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELmRhdGEoKSwg
a2V5SUQuc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggYTUwMTIxMzk3YzVhLi45NjQxODU4MjJlOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
QnVmZgogICAgIC8vIDguIExldCBzZXNzaW9uIHR5cGUgYmUgdGhpcyBvYmplY3QncyBzZXNzaW9u
IHR5cGUuCiAgICAgLy8gOS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyAx
MC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShpbml0RGF0YS5zcGFuKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CisgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5n
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERh
dGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBk
YXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQg
aW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRh
dGEuCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9p
bXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsK
QEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1
ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDQuIExl
dCByZXNwb25zZSBjb3B5IGJlIGEgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNl
IHBhcmFtZXRlci4KICAgICAvLyA1LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAg
IC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVzcG9uc2Uuc3BhbigpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUg
ewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQg
YW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCiAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCBhZTgzMWNlZDlkMGUuLjAzNzUy
YmRjODgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBS
ZWY8CiAgICAgfQogCiAgICAgLy8gMy4gTGV0IGNlcnRpZmljYXRlIGJlIGEgY29weSBvZiB0aGUg
Y29udGVudHMgb2YgdGhlIHNlcnZlckNlcnRpZmljYXRlIHBhcmFtZXRlci4KLSAgICBhdXRvIGNl
cnRpZmljYXRlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VydmVyQ2VydGlmaWNhdGUuc3Bhbigp
KTsKKyAgICBhdXRvIGNlcnRpZmljYXRlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VydmVyQ2Vy
dGlmaWNhdGUuZGF0YSgpLCBzZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5ndGgoKSk7CiAKICAgICAvLyA0
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA3ZmQzNTMxMzg0ZmEuLjU0NTBlZjJkODJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGF0YS5h
cHBlbmQoKmNodW5rKTsKKyAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3Ry
ZWFtKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggM2Q0ODRiNTlkMDkxLi44ZjY3M2E1OTIyOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDgy
LDcgKzQ4Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRh
JiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5zcGFuKCkp
KTsKKyAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2h1
bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9u
c2U6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggNTBkMzlm
MTMzODdjLi45NjQwYjA1YTU0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNTYsNyArNTYs
NyBAQCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOwogICAgIGVuY29kZXIgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGVuY29kZXIuc3BhbigpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggY2I3OWQ4YjgyMWJjLi4wZGYxN2RjM2Q0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5j
cHAKQEAgLTMwNyw3ICszMDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OnNl
dEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoZGF0YS5zcGFuKCkpOworICAgIHJldHVybiBh
cHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0
YS5kYXRhKCkpLCBkYXRhLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlc2V0
UGFyc2VyU3RhdGUoKQpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzY2hl
ZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkKICAgICBxdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcklu
dGVybmFsKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorRXhjZXB0aW9uT3I8dm9pZD4g
U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBzaXplKQogewogICAgIC8vIFNlY3Rpb24gMy4yIGFwcGVuZEJ1ZmZlcigp
CiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1
bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3dpZGwtU291cmNlQnVmZmVyLWFwcGVu
ZEJ1ZmZlci12b2lkLUFycmF5QnVmZmVyVmlldy1kYXRhCkBAIC01OTcsNyArNTk3LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGEKICAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91cGRhdGluZykK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4Y2VwdGlvbkNvZGU6OkludmFsaWRTdGF0ZUVy
cm9yIH07CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzaXplID0gIiwgZGF0YS5z
aXplKCksICJtYXhpbXVtQnVmZmVyU2l6ZSA9ICIsIG1heGltdW1CdWZmZXJTaXplKCksICJidWZm
ZXJlZCA9ICIsIG1fYnVmZmVyZWQtPnJhbmdlcygpLCAiIHN0cmVhbWluZyA9ICIsIG1fc291cmNl
LT5zdHJlYW1pbmcoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic2l6ZSA9ICIs
IHNpemUsICJtYXhpbXVtQnVmZmVyU2l6ZSA9ICIsIG1heGltdW1CdWZmZXJTaXplKCksICJidWZm
ZXJlZCA9ICIsIG1fYnVmZmVyZWQtPnJhbmdlcygpLCAiIHN0cmVhbWluZyA9ICIsIG1fc291cmNl
LT5zdHJlYW1pbmcoKSk7CiAKICAgICAvLyAzLiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUg
b2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UgaXMgaW4gdGhlICJlbmRlZCIgc3RhdGUgdGhlbiBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAzLjEuIFNldCB0aGUgcmVhZHlTdGF0ZSBh
dHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UgdG8gIm9wZW4iCkBAIC02MDUsNyAr
NjA1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRl
cm5hbChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGEKICAgICBtX3NvdXJjZS0+b3BlbklmSW5F
bmRlZFN0YXRlKCk7CiAKICAgICAvLyA0LiBSdW4gdGhlIGNvZGVkIGZyYW1lIGV2aWN0aW9uIGFs
Z29yaXRobS4KLSAgICBib29sIGJ1ZmZlckZ1bGwgPSBtX3ByaXZhdGUtPmV2aWN0Q29kZWRGcmFt
ZXMoZGF0YS5zaXplKCksIG1fc291cmNlLT5jdXJyZW50VGltZSgpKTsKKyAgICBib29sIGJ1ZmZl
ckZ1bGwgPSBtX3ByaXZhdGUtPmV2aWN0Q29kZWRGcmFtZXMoc2l6ZSwgbV9zb3VyY2UtPmN1cnJl
bnRUaW1lKCkpOwogCiAgICAgLy8gNS4gSWYgdGhlIGJ1ZmZlciBmdWxsIGZsYWcgZXF1YWxzIHRy
dWUsIHRoZW4gdGhyb3cgYSBRdW90YUV4Y2VlZGVkRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwLgogICAgIGlmIChidWZmZXJGdWxsKSB7CkBAIC02MTYsNyArNjE2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGEKICAgICAvLyBOT1RFOiBSZXR1cm4gdG8gMy4yIGFwcGVuZEJ1
ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRhdGEgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVy
LgogICAgIEFTU0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7Ci0gICAgbV9wZW5kaW5nQXBwZW5k
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIG1fcGVuZGluZ0FwcGVuZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKIAogICAgIC8vIDQuIFNldCB0
aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIHRydWUuCiAgICAgbV91cGRhdGluZyA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApp
bmRleCBkMDIyM2EyYzVmMzIuLmZiOTY2MzVhMWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xOTMsNyArMTkzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzUmVtb3ZlZCgpIGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVF
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFy
KiwgdW5zaWduZWQpOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KE1lZGlhUHJvbWlzZTo6UmVzdWx0JiYpOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApp
bmRleCAzNDNlMmZkMzdhOTYuLjVlZDYxM2EzNGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIW1faGFzQ2xpZW50KSB7CiAgICAgICAgIGF1dG8q
IGRhdGEgPSBidWZmZXIuZGF0YS5kYXRhPHVpbnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXIu
YmluYXJ5KQotICAgICAgICAgICAgbV9idWZmZXJlZE1lc3NhZ2VzLmFwcGVuZChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGQ6OnNwYW4geyBkYXRhLCBidWZmZXIuc2l6ZSgpIH0pKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWRNZXNzYWdlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
YnVmZmVyLnNpemUoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVz
c2FnZXMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZGF0YSwgYnVmZmVyLnNpemUoKSkpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRl
eCA2NTcxYmZiNDZkOTIuLmIxZjNmZmJlMWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJj
ZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlh
dGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faW1tZWRpYXRlU291cmNlLT5zcGFuKCkp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2lt
bWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1
ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBz
dGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBhODMxYjdm
MmExYzAuLjA3MjlmMDllOWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAg
LTgyMiw3ICs4MjIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
cnJheUJ1ZmZlci0+c3BhbigpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgYXV0byBvYnNlcnZlciA9IEltYWdlQml0
bWFwSW1hZ2VPYnNlcnZlcjo6Y3JlYXRlKG1pbWVUeXBlLCBleHBlY3RlZENvbnRlbnRMZW5ndGgs
IHNvdXJjZVVSTCk7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUob2JzZXJ2
ZXIucHRyKCkpOwogICAgIGF1dG8gcmVzdWx0ID0gaW1hZ2UtPnNldERhdGEoc2hhcmVkQnVmZmVy
LmNvcHlSZWYoKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZGQ4MjNhN2RlM2FkLi45
NWY4M2U3NTdhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyOTYsOCArMTI5NiwxMCBAQCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0V2l0aFJlcwogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3MpOwogCiAgICAgICAgIG92ZXJyaWRl
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOwotICAgIH0gZWxz
ZQotICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0
ZjgoKS5zcGFuKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gdXRmOENvbnRlbnQgPSBj
b250ZW50LnV0ZjgoKTsKKyAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodXRmOENvbnRlbnQuZGF0YSgpLCB1dGY4Q29udGVudC5sZW5ndGgoKSk7CisgICAgfQogCiAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92
ZXJyaWRlRGF0YSk7CiAKQEAgLTEzMjIsOCArMTMyNCwxMCBAQCBJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVx
dWVzdAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZGVjb2Rl
IGdpdmVuIGNvbnRlbnQiX3MpOwogCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLnNwYW4oKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXV0byB1dGY4Q29udGVudCA9IGNvbnRlbnQudXRmOCgpOworICAgICAgICBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodXRmOENvbnRlbnQuZGF0YSgpLCB1dGY4Q29udGVudC5sZW5ndGgo
KSk7CisgICAgfQogCiAgICAgLy8gTWltaWMgZGF0YSBVUkwgbG9hZCBiZWhhdmlvciAtIHJlcG9y
dCBkaWRSZWNlaXZlUmVzcG9uc2UgJiBkaWRGaW5pc2hMb2FkaW5nLgogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UocGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwoKSwgbWltZVR5cGUs
IGRhdGEtPnNpemUoKSwgU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMTc2ZTExYTBkNWZlLi5mMjVlZTUyYjJkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMTYzOSw3ICsxNjM5LDcgQEAgU3Vic3RpdHV0ZURhdGEgRnJh
bWVMb2FkZXI6OmRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKICAg
ICBDU3RyaW5nIGVuY29kZWRTcmNkb2MgPSBzcmNkb2Muc3RyaW5nKCkudXRmOCgpOwogCiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoKSwgdGV4dEhUTUxDb250ZW50VHlwZUF0b20o
KSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSwgIlVURi04Il9zKTsKLSAgICByZXR1cm4gU3Vic3Rp
dHV0ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2RlZFNyY2RvYy5zcGFuKCkpLCBVUkwo
KSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6Okhp
ZGRlbik7CisgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwgVVJMKCksIHJlc3Bv
bnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKaW5kZXggMjdhM2NiMGRiNGJiLi5jODMwNDkyNzAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTY4
LDcgKzE2OCw3IEBAIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1odG1sRGF0YTsKLSAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLnNwYW4oKSk7Cisg
ICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAg
c3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTgzLDE1ICsxODMsMTUgQEAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFn
ZSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVu
Y29kaW5nOiAiLCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVz
b3VyY2UudXJsLnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoYXNjaWlTdHJpbmcuc3BhbigpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTog
aWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBo
YXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0
YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNp
emUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFi
bGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5j
b2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNv
ZGVkRGF0YS5zcGFuKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiJfc3Bh
bik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5j
b2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAy
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRF
bmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcg
aW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZz
IGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTIwMSwxNSArMjAxLDE1IEBAIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0
YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVM
ZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBtYXhpbXVtTGluZUxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5zdWJz
cGFuKGluZGV4LCBsaW5lTGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVu
ZCgiXHJcbiJfc3Bhbik7CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVk
RGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgICAgIGluZGV4ICs9IG1heGltdW1M
aW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0cmluZyA9IG1ha2VTdHJpbmcoIi0t
IiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAgbWh0bWxEYXRhLmFwcGVuZChhc2Np
aVN0cmluZy5zcGFuKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgp
LCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcAppbmRleCA1YmJiYmE5OTY0NDYuLmZmMjBiOTQyMjAyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTgx
LDEwICsxODEsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGlu
ZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFy
YWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLnNwYW4oKSk7CisgICAgICAgICAgICBjb250ZW50
LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAg
aWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpR
dW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVt
b3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBj
YXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0
ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iX3NwYW4pOwor
ICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
aW5kZXggYzc3OGYxMjUzMzUyLi5iMmQ2OTdiNWEzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6
OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IAogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAg
ZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5QnVmZmVyLT5zcGFuKCkp
OworICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUp
KTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RlY2ltYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5j
cHAKaW5kZXggNzE5MjM1NDdjYjQ0Li5jYmY1NzZmODUyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgRGVjaW1hbCBEZWNpbWFsOjpmcm9tRG91
YmxlKGRvdWJsZSBkb3VibGVWYWx1ZSkKICAgICBpZiAoc3RkOjppc2Zpbml0ZShkb3VibGVWYWx1
ZSkpIHsKICAgICAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwogICAgICAgICBhdXRv
KiByZXN1bHQgPSBudW1iZXJUb1N0cmluZyhkb3VibGVWYWx1ZSwgYnVmZmVyKTsKLSAgICAgICAg
cmV0dXJuIGZyb21TdHJpbmcoc3BhbjgocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBmcm9tU3Ry
aW5nKHN0ZDo6c3BhbiB7IHJlc3VsdCwgc3RybGVuKHJlc3VsdCkgfSk7CiAgICAgfQogCiAgICAg
aWYgKHN0ZDo6aXNpbmYoZG91YmxlVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDMwNDFmMzJjNjZkMS4uNTNlM2FhM2Q3
NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmln
aW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVu
Y29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGVuY29kZXIuc3BhbigpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGJlMTlmMTQyYTIxYS4uNjE5ZTJkM2M4ZDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
bWFwcGVkRmlsZURhdGEpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZyb21JUENEYXRh
KEkKICAgICAgICAgUmVmUHRyIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFw
KFdURk1vdmUoaGFuZGxlLnZhbHVlKCkpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2hh
cmVkTWVtb3J5QnVmZmVyLT5zcGFuKCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0
YSgpKSwgc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGFlNzU1NDRkYjM5YS4uOTU3ZGM1MmQy
YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTYzLDcgKzE2
Myw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBJUENEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2hhcmVkTWVtb3J5SGFuZGxlPiwgVmVjdG9yPHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90Pj4+OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpAQCAtMjQyLDcgKzI0Myw4IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCk7Ci0gICAgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkgeyBhcHBlbmQoZGF0YSk7
IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBw
ZW5kKGRhdGEsIHNpemUpOyB9CiAgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CkBAIC0yNjUsNiArMjY3LDgg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChzdGQ6OnNwYW4geyBkYXRhLCBsZW5ndGggfSk7IH0gLy8gRklYTUU6IENhbGwgc2l0
ZXMgc2hvdWxkIHBhc3MgaW4gYSBzcGFuLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYpOwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBiOGMyMzI1MjUyZGMuLjk5MjkwMWYw
ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyOjpzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiB2b2lkIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpzZXRTZXBhcmF0b3IoY29uc3QgY2hhciogc2VwYXJhdG9y
KQogewogICAgIG1fc2VwYXJhdG9yLmNsZWFyKCk7Ci0gICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNw
YW4oc2VwYXJhdG9yKSk7CisgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHN0ZDo6c3BhbiB7IHNlcGFy
YXRvciwgc3RybGVuKHNlcGFyYXRvcikgfSk7CiB9CiAKIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8dWludDhfdD4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBh
cmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IDY4ODdmZjA5
MWNhZC4uN2U2MzM2NGMwMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAg
ICB9CiAKLSAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc3BhbigpIGNvbnN0IHsgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YSksIG1fc2l6ZSB9OyB9CisgICAg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzKCkgY29uc3QgeyByZXR1cm4geyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhKSwgbV9zaXplIH07IH0KIAogI2lmIE9TKFdJTkRP
V1MpCiAgICAgSEFORExFIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Zp
bGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggMTUwNTc1NDU5Y2JlLi4zN2U4ZjgwMDk4Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBBdWRpb0ZpbGVS
ZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBpZiAoaXNNYXliZVdlYk0oc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSkpIHsKLSAgICAgICAgbV93ZWJt
RGF0YSA9IGRlbXV4V2ViTURhdGEoc3RkOjpzcGFuIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBkYXRhU2l6ZSB9KTsKKyAgICAgICAgbV93ZWJtRGF0YSA9IGRlbXV4V2ViTURh
dGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSk7CiAgICAgICAg
IGlmIChtX3dlYm1EYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4MSwxMiAr
MTgxLDEyIEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjppc01heWJlV2ViTShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGFTaXplID49IDQg
JiYgZGF0YVswXSA9PSAweDFBICYmIGRhdGFbMV0gPT0gMHg0NSAmJiBkYXRhWzJdID09IDB4REYg
JiYgZGF0YVszXSA9PSAweEEzOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVy
V2ViTURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJN
RGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBhdXRvIHBhcnNlciA9IFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmNyZWF0ZSgpOwogICAgIGlmICghcGFyc2VyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUpOwog
CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYXVkaW9UcmFja0lkOwogICAgIE1lZGlhVGlt
ZSBkdXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5oCmluZGV4IGUwZDNiYzc1ZTY4ZC4uODZjOWI3
MTM2OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIGJvb2wgaXNNYXliZVdlYk0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKSBjb25zdDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2ViTURhdGE+IGRlbXV4V2ViTURhdGEoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+KSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVh
ZGVyV2ViTURhdGE+IGRlbXV4V2ViTURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFTaXplKSBjb25zdDsKICAgICBWZWN0b3I8QXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbj4g
Z2V0UGFja2V0RGVzY3JpcHRpb25zKENNU2FtcGxlQnVmZmVyUmVmKSBjb25zdDsKICAgICBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gZGVjb2RlV2ViTURhdGEoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIGluRm9y
bWF0LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIG91dEZvcm1hdCkgY29uc3Q7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5oCmluZGV4IGM2ODcxMDY0MzI2YS4uNzZiMTZkZWZhZDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5
SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7
CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLnNwYW4oKSk7IH0KKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCB0YWtlVmFs
dWVJZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAppbmRleCAxZjBiNTBkNDAzNmMuLjU1ZDFkZTBlOWIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBXVEZNb3ZlKGtleUlk
c0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCku
dXRmOCgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5zcGFuKCkp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJ
ZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKQEAgLTI0Miw3
ICsyNDIsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1J
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIGtleUlkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBXVEZNb3ZlKGtleUlk
c0FycmF5KSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG9iamVjdC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpLnNwYW4oKSk7CisgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFy
S2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCkBAIC01NzUsNyArNTc2LDggQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKIAogICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEg
aW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5n
ID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7Ci0gICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtZXNzYWdlU3RyaW5nLnV0ZjgoKS5zcGFuKCkpOworICAgICAgICBDU3Ry
aW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4KCk7CisgICAgICAgIG1lc3Nh
Z2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5kYXRhKCksIG1lc3NhZ2VD
U3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0b3JlLnVucmVmQWxsS2V5cygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKaW5kZXggYWE4NWRkMThmYWRlLi4xNzAwMTc3MDIyYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5k
QXJyYXkoKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5p
c2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rl
ci5zcGFuKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVm
ZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAppbmRleCA5ZGYxMjdiYWIwZDQuLjdhZDk3ODFlYmFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzcsNyArMTM3
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFy
aWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRf
YnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRh
ID0gYWRvcHRHUmVmKGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6c3BhbiB7IHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxw
dHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkp
IH0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwCmluZGV4IGI0NTNjNjA3MWJkMy4uMTQ0YmYzZjg1NjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0OCw3ICsyNDgsOSBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplTXB0
cyhjb25zdCBTaGFyZWRCdWZmZQogCiBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6Om1wdHNLZXlJRHMoKSB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1wdHNLZXlJRCA9IFtdIHsK
LSAgICAgICAgcmV0dXJuIFZlY3RvciB7IDEsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCJUcmFuc3Bv
cnRTdHJlYW1JZGVudGlmaWVyIl9zcGFuKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwga2V5SUQg
PSAiVHJhbnNwb3J0U3RyZWFtSWRlbnRpZmllciJfczsKKyAgICAgICAgUmVmIGtleUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELmNoYXJhY3RlcnMoKSwga2V5SUQubGVuZ3RoKCkp
OworICAgICAgICByZXR1cm4gVmVjdG9yIHsgMSwgV1RGTW92ZShrZXlCdWZmZXIpIH07CiAgICAg
fSgpOwogICAgIHJldHVybiBtcHRzS2V5SUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IDFjMDUwN2Iz
ZGQyZC4uZTEwZTY3NmQxMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMTY4LDcgKzE2OCw3IEBAIFJl
ZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAgICAgaWYgKG1fY2RtVmVyc2lvbiA9PSAyKQogICAgICAg
ICBtX2lkZW50aWZpZXIgPSBpbml0RGF0YTsKICAgICBlbHNlCi0gICAgICAgIG1faW5pdERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+c3BhbigpKTsKKyAgICAgICAgbV9pbml0
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5s
ZW5ndGgoKSk7CiAKICAgICBBU1NFUlQoIW1fY2VydGlmaWNhdGUpOwogICAgIFN0cmluZyBjZXJ0
aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcAppbmRleCAwZDVkMDZkYWFiYzUuLmU2ZGFlYTg4OTAxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTg1OCw3ICs4NTgsNyBAQCBTdGF0dXMgV2ViTVBhcnNl
cjo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IFRyYWNrRW50cnkm
IHRyYWNrRQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBr
ZXlJZCA9IGtleUlkRWxlbWVudC52YWx1ZSgpOwotICAgICAgICAgICAgbV9rZXlJZHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHRyYWNrRW50cnkudHJhY2tfdWlkLnZhbHVlKCksIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0ZDo6c3BhbiB7IGtleUlkIH0pKSk7CisgICAgICAgICAgICBtX2tleUlkcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoa2V5SWQuZGF0YSgpLCBrZXlJZC5zaXplKCkpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEyMjYsNyArMTIyNiw3IEBAIHdlYm06OlN0YXR1cyBXZWJNUGFyc2VyOjpB
dWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkZXImIHJlYWRlciwKICAg
ICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llQ29udGVudHM7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHN0ZDo6c3BhbiB7IHByaXZh
dGVEYXRhIH0sICpjb250aWd1b3VzQnVmZmVyLCBjb29raWVDb250ZW50cykpIHsKKyAgICAgICAg
ICAgIGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRl
RGF0YS5kYXRhKCksICpjb250aWd1b3VzQnVmZmVyLCBjb29raWVDb250ZW50cykpIHsKICAgICAg
ICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJGYWlsZWQgdG8gcGFyc2Ug
T3B1cyBwcml2YXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB3
ZWJtOjpTdGF0dXMgV2ViTVBhcnNlcjo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEo
d2VibTo6UmVhZGVyJiByZWFkZXIsCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKCJBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YTogdW5hYmxlIHRvIGNyZWF0
ZSBjb250aWd1b3VzIGRhdGEgYmxvY2siKTsKICAgICAgICAgICAgIHJldHVybiBTa2lwKCZyZWFk
ZXIsIGJ5dGVzUmVtYWluaW5nKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXBhcnNlT3B1c1By
aXZhdGVEYXRhKHN0ZDo6c3BhbiB7IHByaXZhdGVEYXRhIH0sICpjb250aWd1b3VzQnVmZmVyLCBj
b29raWVDb250ZW50cykKKyAgICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRl
RGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwgKmNvbnRpZ3VvdXNCdWZmZXIsIGNvb2tp
ZUNvbnRlbnRzKQogICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0
ICE9IG1fZnJhbWVzUGVyUGFja2V0CiAgICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFt
ZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBh
IHRyYWNrOyBlcnJvciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCAxMTJkNWE0OWYxZDEu
LjEwNmJjZGYxNTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTYwMyw3ICs2MDMsNyBA
QCBzdGF0aWMgUmVmPFZpZGVvSW5mbz4gY3JlYXRlVmlkZW9JbmZvRnJvbVZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkKGNvbnN0IFZQQ29kZQogICAgIHZpZXctPnNldCg4LCByZWNvcmQudHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MsIGZhbHNlKTsKICAgICB2aWV3LT5zZXQoOSwgcmVjb3JkLm1hdHJp
eENvZWZmaWNpZW50cywgZmFsc2UpOwogICAgIHZpZXctPnNldCgxMCwgY29kZWNJbnRpYWxpemF0
aW9uRGF0YVNpemUsIGZhbHNlKTsKLSAgICB2aWRlb0luZm8tPmF0b21EYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodmlldy0+c3BhbigpKTsKKyAgICB2aWRlb0luZm8tPmF0b21EYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dWludDhfdCo+KHZpZXctPmRhdGEoKSksIHZp
ZXctPmJ5dGVMZW5ndGgoKSk7CiAgICAgdmlkZW9JbmZvLT5jb2xvclNwYWNlLmZ1bGxSYW5nZSA9
IHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPT0gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxS
YW5nZTsKICAgICB2aWRlb0luZm8tPmNvbG9yU3BhY2UucHJpbWFyaWVzID0gY29udmVydFRvUGxh
dGZvcm1WaWRlb0NvbG9yUHJpbWFyaWVzKHJlY29yZC5jb2xvclByaW1hcmllcyk7CiAgICAgdmlk
ZW9JbmZvLT5jb2xvclNwYWNlLnRyYW5zZmVyID0gY29udmVydFRvUGxhdGZvcm1WaWRlb1RyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAppbmRleCBjMjI1NDU4ZDg2OTUuLjc2MmQ2ZDliN2Rl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
TUF1ZGlvVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oCkBAIC02Myw3ICs2Myw3IEBAIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNPcHVzRGVjb2RlckF2YWlsYWJsZSgpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCByZWdpc3Rlck9wdXNEZWNvZGVySWZOZWVkZWQoKTsKIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGtPcHVzSGVhZGVyU2l6ZSA9IDE5Owogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga09w
dXNNaW5pbXVtRnJhbWVEYXRhU2l6ZSA9IDI7Ci1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBwcml2YXRlRGF0YSwgU2hhcmVkQnVmZmVyJiBmcmFtZURh
dGEsIE9wdXNDb29raWVDb250ZW50cyYpOworYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXpl
X3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB1aW50OF90KiBwcml2YXRlRGF0YSwgU2hhcmVkQnVm
ZmVyJiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYpOwogYm9vbCBwYXJzZU9wdXNUT0NE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmKTsK
IFJlZlB0cjxBdWRpb0luZm8+IGNyZWF0ZU9wdXNBdWRpb0luZm8oY29uc3QgT3B1c0Nvb2tpZUNv
bnRlbnRzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggYzZmM2Y4
NjM5NWJlLi5lOGFiMjI3YTcyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1t
CkBAIC0yNTEsNyArMjUxLDcgQEAgYm9vbCBwYXJzZU9wdXNUT0NEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmIGNvb2tpZSkKICNlbmRpZgogfQog
Ci1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBjb2Rl
Y1ByaXZhdGVEYXRhLCBTaGFyZWRCdWZmZXImIGZyYW1lRGF0YSwgT3B1c0Nvb2tpZUNvbnRlbnRz
JiBjb29raWUpCitib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVT
aXplLCBjb25zdCB1aW50OF90KiBjb2RlY1ByaXZhdGVEYXRhLCBTaGFyZWRCdWZmZXImIGZyYW1l
RGF0YSwgT3B1c0Nvb2tpZUNvbnRlbnRzJiBjb29raWUpCiB7CiAjaWYgRU5BQkxFKE9QVVMpCiAg
ICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUKQEAgLTI4MCw0NCArMjgw
LDQ1IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGNvZGVjUHJpdmF0ZURhdGEsIFNoYXJlZEJ1ZmZlCiAgICAgLy8gICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAg
IC8vICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSsKIAotICAgIGlmIChjb2RlY1ByaXZhdGVEYXRhLnNpemUoKSA8IGtP
cHVzSGVhZGVyU2l6ZSkKKyAgICBpZiAoY29kZWNQcml2YXRlU2l6ZSA8IGtPcHVzSGVhZGVyU2l6
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIDEuIE1hZ2ljIFNpZ25hdHVyZToKICAg
ICAvLwogICAgIC8vICAgICBUaGlzIGlzIGFuIDgtb2N0ZXQgKDY0LWJpdCkgZmllbGQgdGhhdCBh
bGxvd3MgY29kZWMKICAgICAvLyAgICAgaWRlbnRpZmljYXRpb24gYW5kIGlzIGh1bWFuIHJlYWRh
YmxlLgotICAgIGlmIChzdHJuY21wKCJPcHVzSGVhZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNvZGVjUHJpdmF0ZURhdGEuZGF0YSgpKSwgOCkpCisgICAgaWYgKHN0cm5jbXAoIk9w
dXNIZWFkIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29kZWNQcml2YXRlRGF0YSks
IDgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyAyLiBWZXJzaW9uICg4IGJpdHMs
IHVuc2lnbmVkKToKLSAgICBjb29raWUudmVyc2lvbiA9IGNvZGVjUHJpdmF0ZURhdGFbOF07Cisg
ICAgY29va2llLnZlcnNpb24gPSAqKGNvZGVjUHJpdmF0ZURhdGEgKyA4KTsKIAogICAgIC8vIDMu
IE91dHB1dCBDaGFubmVsIENvdW50ICdDJyAoOCBiaXRzLCB1bnNpZ25lZCk6Ci0gICAgY29va2ll
LmNoYW5uZWxDb3VudCA9IGNvZGVjUHJpdmF0ZURhdGFbOV07CisgICAgY29va2llLmNoYW5uZWxD
b3VudCA9ICooY29kZWNQcml2YXRlRGF0YSArIDkpOwogCiAgICAgLy8gNC4gUHJlLXNraXAgKDE2
IGJpdHMsIHVuc2lnbmVkLCBsaXR0bGUgZW5kaWFuKToKLSAgICBjb29raWUucHJlU2tpcCA9IGZs
aXBCeXRlc0lmTGl0dGxlRW5kaWFuKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
Y29kZWNQcml2YXRlRGF0YS5kYXRhKCkgKyAxMCksIHRydWUpOworICAgIGNvb2tpZS5wcmVTa2lw
ID0gZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2
X3QqPihjb2RlY1ByaXZhdGVEYXRhICsgMTApLCB0cnVlKTsKIAogICAgIC8vIDUuIElucHV0IFNh
bXBsZSBSYXRlICgzMiBiaXRzLCB1bnNpZ25lZCwgbGl0dGxlIGVuZGlhbik6Ci0gICAgY29va2ll
LnNhbXBsZVJhdGUgPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbigqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGNvZGVjUHJpdmF0ZURhdGEuZGF0YSgpICsgMTIpLCB0cnVlKTsKKyAg
ICBjb29raWUuc2FtcGxlUmF0ZSA9IGZsaXBCeXRlc0lmTGl0dGxlRW5kaWFuKCpyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oY29kZWNQcml2YXRlRGF0YSArIDEyKSwgdHJ1ZSk7CiAK
ICAgICAvLyA2LiBPdXRwdXQgR2FpbiAoMTYgYml0cywgc2lnbmVkLCBsaXR0bGUgZW5kaWFuKToK
LSAgICBjb29raWUub3V0cHV0R2FpbiA9IGZsaXBCeXRlc0lmTGl0dGxlRW5kaWFuKCpyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDE2X3QqPihjb2RlY1ByaXZhdGVEYXRhLmRhdGEoKSArIDE2KSwg
dHJ1ZSk7CisgICAgY29va2llLm91dHB1dEdhaW4gPSBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbigq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQxNl90Kj4oY29kZWNQcml2YXRlRGF0YSArIDE2KSwg
dHJ1ZSk7CiAKICAgICAvLyA3LiBDaGFubmVsIE1hcHBpbmcgRmFtaWx5ICg4IGJpdHMsIHVuc2ln
bmVkKToKLSAgICBjb29raWUubWFwcGluZ0ZhbWlseSA9IGNvZGVjUHJpdmF0ZURhdGFbMThdOwor
ICAgIGNvb2tpZS5tYXBwaW5nRmFtaWx5ID0gKihjb2RlY1ByaXZhdGVEYXRhICsgMTgpOwogCiAg
ICAgaWYgKCFwYXJzZU9wdXNUT0NEYXRhKGZyYW1lRGF0YSwgY29va2llKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAjaWYgSEFWRShBVURJT0ZPUk1BVFBST1BFUlRZX1ZBUklBQkxFUEFDS0VU
X1NVUFBPUlRFRCkKLSAgICBjb29raWUuY29va2llRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNvZGVjUHJpdmF0ZURhdGEpOworICAgIGNvb2tpZS5jb29raWVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29kZWNQcml2YXRlRGF0YSwgY29kZWNQcml2YXRlU2l6ZSk7CiAjZW5kaWYKIAog
ICAgIHJldHVybiB0cnVlOwogCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVT
aXplKTsKICAgICBVTlVTRURfUEFSQU0oY29kZWNQcml2YXRlRGF0YSk7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvb2tpZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcAppbmRleCBmODM4MWYwM2Y1OGQuLjk2MGU1Y2EyMDA2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVRodW5kZXIuY3BwCkBAIC0yNzEsOCArMjcxLDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImIGluc3Rh
bmMKICAgICAgICAgY29uc3QgdWludDE2X3QgY2hhbGxlbmdlTGVuZ3RoKSB7CiAgICAgICAgIEdT
VF9ERUJVRygiR290ICdjaGFsbGVuZ2UnIE9DRE0gbm90aWZpY2F0aW9uIHdpdGggbGVuZ3RoICVo
dSIsIGNoYWxsZW5nZUxlbmd0aCk7CiAgICAgICAgIEFTU0VSVChjaGFsbGVuZ2VMZW5ndGggPiAw
KTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbiA9IFdlYWtQdHIgeyBzdGF0aWNf
Y2FzdDxDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKj4odXNlckRhdGEpIH0sIGJ1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6c3BhbiB7IGNoYWxsZW5nZSwKLSAgICAg
ICAgICAgIGNoYWxsZW5nZUxlbmd0aCB9KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbc2Vzc2lvbiA9IFdlYWtQdHIgeyBzdGF0aWNfY2FzdDxDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyKj4odXNlckRhdGEpIH0sIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNoYWxsZW5nZSwKKyAgICAgICAgICAgIGNoYWxsZW5nZUxlbmd0aCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgc2Vzc2lvbi0+Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soV1RGTW92ZShi
dWZmZXIpKTsKQEAgLTI5OCw3ICsyOTgsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3RhbmNlVGh1bmRlciYgaW5zdGFuYwogICAg
IH07CiAgICAgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcy5lcnJvcl9tZXNzYWdlX2NhbGxiYWNr
ID0gW10oT3BlbkNETVNlc3Npb24qLCB2b2lkKiB1c2VyRGF0YSwgY29uc3QgY2hhciBtZXNzYWdl
W10pIHsKICAgICAgICAgR1NUX0VSUk9SKCJHb3QgJ2Vycm9yJyBPQ0RNIG5vdGlmaWNhdGlvbjog
JXMiLCBtZXNzYWdlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbiA9IFdlYWtQ
dHIgeyBzdGF0aWNfY2FzdDxDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKj4odXNlckRhdGEpIH0s
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNwYW4obWVzc2FnZSkpXSgp
IG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uID0gV2Vha1B0ciB7
IHN0YXRpY19jYXN0PENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIqPih1c2VyRGF0YSkgfSwgYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZSwKKyAgICAgICAgICAg
IHN0cmxlbihtZXNzYWdlKSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXNlc3Npb24p
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgc2Vzc2lvbi0+ZXJyb3JDYWxs
YmFjayhXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQWRhcHRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VBZGFwdGVyR3RrLmNwcAppbmRleCAyZmVhYTI4NGUwNGMu
LjNmMTFhMjk0NmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQWRhcHRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlQWRhcHRlckd0ay5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGlj
IFJlZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvb3JnL3dlYmtpdGd0
ay9yZXNvdXJjZXMvaW1hZ2VzLyVzIiwgaWNvbk5hbWUpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4g
ZGF0YSA9IGFkb3B0R1JlZihnX3Jlc291cmNlc19sb29rdXBfZGF0YShwYXRoLmdldCgpLCBHX1JF
U09VUkNFX0xPT0tVUF9GTEFHU19OT05FLCBudWxscHRyKSk7CiAgICAgQVNTRVJUKGRhdGEpOwot
ICAgIGljb24tPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpzcGFuIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0
cikpLCBnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpIH0pLCB0cnVlKTsKKyAgICBpY29uLT5z
ZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgZ19ieXRlc19nZXRf
c2l6ZShkYXRhLmdldCgpKSksIHRydWUpOwogICAgIHJldHVybiBpY29uOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCmluZGV4IGY3ZjkzMGM0OThhNS4uMTBlYjA3OTExYzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSUNPSW1h
Z2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
IC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRo
ZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRo
ZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0g
ICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpzcGFuIHsgJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQgfSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNp
emUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpOwogICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhd
LT5zZXREYXRhKHBuZ0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzODE1MWJhOGRhNzUuLmMzMzFlMzFkMjg4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVz
c19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1
bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7
Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUgfSk7
CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAogICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBjMjM0YTEzMTk4MTEuLmRiZjMwOTg2MjdmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQmFja2VuZDo6cHJvY2Vzc1NhbXBsZShHUmVmUHRyPEdz
dFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKIAog
ICAgIEdTVF9MT0dfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlF1ZXVlaW5nICV6dSBieXRl
cyBvZiBlbmNvZGVkIGRhdGEsIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBidWZmZXIuc2l6ZSgp
LCBnc3Rfc2FtcGxlX2dldF9jYXBzKHNhbXBsZS5nZXQoKSkpOwotICAgIG1fZGF0YS5hcHBlbmQo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQog
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQmFja2VuZDo6bm90aWZ5RU9TKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAppbmRleCBkZDA1MzIzYzg1NGIuLjcwMTE3OTgxMTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTE3
LDcgKzExNyw3IEBAIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kCiAKICAgICAvLyBSZWFkIGFsbCB0
aGUgZGF0YS4KICAgICBtX2RhdGEucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4ocmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKLSAgICBzdGF0aWNfY2FzdDxCbG9iUmVzb3VyY2VI
YW5kbGUqPihoYW5kbGUpLT5yZWFkU3luYyhtX2RhdGEubXV0YWJsZVNwYW4oKSk7CisgICAgc3Rh
dGljX2Nhc3Q8QmxvYlJlc291cmNlSGFuZGxlKj4oaGFuZGxlKS0+cmVhZFN5bmMobV9kYXRhLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2RhdGEuc2l6ZSgpKSk7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIApAQCAtMzIxLDcgKzMyMSw3IEBAIGF1dG8gQmxvYlJlc291cmNlSGFuZGxl
OjpzZWVrKCkgLT4gc3RkOjpvcHRpb25hbDxFcnJvcj4KICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1pbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3luYyhzdGQ6OnNwYW48dWludDhf
dD4gYnVmZmVyKQoraW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5bmModWludDhfdCogYnVm
LCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTMyOSw3
ICszMjksNyBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3luYyhzdGQ6OnNwYW48dWlu
dDhfdD4gYnVmZmVyKQogICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgc2l6ZV90IHJlbWFpbmluZyA9IGJ1
ZmZlci5zaXplKCk7CisgICAgaW50IHJlbWFpbmluZyA9IGxlbmd0aDsKICAgICB3aGlsZSAocmVt
YWluaW5nKSB7CiAgICAgICAgIC8vIERvIG5vdCBjb250aW51ZSBpZiB0aGUgcmVxdWVzdCBpcyBh
Ym9ydGVkIG9yIGFuIGVycm9yIG9jY3Vycy4KICAgICAgICAgaWYgKGVycm9yZWRPckFib3J0ZWQo
KSkKQEAgLTM0Miw5ICszNDIsOSBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3luYyhz
dGQ6OnNwYW48dWludDhfdD4gYnVmZmVyKQogICAgICAgICBjb25zdCBCbG9iRGF0YUl0ZW0mIGl0
ZW0gPSBtX2Jsb2JEYXRhLT5pdGVtcygpLmF0KG1fcmVhZEl0ZW1Db3VudCk7CiAgICAgICAgIGlu
dCBieXRlc1JlYWQgPSAwOwogICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVt
OjpUeXBlOjpEYXRhKQotICAgICAgICAgICAgYnl0ZXNSZWFkID0gcmVhZERhdGFTeW5jKGl0ZW0s
IGJ1ZmZlci5zdWJzcGFuKG9mZnNldCkpOworICAgICAgICAgICAgYnl0ZXNSZWFkID0gcmVhZERh
dGFTeW5jKGl0ZW0sIGJ1ZiArIG9mZnNldCwgcmVtYWluaW5nKTsKICAgICAgICAgZWxzZSBpZiAo
aXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgYnl0
ZXNSZWFkID0gcmVhZEZpbGVTeW5jKGl0ZW0sIGJ1ZmZlci5zdWJzcGFuKG9mZnNldCkpOworICAg
ICAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZpbGVTeW5jKGl0ZW0sIGJ1ZiArIG9mZnNldCwgcmVt
YWluaW5nKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKQEAgLTM1OCwxMCArMzU4LDEwIEBAIGludCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRTeW5j
KHN0ZDo6c3Bhbjx1aW50OF90PiBidWZmZXIpCiAgICAgaWYgKGVycm9yZWRPckFib3J0ZWQoKSkK
ICAgICAgICAgcmVzdWx0ID0gLTE7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBidWZmZXIu
c2l6ZSgpIC0gcmVtYWluaW5nOworICAgICAgICByZXN1bHQgPSBsZW5ndGggLSByZW1haW5pbmc7
CiAKICAgICBpZiAocmVzdWx0ID4gMCkKLSAgICAgICAgbm90aWZ5UmVjZWl2ZURhdGEoYnVmZmVy
KTsKKyAgICAgICAgbm90aWZ5UmVjZWl2ZURhdGEoYnVmLCByZXN1bHQpOwogCiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIG5vdGlmeUZpbmlzaCgpOwpAQCAtMzY5LDE1ICszNjksMTcgQEAgaW50
IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5bmMoc3RkOjpzcGFuPHVpbnQ4X3Q+IGJ1ZmZlcikK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0
YVN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtLCBzdGQ6OnNwYW48dWludDhfdD4gYnVmZmVy
KQoraW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERhdGFTeW5jKGNvbnN0IEJsb2JEYXRhSXRl
bSYgaXRlbSwgdm9pZCogYnVmLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBBU1NFUlQoIW1fYXN5bmMpOwogCiAgICAgbG9uZyBsb25nIHJlbWFpbmlu
ZyA9IGl0ZW0ubGVuZ3RoKCkgLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7Ci0gICAgbG9uZyBsb25n
IGJ5dGVzVG9SZWFkID0gc3RkOjptaW4oc3RkOjptaW48bG9uZyBsb25nPihyZW1haW5pbmcsIGJ1
ZmZlci5zaXplKCkpLCBtX3RvdGFsUmVtYWluaW5nU2l6ZSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci5k
YXRhKCksIGl0ZW0uZGF0YSgpLT5kYXRhKCkgKyBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRl
bVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CisgICAgaW50IGJ5dGVzVG9SZWFkID0gKGxlbmd0aCA+
IHJlbWFpbmluZykgPyBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZykgOiBsZW5ndGg7CisgICAg
aWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFpbmluZ1NpemUpCisgICAgICAgIGJ5dGVzVG9S
ZWFkID0gc3RhdGljX2Nhc3Q8aW50PihtX3RvdGFsUmVtYWluaW5nU2l6ZSk7CisgICAgbWVtY3B5
KGJ1ZiwgaXRlbS5kYXRhKCktPmRhdGEoKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVt
UmVhZFNpemUsIGJ5dGVzVG9SZWFkKTsKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRl
c1RvUmVhZDsKIAogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSArPSBieXRlc1RvUmVhZDsKQEAg
LTM4OSw3ICszOTEsNyBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29u
c3QgQmxvYkRhdGFJdGVtJiBpdGVtLCBzdGQ6OnNwYW48dWludDhfdAogICAgIHJldHVybiBieXRl
c1RvUmVhZDsKIH0KIAotaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVTeW5jKGNvbnN0
IEJsb2JEYXRhSXRlbSYgaXRlbSwgc3RkOjpzcGFuPHVpbnQ4X3Q+IGJ1ZmZlcikKK2ludCBCbG9i
UmVzb3VyY2VIYW5kbGU6OnJlYWRGaWxlU3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0sIHZv
aWQqIGJ1ZiwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBA
IC00MDksNyArNDExLDcgQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVTeW5jKGNv
bnN0IEJsb2JEYXRhSXRlbSYgaXRlbSwgc3RkOjpzcGFuPHVpbnQ4X3QKICAgICAgICAgbV9maWxl
T3BlbmVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpbnQgYnl0ZXNSZWFkID0gbV9zdHJlYW0tPnJl
YWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaW50IGJ5dGVzUmVhZCA9IG1f
c3RyZWFtLT5yZWFkKGJ1ZiwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZXNSZWFkIDwgMCkgewogICAg
ICAgICBtX2Vycm9yQ29kZSA9IEVycm9yOjpOb3RSZWFkYWJsZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKQEAgLTQ1OSwxMCArNDYxLDEwIEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFk
RGF0YUFzeW5jKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKICAgICBpZiAoYnl0ZXNUb1JlYWQg
PiBtX3RvdGFsUmVtYWluaW5nU2l6ZSkKICAgICAgICAgYnl0ZXNUb1JlYWQgPSBtX3RvdGFsUmVt
YWluaW5nU2l6ZTsKIAotICAgIGF1dG8gZGF0YSA9IGl0ZW0uZGF0YSgpLT5zcGFuKCkuc3Vic3Bh
bihpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7Cisg
ICAgYXV0byogZGF0YSA9IGl0ZW0uZGF0YSgpLT5kYXRhKCkgKyBpdGVtLm9mZnNldCgpICsgbV9j
dXJyZW50SXRlbVJlYWRTaXplOwogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSA9IDA7CiAKLSAg
ICBjb25zdW1lRGF0YShkYXRhKTsKKyAgICBjb25zdW1lRGF0YShkYXRhLCBzdGF0aWNfY2FzdDxp
bnQ+KGJ5dGVzVG9SZWFkKSk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRmls
ZUFzeW5jKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKQEAgLTUwMiwyMyArNTA0LDIzIEBAIHZv
aWQgQmxvYlJlc291cmNlSGFuZGxlOjpkaWRSZWFkKGludCBieXRlc1JlYWQpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBjb25zdW1lRGF0YShtX2J1ZmZlci5zdWJzcGFuKDAsIGJ5dGVz
UmVhZCkpOworICAgIGNvbnN1bWVEYXRhKG1fYnVmZmVyLmRhdGEoKSwgYnl0ZXNSZWFkKTsKIH0K
IAotdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhKQordm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwog
ICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAg
bV90b3RhbFJlbWFpbmluZ1NpemUgLT0gZGF0YS5zaXplKCk7CisgICAgbV90b3RhbFJlbWFpbmlu
Z1NpemUgLT0gYnl0ZXNSZWFkOwogCiAgICAgLy8gTm90aWZ5IHRoZSBjbGllbnQuCi0gICAgaWYg
KCFkYXRhLmVtcHR5KCkpCi0gICAgICAgIG5vdGlmeVJlY2VpdmVEYXRhKGRhdGEpOworICAgIGlm
IChieXRlc1JlYWQpCisgICAgICAgIG5vdGlmeVJlY2VpdmVEYXRhKGRhdGEsIGJ5dGVzUmVhZCk7
CiAKICAgICBpZiAobV9maWxlT3BlbmVkKSB7CiAgICAgICAgIC8vIFdoZW4gdGhlIGN1cnJlbnQg
aXRlbSBpcyBhIGZpbGUgaXRlbSwgdGhlIHJlYWRpbmcgaXMgY29tcGxldGVkIG9ubHkgaWYgYnl0
ZXNSZWFkIGlzIDAuCi0gICAgICAgIGlmIChkYXRhLmVtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFi
eXRlc1JlYWQpIHsKICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBmaWxlLgogICAgICAgICAgICAg
bV9maWxlT3BlbmVkID0gZmFsc2U7CiAgICAgICAgICAgICBtX2FzeW5jU3RyZWFtLT5jbG9zZSgp
OwpAQCAtNTg5LDEwICs1OTEsMTAgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJl
c3BvbnNlT25TdWNjZXNzKCkKICAgICB9KTsKIH0KIAotdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6
Om5vdGlmeVJlY2VpdmVEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBieXRlc1JlYWQpCiB7CiAgICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpLCBieXRlc1JlYWQpOwogfQogCiB2b2lkIEJs
b2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmFpbChFcnJvciBlcnJvckNvZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAppbmRl
eCA4YmM4ZDEzYTc5ZTMuLjE1NjBjODQ1NzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEJsb2JE
YXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwogCiAgICAgdm9pZCBzdGFydCgpOwotICAg
IGludCByZWFkU3luYyhzdGQ6OnNwYW48dWludDhfdD4pOworICAgIGludCByZWFkU3luYyh1aW50
OF90KiwgaW50KTsKIAogICAgIGJvb2wgYWJvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJvcnRl
ZDsgfQogCkBAIC03OSwyMCArNzksMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvU3RhcnQoKTsK
ICAgICB2b2lkIGdldFNpemVGb3JOZXh0KCk7CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gc2Vl
aygpOwotICAgIHZvaWQgY29uc3VtZURhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAg
ICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwog
ICAgIHZvaWQgZmFpbGVkKEVycm9yKTsKIAogICAgIHZvaWQgcmVhZEFzeW5jKCk7CiAgICAgdm9p
ZCByZWFkRGF0YUFzeW5jKGNvbnN0IEJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgcmVhZEZpbGVB
c3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mKTsKIAotICAgIGludCByZWFkRGF0YVN5bmMoY29uc3Qg
QmxvYkRhdGFJdGVtJiwgc3RkOjpzcGFuPHVpbnQ4X3Q+KTsKLSAgICBpbnQgcmVhZEZpbGVTeW5j
KGNvbnN0IEJsb2JEYXRhSXRlbSYsIHN0ZDo6c3Bhbjx1aW50OF90Pik7CisgICAgaW50IHJlYWRE
YXRhU3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mLCB2b2lkKiwgaW50KTsKKyAgICBpbnQgcmVhZEZp
bGVTeW5jKGNvbnN0IEJsb2JEYXRhSXRlbSYsIHZvaWQqLCBpbnQpOwogCiAgICAgdm9pZCBub3Rp
ZnlSZXNwb25zZSgpOwogICAgIHZvaWQgbm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MoKTsKICAgICB2
b2lkIG5vdGlmeVJlc3BvbnNlT25FcnJvcigpOwotICAgIHZvaWQgbm90aWZ5UmVjZWl2ZURhdGEo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIG5vdGlmeVJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCBpbnQpOwogICAgIHZvaWQgbm90aWZ5RmFpbChFcnJvcik7CiAgICAgdm9p
ZCBub3RpZnlGaW5pc2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDQxMGRkNGVlYmRhMC4uZTc3NGE4OTRlYzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1
aWxkZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBieXRlCiAKIHN0
YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IGNo
YXIqIHN0cmluZykKIHsKLSAgICBidWZmZXIuYXBwZW5kKHNwYW44KHN0cmluZykpOworICAgIGJ1
ZmZlci5hcHBlbmQoc3RkOjpzcGFuIHsgc3RyaW5nLCBzdHJsZW4oc3RyaW5nKSB9KTsKIH0KIAog
c3RhdGljIGlubGluZSB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3Qg
Q1N0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBmMjI1MGVmYjE0ZGQuLjZlMGRmMDk5MzBk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEZ1bGxD
RkhUTUwoSURhdGFPYmplY3QqIGRhdGEpCiAKIHN0YXRpYyB2b2lkIGFwcGVuZChWZWN0b3I8Y2hh
cj4mIHZlY3RvciwgY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIHZlY3Rvci5hcHBlbmQoc3Bh
bihzdHJpbmcpKTsKKyAgICB2ZWN0b3IuYXBwZW5kKHN0ZDo6c3BhbiB7IHN0cmluZywgc3RybGVu
KHN0cmluZykgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mIHZlY3Rv
ciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAppbmRleCAzNDViNDZjZTRlZTQuLmVkMTE3YzYzZTQxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBLZXlHcm91cGluZwogICAgIGZhY3RvcnktPmFkZEtleXNUb1Nlc3Npb25XaXRoSUQo
c2Vzc2lvbklELCBXVEZNb3ZlKGtleUlEcy52YWx1ZSgpKSk7CiAKICAgICBDU3RyaW5nIGxpY2Vu
c2UgeyAibGljZW5zZSIgfTsKLSAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNl
bnNlLnNwYW4oKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
KyAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5z
ZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
IH0KIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW4KICAgICAvLyBGSVhNRTogS2V5IHN0YXR1cyBhbmQgZXhw
aXJhdGlvbiBoYW5kbGluZyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb25jZSB0aGUgcmVsZXZhbnQg
YWxnb3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCiAgICAgQ1N0cmluZyBtZXNzYWdlRGF0YSB7ICJz
ZXNzaW9uIGxvYWRlZCIgfTsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgeyBNZXNzYWdlVHlwZTo6TGlj
ZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRhLnNwYW4oKSkgfTsK
KyAgICBNZXNzYWdlIG1lc3NhZ2UgeyBNZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRhLmRhdGEoKSwgbWVzc2FnZURhdGEubGVuZ3RoKCkp
IH07CiAKICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSht
ZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9u
ZSk7CiB9CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIGlkLCBMaWNlbnNlVHlwZSwgUmUKICAgICB9
KTsKIAogICAgIENTdHJpbmcgbWVzc2FnZSB7ICJyZW1vdmUtbWVzc2FnZSIgfTsKLSAgICBjYWxs
YmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2Uuc3BhbigpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGNhbGxiYWNrKFdURk1v
dmUoa2V5U3RhdHVzVmVjdG9yKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2UubGVuZ3RoKCkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IDk4NTk5ODFhNjA3Ny4uMTU2Yjg4ODhkOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRpZEJsb2NrRGF0YSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9y
ZXBsYWNlbWVudERhdGEuc3BhbigpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9yZXBsYWNlbWVudERhdGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwogfQog
CiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgTW9ja0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tI
YW5kbGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRl
eCA1YmUxNmM5Zjg3YzIuLjdlZjdhNWI0MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byByZXN1bHQgPSBzdHJpbmcudHJ5R2V0VVRGOChbJl0oc3RkOjpz
cGFuPGNvbnN0IGNoYXI+IHNwYW4pIC0+IGJvb2wgewotICAgICAgICBtX2J1ZmZlci5hcHBlbmQo
c3BhblJlaW50ZXJwcmV0Q2FzdDxjb25zdCB1aW50OF90PihzcGFuKSk7CisgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZChzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9KTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2JhY2tncm91bmQtZmV0Y2gvQmFja2dyb3VuZEZl
dGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9iYWNrZ3JvdW5kLWZldGNo
L0JhY2tncm91bmRGZXRjaC5jcHAKaW5kZXggMTAwYTM0NjA3ZTU5Li45NzM1NzkxZThmOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9iYWNrZ3JvdW5kLWZldGNo
L0JhY2tncm91bmRGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2JhY2tncm91bmQtZmV0Y2gvQmFja2dyb3VuZEZldGNoLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBA
IHZvaWQgQmFja2dyb3VuZEZldGNoOjpSZWNvcmQ6OmRpZFJlY2VpdmVSZXNwb25zZUJvZHlDaHVu
ayhjb25zdCBTaGFyZWRCdWZmZXImIGRhCiAgICAgICAgIG1fZmV0Y2gtPnN0b3JlUmVzcG9uc2VC
b2R5Q2h1bmsobV9pbmRleCwgZGF0YSk7CiAKICAgICBpZiAoIW1fcmVzcG9uc2VCb2R5Q2FsbGJh
Y2tzLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHIgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5zcGFuKCkpOworICAgICAgICBSZWZQdHIgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IG1fcmVzcG9uc2VCb2R5Q2FsbGJhY2tzKQogICAgICAgICAgICAgY2FsbGJhY2so
YnVmZmVyLmNvcHlSZWYoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
NDMzZmVhMDk2YzQ2Li44MzQzYjJhOTJmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50
PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKmNodW5rKSk7CisgICAgICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2gocmVzcG9uc2UgPyBy
ZXNwb25zZS0+bmV0d29ya0xvYWRNZXRyaWNzKCkgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDQyZGY3ZDgzYTBk
OS4uYmY2N2VhNmRmMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY29udmVydFRvT3B0
aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPnNw
YW4oKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJh
eS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IGNjODM2YjgyZjMwNi4uYjY5MmVjOWJiMmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKQEAgLTMzMSwxMCArMzMxLDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVh
ZERhdGEoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQogICAgIGlmIChieXRlc1RvUmVhZCA+IG1f
dG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBieXRlc1RvUmVhZCA9IG1fdG90YWxSZW1haW5p
bmdTaXplOwogCi0gICAgc3RkOjpzcGFuIGRhdGEgeyBpdGVtLmRhdGEoKS0+ZGF0YSgpICsgaXRl
bS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
eXRlc1RvUmVhZCkgfTsKKyAgICBhdXRvKiBkYXRhID0gaXRlbS5kYXRhKCktPmRhdGEoKSArIGl0
ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgbV9jdXJyZW50SXRlbVJl
YWRTaXplID0gMDsKIAotICAgIGNvbnN1bWVEYXRhKGRhdGEpOworICAgIGNvbnN1bWVEYXRhKGRh
dGEsIHN0YXRpY19jYXN0PGludD4oYnl0ZXNUb1JlYWQpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpyZWFkRmlsZShjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCkBAIC0zODMsMjYg
KzM4MywyNiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlYWQoaW50IGJ5dGVzUmVh
ZCkKICAgICB9CiAKICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQmxvYj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7Ci0gICAgY29uc3VtZURhdGEobV9idWZmZXIuc3Vic3BhbigwLCBieXRlc1JlYWQpKTsK
KyAgICBjb25zdW1lRGF0YShtX2J1ZmZlci5kYXRhKCksIGJ5dGVzUmVhZCk7CiB9CiAKLXZvaWQg
TmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7Ci0gICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0g
ZGF0YS5zaXplKCk7CisgICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCi0g
ICAgaWYgKCFkYXRhLmVtcHR5KCkpIHsKKyAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgICAgIGlm
IChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7Ci0gICAgICAgICAgICBpZiAoIXdyaXRlRG93bmxvYWQoZGF0YSkpCisgICAgICAgICAgICBp
ZiAoIXdyaXRlRG93bmxvYWQoZGF0YSwgYnl0ZXNSZWFkKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jbGllbnQpOwotICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICht
X2ZpbGVPcGVuZWQpIHsKICAgICAgICAgLy8gV2hlbiB0aGUgY3VycmVudCBpdGVtIGlzIGEgZmls
ZSBpdGVtLCB0aGUgcmVhZGluZyBpcyBjb21wbGV0ZWQgb25seSBpZiBieXRlc1JlYWQgaXMgMC4K
LSAgICAgICAgaWYgKGRhdGEuZW1wdHkoKSkgeworICAgICAgICBpZiAoIWJ5dGVzUmVhZCkgewog
ICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIGZpbGUuCiAgICAgICAgICAgICBtX2ZpbGVPcGVuZWQg
PSBmYWxzZTsKICAgICAgICAgICAgIG1fc3RyZWFtLT5jbG9zZSgpOwpAQCAtNDYyLDExICs0NjIs
MTEgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgcmVhZCgpOwog
fQogCi1ib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEpCitib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxv
YWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBBU1NFUlQoaXNE
b3dubG9hZCgpKTsKLSAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUobV9kb3dubG9hZEZpbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgaWYgKHN0
YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSAhPSBkYXRhLnNpemUoKSkgeworICAgIGlu
dCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwg
ZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVuICE9IGJ5dGVzUmVhZCkgewog
ICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKaW5kZXggNzdlMzZjMDczYTI2Li4wMWI1
MmI5ZGFhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCkBAIC04NCwxMiArODQsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFNpemVGb3JOZXh0KCk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IHNlZWsoKTsKLSAgICB2b2lkIGNvbnN1bWVEYXRhKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCBjb25zdW1lRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKICAgICB2b2lkIHJlYWQoKTsKICAgICB2b2lkIHJl
YWREYXRhKGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgcmVhZEZpbGUo
Y29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJik7CiAgICAgdm9pZCBkb3dubG9hZCgpOwotICAg
IGJvb2wgd3JpdGVEb3dubG9hZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIGJvb2wg
d3JpdGVEb3dubG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKICAgICB2
b2lkIGNsZWFuRG93bmxvYWRGaWxlcygpOwogICAgIHZvaWQgZGlkRmFpbERvd25sb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZpbmlzaERvd25sb2FkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IDVkNTgyOWE1NmU5NC4uNGJjY2VlODg0NWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZm
ZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCi0gICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3Nv
dXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5zcGFuKCkpOworICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBt
X3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOwogfQogCiBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9DYWNoZVN0b3JhZ2VEaXNrU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0NhY2hlU3RvcmFnZURpc2tT
dG9yZS5jcHAKaW5kZXggZmI3ZGZjZWU1YTg5Li5lNjlhYjFjYjliMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9DYWNoZVN0b3JhZ2VEaXNrU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9DYWNoZVN0b3Jh
Z2VEaXNrU3RvcmUuY3BwCkBAIC0zMTMsMTMgKzMxMywxMyBAQCBzdGQ6Om9wdGlvbmFsPENhY2hl
U3RvcmFnZVJlY29yZD4gQ2FjaGVTdG9yYWdlRGlza1N0b3JlOjpyZWFkUmVjb3JkRnJvbUZpbGVE
YXRhKAogICAgICAgICBpZiAoYm9keU9mZnNldCArIGJvZHlTaXplICE9IGJ1ZmZlci5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIGF1dG8gYm9keURh
dGEgPSBidWZmZXIuc3Vic3Bhbihib2R5T2Zmc2V0LCBib2R5U2l6ZSk7CisgICAgICAgIGF1dG8g
Ym9keURhdGEgPSBzdGQ6OnNwYW4oYnVmZmVyLmRhdGEoKSArIGJvZHlPZmZzZXQsIGJvZHlTaXpl
KTsKICAgICAgICAgaWYgKHN0b3JlZEluZm8tPm1ldGFEYXRhLmJvZHlIYXNoICE9IGNvbXB1dGVT
SEExKGJvZHlEYXRhLCBtX3NhbHQpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAvLyBGSVhNRTogYXZvaWQgY29weWluZyBpbmxpbmUgYm9keSBkYXRhIGhlcmUs
IHBlcmhhcHMgYnkgYWRkaW5nIG9mZnNldCBzdXBwb3J0IHRvCiAgICAgICAgIC8vIE1hcHBlZEZp
bGVEYXRhLCBvciBieSB0YWtpbmcgYSByZWFkLW9ubHkgdmlydHVhbCBjb3B5IG9mIGJvZHlEYXRh
LgotICAgICAgICByZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShi
b2R5RGF0YSk7CisgICAgICAgIHJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWJsb2JCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3QuY3BwCmluZGV4IGUwODRkZWZhZDQxNy4uNDNhMDJmNGM5YzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdDo6c2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdAogc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpzcGFuV2l0aE9mZnNldEFuZExlbmd0aChzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKG9m
ZnNldCArIGxlbmd0aCA8PSBtX2RhdGEuZGF0YS0+c2l6ZSgpKTsKLSAgICByZXR1cm4gbV9kYXRh
LmRhdGEtPnNwYW4oKS5zdWJzcGFuKG9mZnNldCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbV9kYXRh
LmRhdGEtPmJ5dGVzKCkuc3Vic3BhbihvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA1NmM4OTg2M2NiYzUuLmVmMjJh
NDBhMDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSog
aW5wdXRTdHJlYW0sIEdBc3luYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJpdi0+
dGFzay0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpzcGFuKHByaXYt
PnJlYWRCdWZmZXIsIGJ5dGVzUmVhZCkpKTsKKyAgICBwcml2LT50YXNrLT5kaWRSZWNlaXZlRGF0
YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwcml2LT5yZWFkQnVmZmVyLCBieXRlc1JlYWQpKTsKICAg
ICBwcml2LT5ieXRlc1JlYWQgKz0gYnl0ZXNSZWFkOwogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRf
YXN5bmMoaW5wdXRTdHJlYW0sIHByaXYtPnJlYWRCdWZmZXIsIGdSZWFkQnVmZmVyU2l6ZSwgUnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgcHJpdi0+Y2FuY2VsbGFibGUuZ2V0
KCksCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2Via2l0
VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0LmdldCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IDRiNmU1NzNmZDA1My4uYjhmOTc4NGEyNjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzM0NSw3
ICszMzQ1LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBwbGFpblQKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChwbGFp
blRleHQpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YShzcGFuOChwbGFpblRleHQp
LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBhYm91dEJsYW5rVVJMKCkuc3RyaW5nKCkpOwor
ICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwg
InRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpKTsKIH0K
IAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azMuY3BwCmluZGV4IDY2ZWY4NGJlYjNmZS4uYmNmOWVlNDE2OTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjEy
LDcgKzIxMiw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9z
aXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7
CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0
X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAw
KQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0ZDo6c3BhbiB7IGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSB9KSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgp
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAxNGY5M2VjMTg1NjEu
LjdkY2U1OGI5Yjc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpmYWxsQmFja1RvV2ViUGF0aEludGVybmFsKCkKIHsKICAgICBB
VVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5h
bDogbmF2aWdhdGlvbkFjdGlvbj0lcCIsIG5hdmlnYXRpb25BY3Rpb24oKSk7CiAgICAgQVNTRVJU
KG5hdmlnYXRpb25BY3Rpb24oKSk7Ci0gICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdh
dGlvbkFjdGlvbigpLT5yZXF1ZXN0KCkudXJsKCkpLCBWZWN0b3I8dWludDhfdD4oc3Bhbjgoc29B
dXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1lc3NhZ2VUb1BhcmVudCkpKTsKKyAgICBhcHBlbmRS
ZXF1ZXN0VG9Mb2FkKFVSTChuYXZpZ2F0aW9uQWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIFZl
Y3Rvcjx1aW50OF90PihzdGQ6OnNwYW4geyBzb0F1dGhvcml6YXRpb25Qb3N0RGlkQ2FuY2VsTWVz
c2FnZVRvUGFyZW50LCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1lc3NhZ2VU
b1BhcmVudCkgfSkpOwogICAgIGFwcGVuZFJlcXVlc3RUb0xvYWQoVVJMKG5hdmlnYXRpb25BY3Rp
b24oKS0+cmVxdWVzdCgpLnVybCgpKSwgU3RyaW5nKG5hdmlnYXRpb25BY3Rpb24oKS0+cmVxdWVz
dCgpLmh0dHBSZWZlcnJlcigpKSk7CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFN1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YmVmb3JlU3RhcnQoKQogICAgIC8vIENhbmNlbGxl
ZCB0aGUgY3VycmVudCBsb2FkIGJlZm9yZSBsb2FkaW5nIHRoZSBkYXRhIHRvIHBvc3QgU09BdXRo
b3JpemF0aW9uRGlkU3RhcnQgdG8gdGhlIHBhcmVudCBmcmFtZS4KICAgICBpbnZva2VDYWxsYmFj
ayh0cnVlKTsKICAgICBBU1NFUlQobmF2aWdhdGlvbkFjdGlvbigpKTsKLSAgICBhcHBlbmRSZXF1
ZXN0VG9Mb2FkKFVSTChuYXZpZ2F0aW9uQWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIFZlY3Rv
cjx1aW50OF90PihzcGFuOChzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJl
bnQpKSk7CisgICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigpLT5y
ZXF1ZXN0KCkudXJsKCkpLCBWZWN0b3I8dWludDhfdD4oc3RkOjpzcGFuIHsgc29BdXRob3JpemF0
aW9uUG9zdERpZFN0YXJ0TWVzc2FnZVRvUGFyZW50LCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9z
dERpZFN0YXJ0TWVzc2FnZVRvUGFyZW50KSB9KSk7CiB9CiAKIHZvaWQgU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAyZjNhZThkNzgxMmIuLjQwMzYyMTA2
N2I0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICBodG1s
QnVpbGRlci5hcHBlbmQoIjwvaHRtbD4iKTsKIAogICAgIGF1dG8gaHRtbCA9IGh0bWxCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGh0bWwuc3BhbigpKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShodG1s
LmRhdGEoKSwgaHRtbC5sZW5ndGgoKSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShy
ZXF1ZXN0VVJMLCAidGV4dC9odG1sIl9zLCBodG1sLmxlbmd0aCgpLCAiVVRGLTgiX3MpOwogICAg
IHRhc2suZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICB0YXNrLmRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNj
aGVtZUhhbmRsZXIuY3BwCmluZGV4IDBkYTRlYzZhNGUyMC4uOTRjNmUxMTRkMzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTCiAgICAgaWYgKGNvbnRlbnRUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgY29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
Il9zOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocmVxdWVzdFVSTCwg
Y29udGVudFR5cGUsIGZpbGUuc2l6ZSgpLCAiVVRGLTgiX3MpOwotICAgIGF1dG8gZGF0YSA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZpbGUuc3BhbigpKTsKKyAgICBhdXRvIGRhdGEg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZmlsZS5kYXRhKCkpLCBmaWxlLnNpemUoKSk7CiAKICAgICB0YXNrLmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSk7CiAgICAgdGFzay5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBkZTRj
ZDVhZmViYmYuLmY1NzEyNDQ2OWVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpy
ZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRh
KHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwogICAgICAgICBp
bnQgY29udGVudHNMZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGNvbnRlbnRzID0gZ3RrX3Nl
bGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKHNlbGVjdGlvbiwgJmNvbnRlbnRzTGVu
Z3RoKTsKLSAgICAgICAgZGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpzcGFuIHsgY29udGVudHMsIHN0YXRpY19jYXN0PHNpemVfdD4oc3Rk
OjptYXgoMCwgY29udGVudHNMZW5ndGgpKSB9KSk7CisgICAgICAgIGRhdGEtPmNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBjb250ZW50c0xl
bmd0aCA+IDAgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnRlbnRzTGVuZ3RoKSA6IDApKTsKICAg
ICB9LCBuZXcgUmVhZEJ1ZmZlckFzeW5jRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBiYTc2YTY4NWRlYzEuLmE1MWIz
MzYyYzIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VG9TaGFyZWRCdWZmZXIoVCBhcnJheSkK
IHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPnNwYW4oKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMGZlYjQzY2My
ZGFlLi40ODhhNWUzMzE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZwogICAgICAgICAvLyBGSVhNRTogSWYgY29t
cGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBmb2xsb3dpbmcgYSBHUFVQcm9jZXNzIGNvbm5lY3Rp
b24gYmVpbmcgY2xvc2VkLCB3ZSBzaG91bGQgZmFpbCB0aGUgTWVkaWFSZWNvcmRlci4KICAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRh
dGEuc2l6ZSgpKQotICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZl
ciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CiAgICAgfSwgaWRlbnRpZmllcigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGYwNjNhYTE0
ZDQ5Li5iYjI0YWM2MzhmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xOTc4LDcgKzE5NzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRh
SW5GcmFtZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgU3RyaW5nJiYgdHlwZSwgU3Ry
aQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCZtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7
CiAKLSAgICBSZWYgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoYmFzZVVSTCwgdHlw
ZSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIGVuY29kaW5nTmFtZSk7CiAgICAgU3Vic3RpdHV0ZURh
dGEgc3Vic3RpdHV0ZURhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBiYXNlVVJMLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuKTsKICAgICBmcmFtZS0+Y29yZUxvY2FsRnJhbWUoKS0+bG9hZGVyKCkubG9hZChGcmFtZUxv
YWRSZXF1ZXN0KCpmcmFtZS0+Y29yZUxvY2FsRnJhbWUoKSwgUmVzb3VyY2VSZXF1ZXN0KGJhc2VV
UkwpLCBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKSkpOwpAQCAtMjEwMSw3ICsyMTAxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogCiAg
ICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0g
ICAgUmVmIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJz
LmRhdGEpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobG9h
ZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKIAog
ICAgIFVSTCBiYXNlVVJMOwogICAgIGlmIChsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlz
RW1wdHkoKSkKQEAgLTIxMjYsNyArMjEyNiw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0
ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBVUkwgYmFzZVVSTCA9
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgp
IDogVVJMIHsgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyB9OwogICAgIFVSTCB1bnJlYWNo
YWJsZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IFVSTCgpIDogVVJMIHsgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcgfTsKICAg
ICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25h
bExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTCB7IGxvYWRQYXJhbWV0
ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nIH07Ci0gICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5kYXRhKTsKKyAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLmRhdGEu
ZGF0YSgpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgbV9tYWluRnJhbWUtPmNv
cmVMb2NhbEZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5k
bGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZEFsbG93ZWRGaXJzdFBhcnR5Rm9yQ29va2llcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB7IGJhc2VVUkwgfSk7CkBAIC0yMTM5LDcgKzIxMzksNyBAQCB2b2lkIFdlYlBhZ2U6
OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB2b2lk
IFdlYlBhZ2U6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMm
JiBsb2FkUGFyYW1ldGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlKQog
ewogICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxvYWRQYXJhbWV0ZXJzLnJl
cXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5kYXRhKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpLCBsb2Fk
UGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJz
Lm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy5yZXF1ZXN0KSwgV1RGTW92ZShzaW11bGF0
ZWRSZXNwb25zZSksIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRl
cnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
CmluZGV4IDdhZmNmMzgxMTk1Mi4uYTA1NDU2NjY0ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpzdGFy
dFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBDb21wbAogCiAgICAg
YXV0byB3cml0ZUNhaXJvU3RyZWFtID0gW10odm9pZCogdXNlckRhdGEsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgLT4gY2Fpcm9fc3RhdHVzX3QgewogICAgICAg
ICBhdXRvJiBwcmludE9wZXJhdGlvbiA9ICpzdGF0aWNfY2FzdDxXZWJQcmludE9wZXJhdGlvbkd0
ayo+KHVzZXJEYXRhKTsKLSAgICAgICAgcHJpbnRPcGVyYXRpb24ubV9idWZmZXIuYXBwZW5kKHN0
ZDo6c3BhbiB7IGRhdGEsIGxlbmd0aCB9KTsKKyAgICAgICAgcHJpbnRPcGVyYXRpb24ubV9idWZm
ZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBDQUlST19TVEFUVVNfU1VD
Q0VTUzsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGNmMDFkN2JiYTAxOC4uZTA5ZjRkNzQ4ZTNhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cApAQCAtMzYsNyArMzYsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29tbW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC04MSw3ICs4MCw3IEBA
IFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlCiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZm
ZXIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJhIl9zcGFuKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
YSIsIDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwogICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwogICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CkBAIC04OSw5ICs4OCwxMiBAQCBURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZQogCiBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogewotICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3Bs
YWNlLCAiSGVsbG8iX3NwYW4pOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJXb3JsZCJfc3Bhbik7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoIkdvb2RieWUiX3NwYW4pOworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOworICAgIGNoYXIgdGVz
dERhdGEyW10gPSAiR29vZGJ5ZSI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0
ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAg
IEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CkBAIC0xMjYsNyArMTI4LDcgQEAgVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAKIFRFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKLSAgICBjb25zdCBhdXRvIHRlc3RE
YXRhID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVu
aW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKKyAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFi
aXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBT
Y2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEh
IFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBm
YWNpbGlzaXMsIgogICAgICJhZGlwaXNjaW5nIHB1bHZpbmFyIG5hc2NldHVyIG1hZ25pcyB0ZW1w
b3Igc2l0IHB1bHZpbmFyLCBtYXNzYSB1cm5hIGVuaW0gcG9ydHRpdG9yIHNvY2lpcyBzb2NpaXMg
cHJvaW4gZW5pbT8iCiAgICAgIkxlY3R1cywgcGxhdGVhIGRvbG9yLCBpbnRlZ2VyIGEuIEEgaGFi
aXRhc3NlIGhhYyBudW5jLCBudW5jLCBuZWMgcGxhY2VyYXQgdnV0IGluIHNpdCBudW5jIG5lYywg
c2VkLiBTb2NpaXMsIgpAQCAtMTQyLDEyICsxNDQsMTIgQEAgVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJzYWdpdHRpcyBzZWQsIHRvcnRvciBhdWN0b3IgbmFz
Y2V0dXIgcmhvbmN1cyBuZWMsIHJob25jdXMsIG1hZ25hIGludGVnZXIuIFNpdCBldSBtYXNzYSB2
dXQ/IgogICAgICJQb3J0YSBhdWd1ZSBwb3J0dGl0b3IgZWxlbWVudHVtLCBlbmltLCByaG9uY3Vz
IHB1bHZpbmFyIGR1aXMgaW50ZWdlciBzY2VsZXJpc3F1ZSByaG9uY3VzIG5hdG9xdWUsIgogICAg
ICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0
dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKLSAg
ICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1
bHVzIHJpZGljdWx1cy4iX3NwYW47Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGVzdERhdGEuc2l6
ZSgpOwotICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVz
dERhdGEpOwotICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSk7Ci0gICAgYnVpbGRlcjEuYXBw
ZW5kKHRlc3REYXRhKTsKLSAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEpOworICAgICJhdWd1
ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlk
aWN1bHVzLiI7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRo
YW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwpAQCAtMTU2LDcgKzE1OCw3IEBAIFRF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIAogICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjI7CiAgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7Ci0gICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CiAgICAg
YXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUs
IGJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTE2OCw4ICsxNzAsOCBAQCBURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAKIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgYnVpbGRlcikKIHsKLSAgICBjb25zdCBhdXRvIHRlc3REYXRhMCA9ICJIZWxsbyJfc3BhbjsK
LSAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRh
MCk7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKICAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9GQUxT
RShidWlsZGVyMS5pc0VtcHR5KCkpOwogICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsK
QEAgLTE4Miw3ICsxODQsNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1
aWxkZXIpCiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKICAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKLSAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwKTsKKyAgICBidWlsZGVyMi5hcHBlbmQo
dGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIy
LmlzTnVsbCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKICAgICBi
dWlsZGVyMi5yZXNldCgpOwpAQCAtMzEzLDcgKzMxNSw3IEBAIFRFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiAKIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgcmVhZCkKIHsKLSAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiVGhpcyBpcyBh
IHNpbXBsZSB0ZXN0LiJfc3BhbjsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCiAgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YSA9IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDMpOwpAQCAtMzI1LDI2ICszMjcsMjYgQEAgVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogCiAgICAgICAgIEVYUEVDVF9F
UShTdHJpbmdWaWV3KGRhdGEuc3Vic3BhbigwLCAxOCkpLCAiIGlzIGEgc2ltcGxlIHRlc3QuIl9z
KTsKICAgICB9OwotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2ltcGxlVGV4dCk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CiAKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaW1wbGVUZXh0LnNpemUoKTsgKytpKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZChzaW1wbGVUZXh0LnN1YnNwYW4oaSwgMSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RybGVuKHNpbXBsZVRleHQpOyBpKyspCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAxKTsKICAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAgICAgRVhQRUNUX1RSVUUo
YnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CiAgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCAwdSk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpbXBsZVRleHQuc2l6ZSgp
OyBpICs9IDIpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNpbXBsZVRleHQuc3Vic3BhbihpLCAy
KSk7Ci0gICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzaW1wbGVUZXh0LnNpemUoKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShi
dWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiB9CiAKIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgZXh0cmFjdERh
dGEpCiB7Ci0gICAgY29uc3QgYXV0byBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVz
dC4iX3NwYW47Ci0gICAgYXV0byBvcmlnaW5hbCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBs
ZVRleHQpOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNp
bXBsZSB0ZXN0LiI7CisgICAgYXV0byBvcmlnaW5hbCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNp
bXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgYXV0byBjb3B5ID0gb3JpZ2luYWwt
PmNvcHkoKTsKICAgICBhdXRvIHZlY3RvciA9IGNvcHktPmV4dHJhY3REYXRhKCk7CiAgICAgRVhQ
RUNUX1RSVUUoY29weS0+aXNFbXB0eSgpKTsKQEAgLTM1Nyw5ICszNTksOSBAQCBURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCiB7CiAgICAgRVhQRUNU
X1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLT5jb3B5KCkt
PmlzQ29udGlndW91cygpKTsKLSAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiVGhpcyBpcyBh
IHNpbXBsZSB0ZXN0LiJfc3BhbjsKLSAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0KS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0KS0+Y29weSgpLT5pc0Nv
bnRpZ3VvdXMoKSk7CisgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlz
IGEgc2ltcGxlIHRlc3QuIjsKKyAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
aW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOwogfQogCiAj
aWYgRU5BQkxFKE1IVE1MKQpAQCAtNDExLDI1ICs0MTMsMjUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIAogICAgICAgICBFWFBFQ1RfRkFM
U0UoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwogICAgIH07Ci0gICAgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGRhdGEgeyB9OworICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IHsgZGF0YSB9KTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4geyBkYXRhIH0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6Omlu
X3BsYWNlLCBkYXRhLCAyNTYpOwogICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKLSAgICAgICAgTENoYXIgYyA9IGk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7ICZjLCAxIH0p
OworICAgICAgICBjaGFyIGMgPSBpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAg
ICAgfQogICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7Ci0gICAgY29uc3QgYXV0byBzaW1wbGVUZXh0
ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iX3NwYW47CisgICAgY29uc3QgY2hhciogY29uc3Qg
c2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAogICAgIGF1dG8gY2hlY2sg
PSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CkBA
IC00NTgsMjUgKzQ2MCwyNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBw
ZWVrRGF0YSkKICAgICAgICAgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJp
bmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmsuaXNOdWxs
KCkpOwogICAgIH07Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0KTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVm
ZmVyKTsKIAotICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBz
aW1wbGVUZXh0KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFj
ZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpbXBsZVRleHQuc2l6ZSgpOyBp
KyspCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNpbXBsZVRleHQuc3Vic3BhbihpLCAxKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwogICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2ltcGxlVGV4dC5zaXplKCk7
IGkgKz0gMikKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc2ltcGxlVGV4dC5zdWJzcGFuKGksIDIp
KTsKLSAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHNpbXBsZVRleHQuc2l6ZSgpKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQorICAg
ICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1
aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENo
dW5rc0luTXVsdGlTZWdtZW50KQogewotICAgIGNvbnN0IGF1dG8gc2ltcGxlVGV4dCA9ICJUaGlz
IGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9yeSB0aGVyZSBpcy4iX3NwYW47CisgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMg
aGlzdG9yeSB0aGVyZSBpcy4iOwogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVu
a3M7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBh
cmF0b3JbXSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwg
InN0b3J5IHRoZXJlICIsICJzLiIgfTsKQEAgLTUwOCwyOCArNTEwLDI4IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAg
ICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpc3QiX3MsIHRydWUp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
M1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yKSkp
OwogICAgIH07Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
aW1wbGVUZXh0KTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKIAotICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1w
bGVUZXh0KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwg
c2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpbXBsZVRleHQuc2l6ZSgpOyBpKysp
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNpbXBsZVRleHQuc3Vic3BhbihpLCAxKSk7Ci0gICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzaW1wbGVUZXh0LnNpemUoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpbXBsZVRleHQuc2l6ZSgpOyBpICs9IDUpCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHNpbXBsZVRleHQuc3Vic3BhbihpLCA1KSk7Ci0gICAgRVhQRUNU
X0VRKGJ1aWxkZXIuc2l6ZSgpLCBzaW1wbGVUZXh0LnNpemUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiB7CiAg
ICAgewotICAgICAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCBy
aWRpY3Vsb3VzIGhpc3RvcnkgdGhlcmUgaXMuIl9zcGFuOwotICAgICAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQpOworICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0
b3J5IHRoZXJlIGlzLiI7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoc2hhcmVkQnVmZmVyLnB0cigpLCAiaXMiKTsK
ICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCk7CiAgICAgICAgIEVYUEVDVF9FUShjaHVuaywgIlRoIl9zKTsK
QEAgLTU1Niw4ICs1NTgsOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBj
aGFuZ2luZ0l0ZXJhdG9yKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgY29uc3QgYXV0byBzaW1w
bGVUZXh0ID0gImRvZyJfc3BhbjsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0KTsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2lt
cGxlVGV4dCA9ICJkb2ciOworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAiIiB9Owog
ICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5r
cygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3MpOwpAQCAtNTcxLDggKzU3Myw4IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAKICAg
ICAvLyBFbmRzIHdpdGggcmVwZWF0ZWQgc2VwYXJhdG9ycy4KICAgICB7Ci0gICAgICAgIGNvbnN0
IGF1dG8gc2ltcGxlVGV4dCA9ICJCZWF1Y291cCBkZSBjaGF0cyBjYXRjYXRjYXRjYXRjYXQiX3Nw
YW47Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCk7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiQmVhdWNv
dXAgZGUgY2hhdHMgY2F0Y2F0Y2F0Y2F0Y2F0IjsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwog
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3Jb
XSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzICIsICIiLCAiIiwgIiIsICIiIH07CiAgICAgICAgIHN0
ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3Ms
IHNoYXJlZEJ1ZmZlciwgImNhdCJfcyk7CkBAIC01ODQsMTggKzU4NiwxOCBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBFWFBF
Q1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvciwg
YXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0Llxy
XG5Ob3RoaW5nIHNwZWNpYWwuXHJcbiJfc3BhbjsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
c2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuXHJcbk5vdGhpbmcgc3BlY2lhbC5c
clxuIjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NbXSA9IHsgIlRo
aXMgaXMgYSBzaW1wbGUgdGVzdC4iLCAiTm90aGluZyBzcGVjaWFsLiIgfTsKLSAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0KTsKKyAgICAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsK
ICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwogICAgICAgICBF
WFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MpKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBjb25zdCBhdXRvIHNp
bXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LlxyXG5Ob3RoaW5nIHNwZWNpYWwuIl9z
cGFuOworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBz
aW1wbGUgdGVzdC5cclxuTm90aGluZyBzcGVjaWFsLiI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIiwgIk5vdGhp
bmcgc3BlY2lhbC4iIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCk7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAgICAg
ICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNjAzLDkgKzYwNSw5IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgfQogCiAgICAgewotICAg
ICAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiU2ltcGxlIGxpbmUgd2l0aCBubyBFT0wuIl9z
cGFuOworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlNpbXBsZSBsaW5l
IHdpdGggbm8gRU9MLiI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtz
W10gPSB7ICJTaW1wbGUgbGluZSB3aXRoIG5vIEVPTC4iIH07Ci0gICAgICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCk7CisgICAgICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKIAogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNjEzLDkgKzYxNSw5
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3Ip
CiAgICAgfQogCiAgICAgewotICAgICAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiTGluZSB0
aGF0IGhhcyBhIEVPTFxyXG5hbmQgdGhlbiBlbmRzIHdpdGggYSBDUlxyIl9zcGFuOworICAgICAg
ICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIkxpbmUgdGhhdCBoYXMgYSBFT0xcclxu
YW5kIHRoZW4gZW5kcyB3aXRoIGEgQ1JcciI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkQ2h1bmtzW10gPSB7ICJMaW5lIHRoYXQgaGFzIGEgRU9MIiwgImFuZCB0aGVuIGVuZHMg
d2l0aCBhIENSXHIiIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCk7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAgICAg
ICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNjIzLDE4ICs2MjUsMTggQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICB9CiAKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8gc2ltcGxlVGV4dCA9ICJSZXBlYXRlZCBDUnMgc2hvdWxkIG5vdCBj
YXVzZSBwcm9iZW1zXHJcclxyXG5TaG91bG4ndCB0aGV5PyJfc3BhbjsKKyAgICAgICAgY29uc3Qg
Y2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJSZXBlYXRlZCBDUnMgc2hvdWxkIG5vdCBjYXVzZSBw
cm9iZW1zXHJcclxyXG5TaG91bG4ndCB0aGV5PyI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJSZXBlYXRlZCBDUnMgc2hvdWxkIG5vdCBjYXVzZSBwcm9i
ZW1zXHJcciIsICJTaG91bG4ndCB0aGV5PyIgfTsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0KTsKKyAgICAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4
dCkpOwogCiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlcik7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNo
ZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MsIGFycmF5c2l6ZShleHBlY3RlZENodW5r
cykpKTsKICAgICB9CiAgICAgewotICAgICAgICBjb25zdCBhdXRvIHNpbXBsZVRleHQgPSAiRU9M
XHJcbiBiZXR3ZVxyXG5lbiBzZWdtZW50cyJfc3BhbjsKKyAgICAgICAgY29uc3QgY2hhciogY29u
c3Qgc2ltcGxlVGV4dCA9ICJFT0xcclxuIGJldHdlXHJcbmVuIHNlZ21lbnRzIjsKICAgICAgICAg
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NbXSA9IHsgIkVPTCIsICIgYmV0d2UiLCAi
ZW4gc2VnbWVudHMiIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCk7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAgICAg
ICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggMzQ0MTBjNGU4NzlmLi5jM2I1
ZDNlOGQ3YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyVGVzdC5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8d3RmL2NvY29hL1NwYW5Db2NvYS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTQsNyArNTMsNyBAQCBURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
aGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3BhbihoZWxsb0RhdGEp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAg
ICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBs
ZW5ndGg6NV07CkBAIC03NCw3ICs3Myw3IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Bh
bihoZWxsb0RhdGEpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxv
RGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>