<?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>284844</bug_id>
          
          <creation_ts>2024-12-17 14:03:44 -0800</creation_ts>
          <short_desc>REGRESSION(287633@main): Introduced a crash in moveTreeToNewScope</short_desc>
          <delta_ts>2024-12-17 21:20:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>283431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2082464</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-12-17 14:03:44 -0800</bug_when>
    <thetext>https://commits.webkit.org/287633@main introduced a regression:
Introduced a crash in moveTreeToNewScope

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>2082466</commentid>
    <comment_count>1</comment_count>
      <attachid>473588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-12-17 14:04:22 -0800</bug_when>
    <thetext>Created attachment 473588
REVERT of 287633@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>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>473588</attachid>
            <date>2024-12-17 14:04:22 -0800</date>
            <delta_ts>2024-12-17 14:04:22 -0800</delta_ts>
            <desc>REVERT of 287633@main</desc>
            <filename>bug-284844-20241217220421.patch</filename>
            <type>text/plain</type>
            <size>91788</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBkODU1MjljY2M0MmNmYTk4OTczODc3MmEwOWNmZWMyN2NiNzQ3ODYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDE3IERlYyAyMDI0IDIyOjAzOjUzICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI4NzYzM0BtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4NDg0NAoKSW50cm9kdWNlZCBhIGNyYXNoIGluIG1vdmVUcmVl
VG9OZXdTY29wZQoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIkV4cG9zZSBpbXBvcnROb2RlIG9uIFNo
YWRvd1Jvb3QgYW5kIG1haW50YWluIHNjb3BlZCByZWdpc3RyeSBhc3NvY2lhdGlvbiB3aXRoIGRp
c2Nvbm5lY3RlZCBub2RlcyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4MzQzMQpodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yODc2MzNAbWFpbgotLS0KIC4uLi9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICB8ICAxNCArKy0KIC4uLi9i
aW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCAgICAgICB8ICAgMiAtCiBTb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmggICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dl
YkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAgICAgICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ0RBVEFTZWN0aW9uLmggICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmNwcCAgICAgICAgICAgICAgICB8ICAgNSArLQogU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuaCAgICAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmggICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgIHwgIDIyIC0tLS0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaCAgICB8ICAyMyAtLS0tCiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgNzMgKysrKysrKystLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCAgICAgICB8ICAxMCArLQogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCAgICAgICAgIHwgICA0ICstCiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCAgICAgICAgICAgfCAgIDUgKy0KIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaCAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwICAgICAgICAgICAgICAgIHwgIDM5ICsrKy0tLS0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggICAgICAgICAgICAgICAgICB8ICAgOCArLQogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCAgfCAgIDQgKy0KIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAgICB8ICAgMiArLQogU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwICAgICAgICAgICAgIHwgICA2ICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbCAgICAgICAgICAgICB8ICAgMSAtCiBTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmggICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAgICAgICAgICAgICAgIHwgIDI1IC0tLS0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuaCAgICAgICAgICAgICAgICB8ICAgMSAtCiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgICAgICAgICAgICAgfCAgMTEgKy0KIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmggICAgICAgICAgICAgICB8ICAgMyArLQogLi4uL2h0bWwvQXR0YWNobWVu
dEFzc29jaWF0ZWRFbGVtZW50LmggICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwICAgICAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcCAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5oICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcCAgICAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuaCAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcCAgIHwgIDE1ICstLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmggICAgIHwgICAyICstCiAuLi4vaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwICAgICAgfCAgIDkgKy0KIC4uLi9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oICAgICAgICB8ICAgNiArLQogLi4uL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAgICAgICAgIHwgIDEyICstCiAuLi4vV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaCAgfCAgIDYgKy0KIC4uLi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmggIHwgICAyICstCiAuLi4vaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcCAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAg
ICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAgICB8ICAgNSArLQogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmggICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAg
ICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmggICAg
ICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwICAgICAg
ICAgIHwgICAyICstCiAuLi5hZG93Um9vdC1pbXBvcnROb2RlLnRlbnRhdGl2ZS1leHBlY3RlZC50
eHQgfCAgIDUgLQogLi4uL1NoYWRvd1Jvb3QtaW1wb3J0Tm9kZS50ZW50YXRpdmUuaHRtbCAgICAg
IHwgIDgyIC0tLS0tLS0tLS0tLS0tCiAuLi50LWlubmVySFRNTC11cGdyYWRlLnRlbnRhdGl2ZS1l
eHBlY3RlZC50eHQgfCAgIDMgKwogLi4uaGFkb3dSb290LWlubmVySFRNTC50ZW50YXRpdmUtZXhw
ZWN0ZWQudHh0IHwgICA3IC0tCiAuLi4vU2hhZG93Um9vdC1pbm5lckhUTUwudGVudGF0aXZlLmh0
bWwgICAgICAgfCAxMDcgLS0tLS0tLS0tLS0tLS0tLS0tCiA2MyBmaWxlcyBjaGFuZ2VkLCAxNzkg
aW5zZXJ0aW9ucygrKSwgNDU1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Nj
b3BlZC1yZWdpc3RyeS9TaGFkb3dSb290LWltcG9ydE5vZGUudGVudGF0aXZlLWV4cGVjdGVkLnR4
dAogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFkb3dSb290LWltcG9y
dE5vZGUudGVudGF0aXZlLmh0bWwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9zY29wZWQtcmVnaXN0
cnkvU2hhZG93Um9vdC1pbm5lckhUTUwudGVudGF0aXZlLWV4cGVjdGVkLnR4dAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Vz
dG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFkb3dSb290LWlubmVySFRNTC50ZW50YXRp
dmUuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4IDg4ZWM1NWJmZGI2OC4uZWMxN2Q0OTQ0ZDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAKQEAgLTEyNCw5ICsxMjQsMTAgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KERvY3VtZW50
JgogICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgYXV0byogb2xkUmVnaXN0cnkgPSBkb2N1bWVudC5hY3RpdmVDdXN0b21FbGVtZW50UmVn
aXN0cnkoKTsKLSAgICBkb2N1bWVudC5zZXRBY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cnkoJnJl
Z2lzdHJ5KTsKKyAgICBkb2N1bWVudC5zZXRBY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cnkocmVn
aXN0cnkpOwogICAgIGF1dG8gZWxlbWVudCA9IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJv
bm91c2x5KGRvY3VtZW50LCB2bSwgKmxleGljYWxHbG9iYWxPYmplY3QsIG1fY29uc3RydWN0b3Iu
Z2V0KCksIGxvY2FsTmFtZSwgcGFyc2VyQ29uc3RydWN0RWxlbWVudFdpdGhFbXB0eVN0YWNrKTsK
LSAgICBkb2N1bWVudC5zZXRBY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cnkob2xkUmVnaXN0cnkp
OworICAgIGlmIChvbGRSZWdpc3RyeSkKKyAgICAgICAgZG9jdW1lbnQuc2V0QWN0aXZlQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5KCpvbGRSZWdpc3RyeSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICFlbGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAg
ICAgYXV0byogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CkBAIC0yMjIsOCArMjIzLDcg
QEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKIAotICAgIFJlZlB0ciByZWdpc3RyeSA9IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0cnlGb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIEFTU0VS
VChyZWdpc3RyeSk7CisgICAgUmVmUHRyIHJlZ2lzdHJ5ID0gZWxlbWVudC50cmVlU2NvcGUoKS5j
dXN0b21FbGVtZW50UmVnaXN0cnkoKTsKICAgICBSZWYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oKmNvbnRleHQpOwogICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IEpTQzo6Z2V0Q29uc3Ry
dWN0RGF0YShtX2NvbnN0cnVjdG9yLmdldCgpKTsKICAgICBpZiAoY29uc3RydWN0RGF0YS50eXBl
ID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CkBAIC0yNDksNyArMjQ5LDggQEAgdm9pZCBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIGRvd25jYXN0PEhUTUxNYXliZUZvcm1Bc3NvY2lhdGVkQ3VzdG9tRWxlbWVudD4oZWxl
bWVudCkud2lsbFVwZ3JhZGVGb3JtQXNzb2NpYXRlZCgpOwogCiAgICAgYXV0byogb2xkUmVnaXN0
cnkgPSBkb2N1bWVudC0+YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7Ci0gICAgZG9jdW1l
bnQtPnNldEFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyeShyZWdpc3RyeS5nZXQoKSk7CisgICAg
aWYgKHJlZ2lzdHJ5KQorICAgICAgICBkb2N1bWVudC0+c2V0QWN0aXZlQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5KCpyZWdpc3RyeSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAg
IEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtMjU3LDcgKzI1OCw4IEBAIHZvaWQg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQogICAgIEpTVmFsdWUgcmV0dXJuZWRFbGVtZW50ID0gY29uc3RydWN0KGxleGljYWxHbG9iYWxP
YmplY3QsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnRleHQpOwogCi0gICAg
ZG9jdW1lbnQtPnNldEFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyeShvbGRSZWdpc3RyeSk7Cisg
ICAgaWYgKG9sZFJlZ2lzdHJ5KQorICAgICAgICBkb2N1bWVudC0+c2V0QWN0aXZlQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5KCpvbGRSZWdpc3RyeSk7CiAKICAgICBtX2NvbnN0cnVjdGlvblN0YWNrLnJl
bW92ZUxhc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA2N2Q3NTUwNmY0ZTIuLjE5ODgyZDJkOTBkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTg4LDggKzg4LDYgQEAgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNIVE1MRWxlbWVudChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEYKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBSZWYgZWxlbWVudCA9IGVsZW1l
bnRJbnRlcmZhY2UtPmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBpZiAocmVnaXN0
cnktPmlzU2NvcGVkKCkpCi0gICAgICAgICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmFkZFRv
U2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5TWFwKGVsZW1lbnQsICpyZWdpc3RyeSk7CiAgICAg
ICAgIGVsZW1lbnQtPnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKmVsZW1lbnRJbnRlcmZhY2Up
OwogICAgICAgICBhdXRvKiBqc0VsZW1lbnQgPSBKU0hUTUxFbGVtZW50OjpjcmVhdGUobmV3RWxl
bWVudFN0cnVjdHVyZSwgbmV3VGFyZ2V0R2xvYmFsT2JqZWN0LCBlbGVtZW50LmdldCgpKTsKICAg
ICAgICAgY2FjaGVXcmFwcGVyKG5ld1RhcmdldEdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVu
dC5wdHIoKSwganNFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCBhNDE1OTYzMzZiYjYuLmU1
YjA2NGI4NGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTA5LDkgKzEwOSw5IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEF0dHI6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJl
dHVybiBzZXRWYWx1ZSh2YWx1ZS5pc051bGwoKSA/IGVtcHR5QXRvbSgpIDogQXRvbVN0cmluZyh2
YWx1ZSkpOwogfQogCi1SZWY8Tm9kZT4gQXR0cjo6Y2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3Bl
JiB0cmVlU2NvcGUsIENsb25pbmdPcGVyYXRpb24pCitSZWY8Tm9kZT4gQXR0cjo6Y2xvbmVOb2Rl
SW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF0dHIodHJlZVNjb3BlLmRvY3VtZW50U2NvcGUoKSwg
cXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXR0
cih0YXJnZXREb2N1bWVudCwgcXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpKSk7CiB9CiAKIENTU1N0
eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IGYzN2Y2MTc2Y2Jj
Yy4uZjE3ZTE0NWZjMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByZWZpeChjb25zdCBBdG9tU3RyaW5nJikgZmlu
YWw7CiAKLSAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3BlJiwgQ2xvbmlu
Z09wZXJhdGlvbikgZmluYWw7CisgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3Vt
ZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7CiAKICAgICBib29sIGlzQXR0cmlidXRlTm9k
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0
aW9uLmNwcAppbmRleCA3OThkZTQ1MzA2NjguLjk1ODJhY2I3NGI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NEQVRBU2VjdGlvbi5jcHAKQEAgLTQ1LDEwICs0NSw5IEBAIFN0cmluZyBDREFUQVNlY3Rpb246
Om5vZGVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIiNjZGF0YS1zZWN0aW9uIl9zOwogfQogCi1S
ZWY8Tm9kZT4gQ0RBVEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChUcmVlU2NvcGUmIHRyZWVT
Y29wZSwgQ2xvbmluZ09wZXJhdGlvbikKK1JlZjxOb2RlPiBDREFUQVNlY3Rpb246OmNsb25lTm9k
ZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsK
LSAgICBSZWYgZG9jdW1lbnQgPSB0cmVlU2NvcGUuZG9jdW1lbnRTY29wZSgpOwotICAgIHJldHVy
biBjcmVhdGUoZG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKKyAgICByZXR1cm4gY3JlYXRl
KHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIFJlZjxUZXh0PiBDREFU
QVNlY3Rpb246OnZpcnR1YWxDcmVhdGUoU3RyaW5nJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uaAppbmRleCAxNjNhODBmMmNhOGQuLjMxNzFkNzFjZjc5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uaApAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIENEQVRBU2VjdGlv
bihEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChUcmVlU2NvcGUmLCBDbG9u
aW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwo
RG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICBSZWY8VGV4dD4gdmly
dHVhbENyZWF0ZShTdHJpbmcmJikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAK
aW5kZXggNWVjZjgzMTdmZmRmLi41YTEwOWUzMGI4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAK
QEAgLTQ0LDEwICs0NCw5IEBAIFN0cmluZyBDb21tZW50Ojpub2RlTmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuICIjY29tbWVudCJfczsKIH0KIAotUmVmPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUlu
dGVybmFsKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBDbG9uaW5nT3BlcmF0aW9uKQorUmVmPE5vZGU+
IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xv
bmluZ09wZXJhdGlvbikKIHsKLSAgICBSZWYgZG9jdW1lbnQgPSB0cmVlU2NvcGUuZG9jdW1lbnRT
Y29wZSgpOwotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsK
KyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4IDk1MjNiMDI2
NjY4Yi4uZWUwZWZlY2VhZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
cHJpdmF0ZToKICAgICBDb21tZW50KERvY3VtZW50JiwgU3RyaW5nJiYpOwogCiAgICAgU3RyaW5n
IG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVy
bmFsKFRyZWVTY29wZSYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxOb2Rl
PiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCmluZGV4IDgzYzNkOGE1YmU5ZS4uNWQyZTE0M2NmOTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDA2LDE3ICsxMDA2LDE5IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgfQog
fQogCi12b2lkIENvbnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2RlcyhUcmVlU2NvcGUmIHRyZWVT
Y29wZSwgQ29udGFpbmVyTm9kZSYgY2xvbmUpCit2b2lkIENvbnRhaW5lck5vZGU6OmNsb25lQ2hp
bGROb2RlcyhDb250YWluZXJOb2RlJiBjbG9uZSkKIHsKKyAgICBSZWYgdGFyZ2V0RG9jdW1lbnQg
PSBjbG9uZS5kb2N1bWVudCgpOworCiAgICAgTm9kZVZlY3RvciBwb3N0SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uVGFyZ2V0czsKICAgICBib29sIGhhZEVsZW1lbnQgPSBmYWxzZTsKICAgICBmb3IgKFJl
ZlB0ciBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgUmVmIGNsb25lZENoaWxkID0gY2hpbGQtPmNsb25lTm9kZUludGVy
bmFsKHRyZWVTY29wZSwgQ2xvbmluZ09wZXJhdGlvbjo6U2VsZldpdGhUZW1wbGF0ZUNvbnRlbnQp
OworICAgICAgICBSZWYgY2xvbmVkQ2hpbGQgPSBjaGlsZC0+Y2xvbmVOb2RlSW50ZXJuYWwodGFy
Z2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb246OlNlbGZXaXRoVGVtcGxhdGVDb250ZW50KTsK
ICAgICAgICAgewogICAgICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25T
Y29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKICAgICAgICAgICAgIFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAg
ICAgICAgICAgY2xvbmVkQ2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSk7
CisgICAgICAgICAgICBjbG9uZWRDaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoY2xvbmUu
dHJlZVNjb3BlKCkpOwogCiAgICAgICAgICAgICBjbG9uZS5hcHBlbmRDaGlsZENvbW1vbihjbG9u
ZWRDaGlsZCk7CiAgICAgICAgICAgICBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZChjbG9uZSwgY2xv
bmVkQ2hpbGQsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKQEAgLTEwMjQsNyAr
MTAyNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5vZGVzKFRyZWVTY29wZSYg
dHJlZVNjb3BlLCBDb250YWluZXJOb2RlJiBjbG9uZSkKICAgICAgICAgICAgIGhhZEVsZW1lbnQg
PSBoYWRFbGVtZW50IHx8IGlzPEVsZW1lbnQ+KGNsb25lZENoaWxkKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoUmVmUHRyIGNoaWxkQXNDb250YWluZXJOb2RlID0gZHluYW1pY0Rvd25jYXN0PENv
bnRhaW5lck5vZGU+KCpjaGlsZCkpCi0gICAgICAgICAgICBjaGlsZEFzQ29udGFpbmVyTm9kZS0+
Y2xvbmVDaGlsZE5vZGVzKHRyZWVTY29wZSwgZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oY2xvbmVk
Q2hpbGQpKTsKKyAgICAgICAgICAgIGNoaWxkQXNDb250YWluZXJOb2RlLT5jbG9uZUNoaWxkTm9k
ZXMoZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oY2xvbmVkQ2hpbGQpKTsKICAgICB9CiAgICAgY2xv
bmUuY2hpbGRyZW5DaGFuZ2VkKG1ha2VDaGlsZENoYW5nZUZvckNsb25lSW5zZXJ0aW9uKGhhZEVs
ZW1lbnQgPyBDbG9uZWRDaGlsZEluY2x1ZGVzRWxlbWVudHM6OlllcyA6IENsb25lZENoaWxkSW5j
bHVkZXNFbGVtZW50czo6Tm8pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXgg
NWQzNTRkNjJkNzQxLi45YTk3NWIwNTE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRha2VBbGxDaGlsZHJlbkZy
b20oQ29udGFpbmVyTm9kZSopOwogCi0gICAgdm9pZCBjbG9uZUNoaWxkTm9kZXMoVHJlZVNjb3Bl
JiwgQ29udGFpbmVyTm9kZSYgY2xvbmUpOworICAgIHZvaWQgY2xvbmVDaGlsZE5vZGVzKENvbnRh
aW5lck5vZGUmIGNsb25lKTsKIAogICAgIHN0cnVjdCBDaGlsZENoYW5nZSB7CiAgICAgICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVk
LCBUZXh0SW5zZXJ0ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1v
dmVkLCBOb25Db250ZW50c0NoaWxkUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZEluc2VydGVkLCBB
bGxDaGlsZHJlblJlcGxhY2VkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuY3BwCmluZGV4IDEyNjViOWYyODE2Yi4uOWFhY2VhZDk2OWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMTkwLDI4ICsxOTAs
NiBAQCB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6dXBncmFkZShOb2RlJiByb290KQogICAg
IHVwZ3JhZGVFbGVtZW50c0luU2hhZG93SW5jbHVkaW5nRGVzY2VuZGFudHMoKmNvbnRhaW5lck5v
ZGUpOwogfQogCi12b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6YWRkVG9TY29wZWRDdXN0b21F
bGVtZW50UmVnaXN0cnlNYXAoRWxlbWVudCYgZWxlbWVudCwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
JiByZWdpc3RyeSkKLXsKLSAgICBBU1NFUlQoIWVsZW1lbnQudXNlc1Njb3BlZEN1c3RvbUVsZW1l
bnRSZWdpc3RyeU1hcCgpKTsKLSAgICBlbGVtZW50LnNldFVzZXNTY29wZWRDdXN0b21FbGVtZW50
UmVnaXN0cnlNYXAoKTsKLSAgICBhdXRvIHJlc3VsdCA9IHNjb3BlZEN1c3RvbUVsZW1lbnRSZWdp
c3RyeU1hcCgpLmFkZChlbGVtZW50LCByZWdpc3RyeSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6
OnJlbW92ZUZyb21TY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoRWxlbWVudCYgZWxlbWVu
dCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC51c2VzU2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
TWFwKCkpOwotICAgIGVsZW1lbnQuY2xlYXJVc2VzU2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
TWFwKCk7Ci0gICAgYXV0byBkaWRSZW1vdmUgPSBzY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlN
YXAoKS5yZW1vdmUoZWxlbWVudCk7Ci0gICAgQVNTRVJUX1VOVVNFRChkaWRSZW1vdmUsIGRpZFJl
bW92ZSk7Ci19Ci0KLVdlYWtIYXNoTWFwPEVsZW1lbnQsIFJlZjxDdXN0b21FbGVtZW50UmVnaXN0
cnk+LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+JiBDdXN0b21FbGVtZW50UmVnaXN0
cnk6OnNjb3BlZEN1c3RvbUVsZW1lbnRSZWdpc3RyeU1hcCgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdlYWtIYXNoTWFwPEVsZW1lbnQsIFJlZjxDdXN0b21FbGVtZW50UmVnaXN0cnk+
LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcC5n
ZXQoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Ojp2aXNpdEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZXMoVmlzaXRvciYgdmlzaXRv
cikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApp
bmRleCA0ZTE5YWQzYWRiNTQuLmZkZGZkOGFiN2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtMjYsMTQgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgotI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
TGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTY0LDI2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KTsKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKLSAgICBib29sIGlzU2NvcGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fd2luZG93OyB9CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Q7CiAKLSAgICBzdGF0aWMgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiByZWdpc3RyeUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShl
bGVtZW50LnVzZXNTY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gc2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5TWFwKCkuZ2V0KGVsZW1lbnQpOwot
ICAgICAgICByZXR1cm4gZWxlbWVudC50cmVlU2NvcGUoKS5jdXN0b21FbGVtZW50UmVnaXN0cnko
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiByZWdpc3RyeUZv
ck5vZGVPclRyZWVTY29wZShjb25zdCBOb2RlJiBub2RlLCBjb25zdCBUcmVlU2NvcGUmIHRyZWVT
Y29wZSkKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0
PEVsZW1lbnQ+KG5vZGUpOyBVTkxJS0VMWShlbGVtZW50ICYmIGVsZW1lbnQtPnVzZXNTY29wZWRD
dXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKSkpCi0gICAgICAgICAgICByZXR1cm4gc2NvcGVkQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5TWFwKCkuZ2V0KCplbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHRy
ZWVTY29wZS5jdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBhZGRUb1Njb3BlZEN1c3RvbUVsZW1lbnRSZWdpc3RyeU1hcChFbGVtZW50JiwgQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Jik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVNjb3BlZEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeU1hcChFbGVtZW50Jik7Ci0KICAgICB2b2lkIGRpZEFzc29jaWF0ZVdpdGhE
b2N1bWVudChEb2N1bWVudCYpOwogCiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gYWRkRWxl
bWVudERlZmluaXRpb24oUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4mJik7CkBAIC0xMDks
OCArODgsNiBAQCBwcml2YXRlOgogICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgTG9jYWxET01XaW5kb3cmKTsKICAgICBDdXN0b21FbGVtZW50UmVnaXN0
cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCi0gICAgc3RhdGljIFdlYWtIYXNoTWFwPEVs
ZW1lbnQsIFJlZjxDdXN0b21FbGVtZW50UmVnaXN0cnk+LCBXZWFrUHRySW1wbFdpdGhFdmVudFRh
cmdldERhdGE+JiBzY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKTsKLQogICAgIFdlYWtQ
dHI8TG9jYWxET01XaW5kb3csIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV93aW5k
b3c7CiAgICAgVW5jaGVja2VkS2V5SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWY8SlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlPj4gbV9uYW1lTWFwOwogICAgIFVuY2hlY2tlZEtleUhhc2hNYXA8Y29uc3Qg
SlNDOjpKU09iamVjdCosIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSo+IG1fY29uc3RydWN0b3JN
YXAgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN0cnVjdG9yTWFwTG9jayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAzMjBkYjE0MzVlYjAuLjBmZDcwZDlmZDU3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0xMzc1LDIzICsxMzc1LDIwIEBAIHZvaWQgRG9jdW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogc3RhdGljIEFMV0FZU19JTkxJ
TkUgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIHZhbGlkYXRlQ3VzdG9tRWxlbWVu
dE5hbWVXaXRob3V0Q2hlY2tpbmdTdGFuZGFyZEVsZW1lbnROYW1lcyhjb25zdCBBdG9tU3RyaW5n
Jik7CiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzU3RhbmRhcmRFbGVtZW50TmFtZShjb25z
dCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpOwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRN
TEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KFRyZWVTY29wZSYgdHJlZVNj
b3BlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorc3RhdGljIEFMV0FZU19JTkxJTkUgUmVm
PEhUTUxFbGVtZW50PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc1N0YW5k
YXJkRWxlbWVudE5hbWUobmFtZS5sb2NhbE5hbWUoKSkpOyAvLyBIVE1MVGFnTmFtZXMuaW4gbGlz
dHMgYnVpbHRpbiBTVkcvTWF0aE1MIGVsZW1lbnRzIHdpdGggIi0iIGluIHRoZWlyIG5hbWVzIGV4
cGxpY2l0bHkgYXMgSFRNTFVua25vd25FbGVtZW50LgogICAgIGlmICh2YWxpZGF0ZUN1c3RvbUVs
ZW1lbnROYW1lV2l0aG91dENoZWNraW5nU3RhbmRhcmRFbGVtZW50TmFtZXMobmFtZS5sb2NhbE5h
bWUoKSkgIT0gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkKLSAgICAg
ICAgcmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKG5hbWUsIHRyZWVTY29wZS5kb2N1
bWVudFNjb3BlKCkpOworICAgICAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUo
bmFtZSwgZG9jdW1lbnQpOwogCi0gICAgUmVmIGVsZW1lbnQgPSBIVE1MTWF5YmVGb3JtQXNzb2Np
YXRlZEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZShuYW1lLCB0cmVlU2NvcGUuZG9jdW1lbnRTY29wZSgp
KTsKLSAgICBSZWZQdHIgcmVnaXN0cnkgPSB0cmVlU2NvcGUuY3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KCk7Ci0gICAgaWYgKHJlZ2lzdHJ5ICYmIFVOTElLRUxZKHJlZ2lzdHJ5LT5pc1Njb3BlZCgpKSkK
LSAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphZGRUb1Njb3BlZEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeU1hcChlbGVtZW50LCAqcmVnaXN0cnkpOworICAgIFJlZiBlbGVtZW50ID0gSFRNTE1h
eWJlRm9ybUFzc29jaWF0ZWRDdXN0b21FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOwog
ICAgIGVsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKICAgICBy
ZXR1cm4gZWxlbWVudDsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPEhUTUxFbGVtZW50
PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29u
c3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQorc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPEhUTUxF
bGVtZW50PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlVXBncmFk
ZUNhbmRpZGF0ZUVsZW1lbnQodHJlZVNjb3BlLCBRdWFsaWZpZWROYW1lIHsgbnVsbEF0b20oKSwg
bG9jYWxOYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSB9KTsKKyAgICByZXR1cm4gY3JlYXRlVXBncmFk
ZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIFF1YWxpZmllZE5hbWUgeyBudWxsQXRvbSgpLCBs
b2NhbE5hbWUsIHhodG1sTmFtZXNwYWNlVVJJIH0pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNWYWxpZEhUTUxFbGVtZW50TmFtZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCkBAIC0x
NDE5LDcgKzE0MTYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVI
VE1MRWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbihUcmVlU2NvcGUmCiAgICAgaWYgKFVOTElLRUxZ
KCFpc1ZhbGlkSFRNTEVsZW1lbnROYW1lKG5hbWUpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEV4Y2VwdGlvbkNvZGU6OkludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0gICAgcmV0dXJu
IFJlZjxFbGVtZW50PiB7IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KHRyZWVTY29wZSwg
bmFtZSkgfTsKKyAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgY3JlYXRlVXBncmFkZUNhbmRpZGF0
ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50
Pj4gVHJlZVNjb3BlOjpjcmVhdGVFbGVtZW50Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKQEAgLTE0ODUsNiArMTQ4MiwzMyBAQCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9j
dW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogICAgIHJldHVybiBwcm9wZXJ0eVNl
dC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCitFeGNlcHRpb25PcjxSZWY8Tm9k
ZT4+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKQor
eworICAgIHN3aXRjaCAobm9kZVRvSW1wb3J0Lm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIGlmIChub2RlVG9JbXBvcnQuaXNTaGFkb3dSb290
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBF
TEVNRU5UX05PREU6CisgICAgY2FzZSBURVhUX05PREU6CisgICAgY2FzZSBDREFUQV9TRUNUSU9O
X05PREU6CisgICAgY2FzZSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgY2FzZSBD
T01NRU5UX05PREU6CisgICAgICAgIHJldHVybiBub2RlVG9JbXBvcnQuY2xvbmVOb2RlSW50ZXJu
YWwoZG9jdW1lbnQoKSwgZGVlcCA/IENsb25pbmdPcGVyYXRpb246OkV2ZXJ5dGhpbmcgOiBDbG9u
aW5nT3BlcmF0aW9uOjpPbmx5U2VsZik7CisKKyAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7Cisg
ICAgICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHVuY2hlY2tlZERvd25jYXN0PEF0dHI+KG5vZGVUb0lt
cG9ydCk7CisgICAgICAgIHJldHVybiBSZWY8Tm9kZT4geyBBdHRyOjpjcmVhdGUoKnRoaXMsIGF0
dHJpYnV0ZS5xdWFsaWZpZWROYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKSB9OworICAgIH0KKyAg
ICBjYXNlIERPQ1VNRU5UX05PREU6IC8vIENhbid0IGltcG9ydCBhIGRvY3VtZW50IGludG8gYW5v
dGhlciBkb2N1bWVudC4KKyAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERTogLy8gRklYTUU6IFN1
cHBvcnQgY2xvbmluZyBhIERvY3VtZW50VHlwZSBub2RlIHBlciBET000LgorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhjZXB0aW9uQ29kZTo6Tm90U3Vw
cG9ydGVkRXJyb3IgfTsKK30KKworCiBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+IERvY3VtZW50Ojph
ZG9wdE5vZGUoTm9kZSYgc291cmNlKQogewogICAgIEV2ZW50UXVldWVTY29wZSBzY29wZTsKQEAg
LTE1NDQsMjAgKzE1NjgsMjEgQEAgYm9vbCBEb2N1bWVudDo6aGFzVmFsaWROYW1lc3BhY2VGb3JB
dHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogICAgIHJldHVybiBoYXNWYWxp
ZE5hbWVzcGFjZUZvckVsZW1lbnRzKHFOYW1lKTsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxlbWVu
dD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUZhbGxi
YWNrSFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQogewotICAgIGlmIChSZWZQdHIgcmVnaXN0cnkgPSB0cmVlU2NvcGUuY3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KCkpIHsKLSAgICAgICAgaWYgKFJlZlB0ciBlbGVtZW50SW50ZXJmYWNlID0gcmVn
aXN0cnktPmZpbmRJbnRlcmZhY2UobmFtZSkpIHsKLSAgICAgICAgICAgIFJlZiBlbGVtZW50ID0g
ZWxlbWVudEludGVyZmFjZS0+Y3JlYXRlRWxlbWVudCh0cmVlU2NvcGUuZG9jdW1lbnRTY29wZSgp
KTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3RyeS0+aXNTY29wZWQoKSkpCi0gICAg
ICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphZGRUb1Njb3BlZEN1c3RvbUVsZW1l
bnRSZWdpc3RyeU1hcChlbGVtZW50LCAqcmVnaXN0cnkpOwotICAgICAgICAgICAgZWxlbWVudC0+
c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgpOwotICAgICAgICAgICAgZWxlbWVu
dC0+ZW5xdWV1ZVRvVXBncmFkZSgqZWxlbWVudEludGVyZmFjZSk7Ci0gICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICBpZiAoUmVmUHRyIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygp
KSB7CisgICAgICAgIFJlZlB0ciByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJlZ2lz
dHJ5KCk7CisgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3RyeSkpIHsKKyAgICAgICAgICAgIGlm
IChSZWZQdHIgZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKG5hbWUp
KSB7CisgICAgICAgICAgICAgICAgUmVmIGVsZW1lbnQgPSBlbGVtZW50SW50ZXJmYWNlLT5jcmVh
dGVFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRJc0N1c3Rv
bUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+ZW5x
dWV1ZVRvVXBncmFkZSgqZWxlbWVudEludGVyZmFjZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gRklYTUU6
IFNob3VsZCB3ZSBhbHNvIGNoZWNrIHRoZSBlcXVhbGl0eSBvZiBwcmVmaXggYmV0d2VlbiB0aGUg
Y3VzdG9tIGVsZW1lbnQgYW5kIG5hbWU/Ci0gICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5kaWRh
dGVFbGVtZW50KHRyZWVTY29wZSwgbmFtZSk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1lKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHJlYWxseSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzLgpAQCAtMTU3MCw3
ICsxNTk1LDcgQEAgUmVmPEVsZW1lbnQ+IFRyZWVTY29wZTo6Y3JlYXRlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBib29sIGNyZWF0ZWRCeVAKICAgICBpZiAobmFtZS5uYW1lc3Bh
Y2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkgewogICAgICAgICBlbGVtZW50ID0gSFRNTEVs
ZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIG51bGxwdHIs
IGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghZWxlbWVudCkpCi0gICAg
ICAgICAgICBlbGVtZW50ID0gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudCgqdGhpcywgbmFtZSk7
CisgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChkb2N1bWVu
dCwgbmFtZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVz
OjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgIGVsZW1lbnQgPSBTVkdFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlRWxlbWVudChuYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKTsKICNpZiBFTkFC
TEUoTUFUSE1MKQpAQCAtMTc2MCw5ICsxNzg1LDkgQEAgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0
aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b20K
ICAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDsKIH0K
IAotdm9pZCBEb2N1bWVudDo6c2V0QWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkpCit2b2lkIERvY3VtZW50OjpzZXRBY3RpdmVDdXN0b21F
bGVtZW50UmVnaXN0cnkoQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JiByZWdpc3RyeSkKIHsKLSAgICBt
X2FjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyeSA9IHJlZ2lzdHJ5OworICAgIG1fYWN0aXZlQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5ID0gJnJlZ2lzdHJ5OwogfQogCiBFeGNlcHRpb25PcjxSZWY8RWxl
bWVudD4+IFRyZWVTY29wZTo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkKQEAgLTUxMDIsNyArNTEy
Nyw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkKGNvbnN0IE5vZGUmIG5ld0NoaWxk
LCBjb25zdCBOb2RlKiByZWZDaGlsZCwgQWNjZXB0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJl
ZjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3BlJiwgQ2xvbmluZ09w
ZXJhdGlvbiB0eXBlKQorUmVmPE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1
bWVudCYsIENsb25pbmdPcGVyYXRpb24gdHlwZSkKIHsKICAgICBSZWYgY2xvbmUgPSBjbG9uZURv
Y3VtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgY2xvbmUtPmNsb25lRGF0YUZyb21Eb2N1bWVu
dCgqdGhpcyk7CkBAIC01MTExLDcgKzUxMzYsNyBAQCBSZWY8Tm9kZT4gRG9jdW1lbnQ6OmNsb25l
Tm9kZUludGVybmFsKFRyZWVTY29wZSYsIENsb25pbmdPcGVyYXRpb24gdHlwZSkKICAgICBjYXNl
IENsb25pbmdPcGVyYXRpb246OlNlbGZXaXRoVGVtcGxhdGVDb250ZW50OgogICAgICAgICBicmVh
azsKICAgICBjYXNlIENsb25pbmdPcGVyYXRpb246OkV2ZXJ5dGhpbmc6Ci0gICAgICAgIGNsb25l
Q2hpbGROb2RlcyhjbG9uZSwgY2xvbmUpOworICAgICAgICBjbG9uZUNoaWxkTm9kZXMoY2xvbmUp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGNsb25lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCAzMmM4YzNlMzMyNTcuLjdmYTQyZTQwZTBlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTUyNSw5ICs1MjUsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBFeGNlcHRpb25PcjxSZWY8QXR0cj4+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8QXR0cj4+IGNyZWF0
ZUF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0
cmluZyYgcXVhbGlmaWVkTmFtZSwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBm
YWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBpbXBvcnRO
b2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKTsKIAogICAgIHN0YXRpYyBDdXN0b21F
bGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25z
dCBBdG9tU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRBY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cnko
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Kik7CisgICAgdm9pZCBzZXRBY3RpdmVDdXN0b21FbGVtZW50
UmVnaXN0cnkoQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Jik7CiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5KiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cnkoKSB7IHJldHVybiBtX2FjdGl2ZUN1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5nZXQoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJh
bmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSwgSGl0VGVzdFNvdXJjZSA9IEhp
dFRlc3RTb3VyY2U6OlNjcmlwdCk7CkBAIC0yMDQ4LDcgKzIwNDksNyBAQCBwcml2YXRlOgogCiAg
ICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjaGlsZFR5cGVBbGxv
d2VkKE5vZGVUeXBlKSBjb25zdCBmaW5hbDsKLSAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoVHJlZVNjb3BlJiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7CisgICAgUmVmPE5vZGU+IGNs
b25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7CiAgICAg
dm9pZCBjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgIFNlY29u
ZHMgbWluaW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCAxMDJkOTg0N2JmODEuLjA4ZDQ0MGZmNTljYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtNzUsMjEgKzc1LDIx
IEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVudDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBl
KSBjb25zdAogICAgIH0KIH0KIAotUmVmPE5vZGU+IERvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9k
ZUludGVybmFsKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCitS
ZWY8Tm9kZT4gRG9jdW1lbnRGcmFnbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRh
cmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCiB7Ci0gICAgUmVmIGNsb25lID0g
Y3JlYXRlKHRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCkpOworICAgIFJlZiBjbG9uZSA9IGNyZWF0
ZSh0YXJnZXREb2N1bWVudCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDbG9uaW5n
T3BlcmF0aW9uOjpPbmx5U2VsZjoKICAgICBjYXNlIENsb25pbmdPcGVyYXRpb246OlNlbGZXaXRo
VGVtcGxhdGVDb250ZW50OgogICAgICAgICBicmVhazsKICAgICBjYXNlIENsb25pbmdPcGVyYXRp
b246OkV2ZXJ5dGhpbmc6Ci0gICAgICAgIGNsb25lQ2hpbGROb2Rlcyh0cmVlU2NvcGUsIGNsb25l
KTsKKyAgICAgICAgY2xvbmVDaGlsZE5vZGVzKGNsb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIHJldHVybiBjbG9uZTsKIH0KIAotdm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhU
TUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25T
ZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVudFBvbGljeSwgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KiByZWdpc3RyeSkKK3ZvaWQgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNv
bnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgT3B0aW9uU2V0PFBh
cnNlckNvbnRlbnRQb2xpY3k+IHBhcnNlckNvbnRlbnRQb2xpY3kpCiB7CiAgICAgUmVmIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAodHJ5RmFzdFBhcnNpbmdIVE1MRnJhZ21l
bnQoc291cmNlLCBkb2N1bWVudCwgKnRoaXMsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50
UG9saWN5KSkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgRG9jdW1lbnRGcmFnbWVudDo6cGFy
c2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50JiBjb250ZXh0RWxlbWVudCwKICAg
ICBpZiAoaGFzQ2hpbGROb2RlcygpKQogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCi0gICAg
SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCAqdGhpcywg
Y29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3ksIHJlZ2lzdHJ5KTsKKyAgICBIVE1M
RG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsICp0aGlzLCBjb250
ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRGcmFn
bWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVudFBvbGljeSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDZiNjdjM2ZjMGQ2MS4uYWU0
NDc3Mjk2MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTM1LDcg
KzM1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGb3JJbm5lck91dGVySFRNTChEb2N1bWVudCYpOwogCi0gICAgdm9pZCBwYXJz
ZUhUTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNldDxQ
YXJzZXJDb250ZW50UG9saWN5PiA9IHsgUGFyc2VyQ29udGVudFBvbGljeTo6QWxsb3dTY3JpcHRp
bmdDb250ZW50IH0sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogPSBudWxscHRyKTsKKyAgICB2b2lk
IHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgT3B0aW9u
U2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+ID0geyBQYXJzZXJDb250ZW50UG9saWN5OjpBbGxvd1Nj
cmlwdGluZ0NvbnRlbnQgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZVhNTChjb25z
dCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgT3B0aW9uU2V0PFBhcnNlckNvbnRl
bnRQb2xpY3k+ID0geyBQYXJzZXJDb250ZW50UG9saWN5OjpBbGxvd1NjcmlwdGluZ0NvbnRlbnQg
fSk7CiAKICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNDksNyArNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG5v
ZGVOYW1lKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgUmVmPE5vZGU+IGNsb25lTm9k
ZUludGVybmFsKFRyZWVTY29wZSYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIFJl
ZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92
ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IDJkMzY5ZTRhZTMy
ZS4uYTJhYjJkYmM3MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcApAQCAtNDUs
MTAgKzQ1LDkgQEAgU3RyaW5nIERvY3VtZW50VHlwZTo6bm9kZU5hbWUoKSBjb25zdAogICAgIHJl
dHVybiBuYW1lKCk7CiB9CiAKLVJlZjxOb2RlPiBEb2N1bWVudFR5cGU6OmNsb25lTm9kZUludGVy
bmFsKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBDbG9uaW5nT3BlcmF0aW9uKQorUmVmPE5vZGU+IERv
Y3VtZW50VHlwZTo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIGRvY3VtZW50VGFyZ2V0LCBD
bG9uaW5nT3BlcmF0aW9uKQogewotICAgIFJlZiBkb2N1bWVudCA9IHRyZWVTY29wZS5kb2N1bWVu
dFNjb3BlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgbV9uYW1lLCBtX3B1YmxpY0lk
LCBtX3N5c3RlbUlkKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50VGFyZ2V0LCBtX25hbWUs
IG1fcHVibGljSWQsIG1fc3lzdGVtSWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBl
LmgKaW5kZXggYTllODkxMWFkNDViLi44MWZhZGJlNDczM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudFR5cGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQpOwogCiAgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKFRyZWVTY29wZSYsIENsb25pbmdP
cGVyYXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1
bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkgY29uc3QgPSBkZWxldGU7IC8vIENhbGwgcGFyZW50Tm9kZSgpIGluc3Rl
YWQuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhNDUzZmZkYmQ3N2IuLjIyMTQ4NjVlYjlj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjEzLDEyICs2MTMsMTIgQEAgYm9vbCBFbGVt
ZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVs
YXRlZENsaWNrTW91c2UKICAgICByZXR1cm4gc2ltdWxhdGVDbGljaygqdGhpcywgdW5kZXJseWlu
Z0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrU291cmNl
OjpVc2VyQWdlbnQpOwogfQogCi1SZWY8Tm9kZT4gRWxlbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwo
VHJlZVNjb3BlJiB0cmVlU2NvcGUsIENsb25pbmdPcGVyYXRpb24gdHlwZSkKK1JlZjxOb2RlPiBF
bGVtZW50OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25p
bmdPcGVyYXRpb24gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENsb25p
bmdPcGVyYXRpb246Ok9ubHlTZWxmOgogICAgIGNhc2UgQ2xvbmluZ09wZXJhdGlvbjo6U2VsZldp
dGhUZW1wbGF0ZUNvbnRlbnQ6IHsKLSAgICAgICAgUmVmIGNsb25lID0gY2xvbmVFbGVtZW50V2l0
aG91dENoaWxkcmVuKHRyZWVTY29wZSk7CisgICAgICAgIFJlZiBjbG9uZSA9IGNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgZXZlbnRBbGxvd2VkU2NvcGUgeyBjbG9uZSB9Owog
ICAgICAgICBjbG9uZVNoYWRvd1RyZWVJZlBvc3NpYmxlKGNsb25lKTsKICAgICAgICAgcmV0dXJu
IGNsb25lOwpAQCAtNjI2LDcgKzYyNiw3IEBAIFJlZjxOb2RlPiBFbGVtZW50OjpjbG9uZU5vZGVJ
bnRlcm5hbChUcmVlU2NvcGUmIHRyZWVTY29wZSwgQ2xvbmluZ09wZXJhdGlvbiB0eXBlCiAgICAg
Y2FzZSBDbG9uaW5nT3BlcmF0aW9uOjpFdmVyeXRoaW5nOgogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgcmV0dXJuIGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbih0cmVlU2NvcGUpOworICAgIHJl
dHVybiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4odGFyZ2V0RG9jdW1lbnQpOwogfQogCiB2b2lk
IEVsZW1lbnQ6OmNsb25lU2hhZG93VHJlZUlmUG9zc2libGUoRWxlbWVudCYgbmV3SG9zdCkKQEAg
LTYzNiwyNSArNjM2LDI1IEBAIHZvaWQgRWxlbWVudDo6Y2xvbmVTaGFkb3dUcmVlSWZQb3NzaWJs
ZShFbGVtZW50JiBuZXdIb3N0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWYgY2xvbmVkU2hh
ZG93Um9vdCA9IFsmXSB7Ci0gICAgICAgIFJlZiBjbG9uZSA9IG9sZFNoYWRvd1Jvb3QtPmNsb25l
Tm9kZUludGVybmFsKG5ld0hvc3QudHJlZVNjb3BlKCksIE5vZGU6OkNsb25pbmdPcGVyYXRpb246
OlNlbGZXaXRoVGVtcGxhdGVDb250ZW50KTsKKyAgICAgICAgUmVmIGNsb25lID0gb2xkU2hhZG93
Um9vdC0+Y2xvbmVOb2RlSW50ZXJuYWwobmV3SG9zdC5kb2N1bWVudCgpLCBOb2RlOjpDbG9uaW5n
T3BlcmF0aW9uOjpTZWxmV2l0aFRlbXBsYXRlQ29udGVudCk7CiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxTaGFkb3dSb290PihXVEZNb3ZlKGNsb25lKSk7CiAgICAgfSgpOwogICAgIG5ld0hvc3Qu
YWRkU2hhZG93Um9vdChjbG9uZWRTaGFkb3dSb290LmNvcHlSZWYoKSk7Ci0gICAgb2xkU2hhZG93
Um9vdC0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZFNoYWRvd1Jvb3QsIGNsb25lZFNoYWRvd1Jvb3Qp
OworICAgIG9sZFNoYWRvd1Jvb3QtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRTaGFkb3dSb290KTsK
IH0KIAotUmVmPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbihUcmVl
U2NvcGUmIHRyZWVTY29wZSkKK1JlZjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
Q2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KQogewotICAgIFJlZiBjbG9uZSA9IGNs
b25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbih0cmVlU2NvcGUpOworICAgIFJlZiBjbG9uZSA9IGNs
b25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBldmVudEFsbG93ZWRTY29wZSB7IGNsb25l
IH07CiAgICAgY2xvbmVTaGFkb3dUcmVlSWZQb3NzaWJsZShjbG9uZSk7Ci0gICAgY2xvbmVDaGls
ZE5vZGVzKHRyZWVTY29wZSwgY2xvbmUpOworICAgIGNsb25lQ2hpbGROb2RlcyhjbG9uZSk7CiAg
ICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuKFRyZWVTY29wZSYgdHJlZVNjb3BlKQorUmVmPEVsZW1lbnQ+IEVsZW1l
bnQ6OmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQp
CiB7Ci0gICAgUmVmIGNsb25lID0gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbih0cmVlU2NvcGUpOworICAgIFJlZiBjbG9uZSA9IGNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4odGFyZ2V0RG9jdW1lbnQpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNh
dGNoIEhUTUwgZWxlbWVudHMgaW4gdGhlIHdyb25nIG5hbWVzcGFjZSB0aGF0IGFyZSBub3QgY29y
cmVjdGx5IGNvcGllZC4KICAgICAvLyBUaGlzIGlzIGEgc2FuaXR5IGNoZWNrIGFzIEhUTUwgb3Zl
cmxvYWRzIHNvbWUgb2YgdGhlIERPTSBtZXRob2RzLgpAQCAtNjY0LDkgKzY2NCw5IEBAIFJlZjxF
bGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oVHJlZVNjb3BlJiB0
cmVlU2NvcGUpCiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8RWxlbWVudD4gRWxlbWVudDo6
Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihUcmVlU2NvcGUmIHRyZWVT
Y29wZSkKK1JlZjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gdHJl
ZVNjb3BlLmNyZWF0ZUVsZW1lbnQodGFnUU5hbWUoKSwgZmFsc2UpOworICAgIHJldHVybiB0YXJn
ZXREb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ1FOYW1lKCksIGZhbHNlKTsKIH0KIAogUmVmPEF0
dHI+IEVsZW1lbnQ6OmRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKQEAgLTI5MjAsOCAr
MjkyMCw2IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEVsZW1lbnQ6Omluc2Vy
dGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zCiAgICAgICAgICAgICBpZiAobmV3SFRN
TERvY3VtZW50KQogICAgICAgICAgICAgICAgIHVwZGF0ZU5hbWVGb3JEb2N1bWVudCgqbmV3SFRN
TERvY3VtZW50LCBudWxsQXRvbSgpLCBuYW1lVmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChwYXJlbnRPZkluc2VydGVkVHJlZS5pc0luVHJlZVNjb3BlKCkgJiYgdXNlc1Njb3BlZEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeU1hcCgpKQotICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpyZW1vdmVGcm9tU2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5TWFwKCp0aGlzKTsKICAgICB9
CiAKICAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KSB7CkBAIC0zMDA2
LDEyICszMDA0LDYgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIKICAgICAgICAgICAgIGlmIChv
bGRIVE1MRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgdXBkYXRlTmFtZUZvckRvY3VtZW50KCpv
bGRIVE1MRG9jdW1lbnQsIG5hbWVWYWx1ZSwgbnVsbEF0b20oKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuaXNJblNoYWRvd1RyZWUoKSkgewotICAgICAg
ICAgICAgaWYgKFJlZlB0ciByZWdpc3RyeSA9IG9sZFRyZWVTY29wZS5jdXN0b21FbGVtZW50UmVn
aXN0cnkoKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3RyeS0+aXNTY29w
ZWQoKSkpCi0gICAgICAgICAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6YWRkVG9T
Y29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKnRoaXMsICpyZWdpc3RyeSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KSB7CkBAIC00MDcxLDcgKzQwNjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBFbGVtZW50OjpyZXBsYWNlQ2hpbGRyZW5XaXRoTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3Vw
LCBPcHRpbwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKCp0aGlzLCBtYXJrdXAsIHBvbGljeSwg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RyeUZvck5vZGVPclRyZWVTY29wZShjb250YWlu
ZXIsIGNvbnRhaW5lci0+dHJlZVNjb3BlKCkpKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgqdGhpcywgbWFya3VwLCBwb2xpY3kpOwogICAgIGlm
IChmcmFnbWVudC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVh
c2VFeGNlcHRpb24oKTsKIApAQCAtNDEzMSw3ICs0MTIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RWxlbWVudDo6c2V0T3V0ZXJIVE1MKHN0ZDo6dmFyaWFudDxSZWZQdHI8VHJ1c3RlZEhUTUw+LCBT
dHJpbmcKICAgICBSZWZQdHIgcHJldmlvdXMgPSBwcmV2aW91c1NpYmxpbmcoKTsKICAgICBSZWZQ
dHIgbmV4dCA9IG5leHRTaWJsaW5nKCk7CiAKLSAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGb3JJbm5lck91dGVySFRNTCgqcGFyZW50LCBzdHJpbmdWYWx1ZUhvbGRlci5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgeyBQYXJzZXJDb250ZW50UG9saWN5OjpBbGxvd1NjcmlwdGluZ0NvbnRl
bnQgfSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RyeUZvckVsZW1lbnQoKnBhcmVudCkp
OworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKCpw
YXJlbnQsIHN0cmluZ1ZhbHVlSG9sZGVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IFBhcnNlckNv
bnRlbnRQb2xpY3k6OkFsbG93U2NyaXB0aW5nQ29udGVudCB9KTsKICAgICBpZiAoZnJhZ21lbnQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAKQEAgLTU2NjQsOCArNTY1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omlu
c2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmCiAgICAg
aWYgKGNvbnRleHRFbGVtZW50Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udGV4
dEVsZW1lbnQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIC8vIFN0ZXAgMy4KLSAgICBSZWZQdHIg
cmVnaXN0cnkgPSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnJlZ2lzdHJ5Rm9yRWxlbWVudChjb250
ZXh0RWxlbWVudC5yZXR1cm5WYWx1ZSgpKTsKLSAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGb3JJbm5lck91dGVySFRNTChjb250ZXh0RWxlbWVudC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgbWFya3VwLCB7IFBhcnNlckNvbnRlbnRQb2xpY3k6OkFsbG93U2NyaXB0aW5nQ29udGVudCB9
LCByZWdpc3RyeS5nZXQoKSk7CisgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9y
SW5uZXJPdXRlckhUTUwoY29udGV4dEVsZW1lbnQucmVsZWFzZVJldHVyblZhbHVlKCksIG1hcmt1
cCwgeyBQYXJzZXJDb250ZW50UG9saWN5OjpBbGxvd1NjcmlwdGluZ0NvbnRlbnQgfSk7CiAgICAg
aWYgKGZyYWdtZW50Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVs
ZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAxMzVhM2U4NTQ1MDIuLjkx
YzVjODAxNTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNDQsOCArMzQ0LDggQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZWY8RWxl
bWVudD4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKFRyZWVTY29wZSYpOwotICAgIFJlZjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oVHJlZVNjb3BlJik7CisgICAgUmVmPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbihEb2N1bWVudCYpOworICAgIFJlZjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oRG9jdW1lbnQmKTsKIAogICAgIHZvaWQg
bm9ybWFsaXplQXR0cmlidXRlcygpOwogCkBAIC05MjMsOSArOTIzLDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9tUmVzaXplT2JzZXJ2ZXJzU2xvdyhSZXNpemVPYnNlcnZlckRh
dGEmKTsKIAogICAgIC8vIFRoZSBjbG9uZU5vZGUgZnVuY3Rpb24gaXMgcHJpdmF0ZSBzbyB0aGF0
IG5vbi12aXJ0dWFsIGNsb25lRWxlbWVudFdpdGgvV2l0aG91dENoaWxkcmVuIGFyZSB1c2VkIGlu
c3RlYWQuCi0gICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKFRyZWVTY29wZSYsIENsb25p
bmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvbmVTaGFk
b3dUcmVlSWZQb3NzaWJsZShFbGVtZW50JiBuZXdIb3N0KTsKLSAgICB2aXJ0dWFsIFJlZjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKFRyZWVTY29wZSYp
OworICAgIHZpcnR1YWwgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oRG9jdW1lbnQmKTsKIAogICAgIGlubGluZSB2b2lkIHJlbW92ZVNoYWRvd1Jv
b3QoKTsgLy8gRGVmaW5lZCBpbiBFbGVtZW50UmFyZURhdGEuaC4KICAgICB2b2lkIHJlbW92ZVNo
YWRvd1Jvb3RTbG93KFNoYWRvd1Jvb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNhZTMwZGYxYzE3My4u
YmZmNDU5N2NiM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE4NSw4ICsxODUsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIFNlbGZXaXRoVGVtcGxhdGVDb250ZW50LAogICAgICAgICBFdmVyeXRoaW5nLAogICAg
IH07Ci0gICAgdmlydHVhbCBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3BlJiwg
Q2xvbmluZ09wZXJhdGlvbikgPSAwOwotICAgIFJlZjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVw
KSB7IHJldHVybiBjbG9uZU5vZGVJbnRlcm5hbCh0cmVlU2NvcGUoKSwgZGVlcCA/IENsb25pbmdP
cGVyYXRpb246OkV2ZXJ5dGhpbmcgOiBDbG9uaW5nT3BlcmF0aW9uOjpPbmx5U2VsZik7IH0KKyAg
ICB2aXJ0dWFsIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdP
cGVyYXRpb24pID0gMDsKKyAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgeyByZXR1
cm4gY2xvbmVOb2RlSW50ZXJuYWwoZG9jdW1lbnQoKSwgZGVlcCA/IENsb25pbmdPcGVyYXRpb246
OkV2ZXJ5dGhpbmcgOiBDbG9uaW5nT3BlcmF0aW9uOjpPbmx5U2VsZik7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+IGNsb25lTm9kZUZvckJpbmRpbmdzKGJvb2wg
ZGVlcCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0
OwpAQCAtMjkxLDEwICsyOTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUoKSB7IHNldEVsZW1lbnRTdGF0ZUZsYWcoRWxlbWVudFN0YXRlRmxh
Zzo6SXNJbkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKTsgfQogICAgIHZvaWQgY2xlYXJJc0lu
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKSB7IGNsZWFyRWxlbWVudFN0YXRlRmxhZyhFbGVt
ZW50U3RhdGVGbGFnOjpJc0luQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUpOyB9CiAKLSAgICBi
b29sIHVzZXNTY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKSBjb25zdCB7IHJldHVybiBo
YXNFbGVtZW50U3RhdGVGbGFnKEVsZW1lbnRTdGF0ZUZsYWc6OlVzZXNTY29wZWRDdXN0b21FbGVt
ZW50UmVnaXN0cnlNYXApOyB9Ci0gICAgdm9pZCBzZXRVc2VzU2NvcGVkQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5TWFwKCkgeyBzZXRFbGVtZW50U3RhdGVGbGFnKEVsZW1lbnRTdGF0ZUZsYWc6OlVzZXNT
Y29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXApOyB9Ci0gICAgdm9pZCBjbGVhclVzZXNTY29w
ZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKSB7IGNsZWFyRWxlbWVudFN0YXRlRmxhZyhFbGVt
ZW50U3RhdGVGbGFnOjpVc2VzU2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5TWFwKTsgfQotCiAg
ICAgLy8gUmV0dXJucyBudWxsLCBhIGNoaWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNo
YWRvdyByb290LgogICAgIE5vZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CiAK
QEAgLTY0Nyw4ICs2NDMsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgICAgICBJc0Z1bGxzY3JlZW4gPSAxIDw8IDYsCiAjZW5kaWYKLSAgICAgICAgVXNlc1Nj
b3BlZEN1c3RvbUVsZW1lbnRSZWdpc3RyeU1hcCA9IDEgPDwgNywKLSAgICAgICAgLy8gOC1iaXRz
IGZyZWUuCisgICAgICAgIC8vIDktYml0cyBmcmVlLgogICAgIH07CiAKICAgICBlbnVtIGNsYXNz
IFRhYkluZGV4U3RhdGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggYTExODQ2Njg2NWI4Li5jMDBlMjFiZWU0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC03MiwxMSAr
NzIsMTEgQEAgU3RyaW5nIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6bm9kZU5hbWUoKSBjb25zdAog
ICAgIHJldHVybiBtX3RhcmdldDsKIH0KIAotUmVmPE5vZGU+IFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6Y2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3BlJiB0cmVlU2NvcGUsIENsb25pbmdPcGVyYXRp
b24pCitSZWY8Tm9kZT4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7CiAgICAgLy8gRklY
TUU6IElzIGl0IGEgcHJvYmxlbSB0aGF0IHRoaXMgZG9lcyBub3QgY29weSBtX2xvY2FsSHJlZj8K
ICAgICAvLyBXaGF0IGFib3V0IG90aGVyIGRhdGEgbWVtYmVycz8KLSAgICByZXR1cm4gY3JlYXRl
KHRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCksIFN0cmluZyB7IG1fdGFyZ2V0IH0sIFN0cmluZyB7
IGRhdGEoKSB9KTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBt
X3RhcmdldCB9LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCmluZGV4IDEyNjZhOTg2MzQ2Mi4uODQwY2NlNTJiMWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC01OCw3ICs1OCw3IEBAIHBy
aXZhdGU6CiAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50JiwgU3RyaW5nJiYgdGFy
Z2V0LCBTdHJpbmcmJiBkYXRhKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChUcmVlU2NvcGUmLCBDbG9uaW5n
T3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAyNzU1OWJkMWM5NmMuLmFhMjM5
Y2ZmNjk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNoYWRvd1Jvb3Q6OnJlcGxhY2VDaGlsZHJlbldpdGhNYXJrdXAo
Y29uc3QgU3RyaW5nJiBtYXJrdXAsIE9wCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0g
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoKnByb3Rl
Y3RlZEhvc3QoKSwgbWFya3VwLCBwb2xpY3ksIGN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpKTsKKyAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgqcHJvdGVj
dGVkSG9zdCgpLCBtYXJrdXAsIHBvbGljeSk7CiAgICAgaWYgKGZyYWdtZW50Lmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIHJl
dHVybiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoKnRoaXMsIGZyYWdtZW50LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKQEAgLTI1NywxMyArMjU3LDEzIEBAIGJvb2wgU2hhZG93Um9vdDo6Y2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIH0KIH0KIAotUmVmPE5vZGU+
IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZUludGVybmFsKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBDbG9u
aW5nT3BlcmF0aW9uIHR5cGUpCitSZWY8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlSW50ZXJu
YWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9tb2RlICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpOwog
ICAgIEFTU0VSVChtX2lzQ2xvbmFibGUpOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2Ug
Q2xvbmluZ09wZXJhdGlvbjo6U2VsZldpdGhUZW1wbGF0ZUNvbnRlbnQ6Ci0gICAgICAgIHJldHVy
biBjcmVhdGUodHJlZVNjb3BlLmRvY3VtZW50U2NvcGUoKSwgbV9tb2RlLCBtX3Nsb3RBc3NpZ25t
ZW50TW9kZSwKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgbV9tb2RlLCBt
X3Nsb3RBc3NpZ25tZW50TW9kZSwKICAgICAgICAgICAgIG1fZGVsZWdhdGVzRm9jdXMgPyBEZWxl
Z2F0ZXNGb2N1czo6WWVzIDogRGVsZWdhdGVzRm9jdXM6Ok5vLAogICAgICAgICAgICAgQ2xvbmFi
bGU6OlllcywKICAgICAgICAgICAgIG1fc2VyaWFsaXphYmxlID8gU2VyaWFsaXphYmxlOjpZZXMg
OiBTZXJpYWxpemFibGU6Ok5vLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYjEwY2EyYTY5
OWFmLi4xMzIwM2FjNjUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMTA5LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0SW5uZXJIVE1MKHN0ZDo6dmFyaWFudDxSZWZQdHI8VHJ1c3RlZEhUTUw+
LCBTdHJpbmc+JiYpOwogCi0gICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKFRyZWVTY29w
ZSYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJ
bnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogCiAgICAgRWxl
bWVudCogYWN0aXZlRWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwK
aW5kZXggMjAxNjVmZmUyMTcwLi4xMjMxODFiMTI3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5pZGwKQEAgLTQxLDcgKzQxLDYgQEAKICAgICAvLyBGSVhNRTogTW92ZSB0byBEb2N1bWVudE9y
U2hhZG93Um9vdC5pZGwgb25jZSBpdCdzIGFsd2F5cyBlbmFibGVkCiAgICAgW0VuYWJsZWRCeVNl
dHRpbmc9U2NvcGVkQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5RW5hYmxlZCwgTmV3T2JqZWN0LCBJbXBs
ZW1lbnRlZEFzPWNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50
KFtBdG9tU3RyaW5nXSBET01TdHJpbmcgbG9jYWxOYW1lKTsKICAgICBbRW5hYmxlZEJ5U2V0dGlu
Zz1TY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlFbmFibGVkLCBOZXdPYmplY3RdIEVsZW1lbnQg
Y3JlYXRlRWxlbWVudE5TKFtBdG9tU3RyaW5nXSBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0F0
b21TdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGlu
Zz1TY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlFbmFibGVkLCBDRVJlYWN0aW9ucz1OZWVkZWQs
IE5ld09iamVjdF0gTm9kZSBpbXBvcnROb2RlKE5vZGUgbm9kZSwgb3B0aW9uYWwgYm9vbGVhbiBk
ZWVwID0gZmFsc2UpOwogCiAgICAgW0ltcGxlbWVudGVkQXM9cmVnaXN0cnlGb3JCaW5kaW5ncywg
RW5hYmxlZEJ5U2V0dGluZz1TY29wZWRDdXN0b21FbGVtZW50UmVnaXN0cnlFbmFibGVkXSByZWFk
b25seSBhdHRyaWJ1dGUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5PyByZWdpc3RyeTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5jcHAKaW5kZXggNDYzZTQ5NGQ3ZGU5Li41YTFjMDZjNGY5YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5j
cHAKQEAgLTE1NywxMCArMTU3LDkgQEAgU3RyaW5nIFRleHQ6Om5vZGVOYW1lKCkgY29uc3QKICAg
ICByZXR1cm4gIiN0ZXh0Il9zOwogfQogCi1SZWY8Tm9kZT4gVGV4dDo6Y2xvbmVOb2RlSW50ZXJu
YWwoVHJlZVNjb3BlJiB0cmVlU2NvcGUsIENsb25pbmdPcGVyYXRpb24pCitSZWY8Tm9kZT4gVGV4
dDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3Bl
cmF0aW9uKQogewotICAgIFJlZiBkb2N1bWVudCA9IHRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCk7
Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgU3RyaW5nIHsgZGF0YSgpIH0pOworICAgIHJl
dHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogc3Rh
dGljIGJvb2wgaXNTVkdTaGFkb3dUZXh0KGNvbnN0IFRleHQmIHRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRl
eCBmODI3OGIyOWViNGMuLjhhN2M1NjM0MTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC02Nyw3ICs2Nyw3
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoVHJlZVNjb3BlJiwgQ2xv
bmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFs
KERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXREYXRh
QW5kVXBkYXRlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRhLCB1
bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2ZVJhbmdlcykg
ZmluYWw7CiAKICAgICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggZGNlNmFiYzE0ZTBkLi42YjEyYmNlY2M4ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0xNDYsMzEgKzE0Niw2IEBAIHZvaWQgVHJl
ZVNjb3BlOjpzZXRDdXN0b21FbGVtZW50UmVnaXN0cnkoUmVmPEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eT4mJiByZWdpc3RyeSkKICAgICAgICAgbV9jdXN0b21FbGVtZW50UmVnaXN0cnkgPSBXVEZNb3Zl
KHJlZ2lzdHJ5KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBUcmVlU2NvcGU6OmltcG9y
dE5vZGUoTm9kZSYgbm9kZVRvSW1wb3J0LCBib29sIGRlZXApCi17Ci0gICAgc3dpdGNoIChub2Rl
VG9JbXBvcnQubm9kZVR5cGUoKSkgewotICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKLSAgICAgICAgaWYgKG5vZGVUb0ltcG9ydC5pc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIE5vZGU6OkVMRU1FTlRf
Tk9ERToKLSAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICBjYXNlIE5vZGU6OkNEQVRBX1NF
Q1RJT05fTk9ERToKLSAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToK
LSAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIG5vZGVUb0ltcG9y
dC5jbG9uZU5vZGVJbnRlcm5hbCgqdGhpcywgZGVlcCA/IE5vZGU6OkNsb25pbmdPcGVyYXRpb246
OkV2ZXJ5dGhpbmcgOiBOb2RlOjpDbG9uaW5nT3BlcmF0aW9uOjpPbmx5U2VsZik7Ci0KLSAgICBj
YXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOiB7Ci0gICAgICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHVu
Y2hlY2tlZERvd25jYXN0PEF0dHI+KG5vZGVUb0ltcG9ydCk7Ci0gICAgICAgIHJldHVybiBSZWY8
Tm9kZT4geyBBdHRyOjpjcmVhdGUoZG9jdW1lbnRTY29wZSgpLCBhdHRyaWJ1dGUucXVhbGlmaWVk
TmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSkgfTsKLSAgICB9Ci0gICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9OT0RFOiAvLyBDYW4ndCBpbXBvcnQgYSBkb2N1bWVudCBpbnRvIGFub3RoZXIgZG9jdW1l
bnQuCi0gICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6IC8vIEZJWE1FOiBTdXBwb3J0
IGNsb25pbmcgYSBEb2N1bWVudFR5cGUgbm9kZSBwZXIgRE9NNC4KLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiBFeGNlcHRpb24geyBFeGNlcHRpb25Db2RlOjpOb3RTdXBwb3J0ZWRF
cnJvciB9OwotfQotCiBSZWZQdHI8RWxlbWVudD4gVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgaWYgKGVsZW1lbnRJZC5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggMjNkYWJkMjZkZjU4Li5lYTU0ZmIy
NDI1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTgxLDcgKzgxLDYgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gY3JlYXRlRWxlbWVu
dEZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWY8Tm9kZT4+IGltcG9ydE5vZGUoTm9kZSYgbm9kZVRvSW1wb3J0LCBib29sIGRl
ZXApOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGdldEVsZW1lbnRCeUlk
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RWxl
bWVudD4gZ2V0RWxlbWVudEJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggNzZlMTA4ZDc1OGU4Li4xOTJkZGYxOTVhMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJDb21tZW50Lmgi
CiAjaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVJ
dGVyYXRvci5oIgotI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUg
IkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgpAQCAtMTM5OCwxMyArMTM5NywxMyBAQCBTdHJpbmcg
dXJsVG9NYXJrdXAoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB9CiAKIGVu
dW0gY2xhc3MgRG9jdW1lbnRGcmFnbWVudE1vZGUgOiBib29sIHsgTmV3LCBSZXVzZUZvcklubmVy
T3V0ZXJIVE1MIH07Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFeGNlcHRpb25PcjxSZWY8RG9jdW1l
bnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdtZW50Rm9yTWFya3VwKEVsZW1lbnQmIGNvbnRleHRFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgRG9jdW1lbnRGcmFnbWVudE1vZGUgbW9kZSwgT3B0
aW9uU2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+IHBhcnNlckNvbnRlbnRQb2xpY3ksIEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkgPSBudWxscHRyKQorc3RhdGljIEFMV0FZU19JTkxJTkUg
RXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvck1hcmt1
cChFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIERvY3VtZW50
RnJhZ21lbnRNb2RlIG1vZGUsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5PiBwYXJzZXJD
b250ZW50UG9saWN5KQogewogICAgIFJlZiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50Lmhhc1Rh
Z05hbWUodGVtcGxhdGVUYWcpID8gY29udGV4dEVsZW1lbnQuZG9jdW1lbnQoKS5lbnN1cmVUZW1w
bGF0ZURvY3VtZW50KCkgOiBjb250ZXh0RWxlbWVudC5kb2N1bWVudCgpOwogICAgIGF1dG8gZnJh
Z21lbnQgPSBtb2RlID09IERvY3VtZW50RnJhZ21lbnRNb2RlOjpOZXcgPyBEb2N1bWVudEZyYWdt
ZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpIDogZG9jdW1lbnQtPmRvY3VtZW50RnJhZ21lbnRG
b3JJbm5lck91dGVySFRNTCgpOwogICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMo
KSk7CiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IHBhcnNlckNvbnRlbnRQ
b2xpY3kuY29udGFpbnMoUGFyc2VyQ29udGVudFBvbGljeTo6QWx3YXlzUGFyc2VBc0hUTUwpKSB7
Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBjb250ZXh0RWxlbWVudCwgcGFy
c2VyQ29udGVudFBvbGljeSwgcmVnaXN0cnkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1M
KG1hcmt1cCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCkBAIC0xNDE0LDkgKzE0MTMsOSBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdt
ZW50Rm9yTWFya3VwKAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1l
bnQmIGNvbnRleHRFbGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgT3B0aW9uU2V0PFBhcnNl
ckNvbnRlbnRQb2xpY3k+IHBhcnNlckNvbnRlbnRQb2xpY3ksIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eSogcmVnaXN0cnkpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgbWFya3VwLCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVu
dFBvbGljeSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGb3JNYXJrdXAoY29udGV4dEVs
ZW1lbnQsIG1hcmt1cCwgRG9jdW1lbnRGcmFnbWVudE1vZGU6OlJldXNlRm9ySW5uZXJPdXRlckhU
TUwsIHBhcnNlckNvbnRlbnRQb2xpY3ksIHJlZ2lzdHJ5KTsKKyAgICByZXR1cm4gY3JlYXRlRnJh
Z21lbnRGb3JNYXJrdXAoY29udGV4dEVsZW1lbnQsIG1hcmt1cCwgRG9jdW1lbnRGcmFnbWVudE1v
ZGU6OlJldXNlRm9ySW5uZXJPdXRlckhUTUwsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogfQogCiBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdt
ZW50KERvY3VtZW50JiBvdXRwdXREb2MsIFN0cmluZyYmIHNvdXJjZVN0cmluZywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VNSU1FVHlwZSkKQEAgLTE0ODUsNyArMTQ4NCw3IEBAIHN0YXRpYyB2b2lkIHJl
bW92ZUVsZW1lbnRGcm9tRnJhZ21lbnRQcmVzZXJ2aW5nQ2hpbGRyZW4oRG9jdW1lbnRGcmFnbWVu
dCYgZnJhZ21lCiAKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlQ29u
dGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBP
cHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVudFBvbGljeSkKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IGNyZWF0ZUZyYWdtZW50Rm9yTWFya3VwKGVsZW1lbnQsIG1hcmt1cCwg
RG9jdW1lbnRGcmFnbWVudE1vZGU6Ok5ldywgcGFyc2VyQ29udGVudFBvbGljeSwgQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpyZWdpc3RyeUZvckVsZW1lbnQoZWxlbWVudCkpOworICAgIGF1dG8gcmVz
dWx0ID0gY3JlYXRlRnJhZ21lbnRGb3JNYXJrdXAoZWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZy
YWdtZW50TW9kZTo6TmV3LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggNmEzNzBjZmZhZmI0Li5jM2NlN2E1YzI1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIENvbnRhaW5lck5vZGU7Ci1j
bGFzcyBDdXN0b21FbGVtZW50UmVnaXN0cnk7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwpAQCAtODMsNyArODIsNyBAQCBwcml2YXRlOgog
CiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9t
VGV4dChjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKIFdF
QkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gPSB7IFBhcnNlckNvbnRlbnRQb2xpY3k6
OkFsbG93U2NyaXB0aW5nQ29udGVudCB9KTsKLUV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdt
ZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiBtYXJrdXAsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5PiwgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Kik7CitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBP
cHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4pOwogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYsIFN0cmluZyYm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk7CiBSZWY8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSk7CiBFeGNlcHRpb25PcjxS
ZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChFbGVtZW50Jiwg
Y29uc3QgU3RyaW5nJiBtYXJrdXAsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5Pik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRBc3NvY2lhdGVkRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50QXNzb2NpYXRlZEVsZW1lbnQuaApp
bmRleCA4YzMwM2M1NTM1ODUuLmFmNWNmNGVhODAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9BdHRhY2htZW50QXNzb2NpYXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F0dGFjaG1lbnRBc3NvY2lhdGVkRWxlbWVudC5oCkBAIC0zNSw3ICszNSw2IEBAIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVu
dDsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgVHJlZVNjb3BlOwogCiBlbnVtIGNsYXNzIEF0
dGFjaG1lbnRBc3NvY2lhdGVkRWxlbWVudFR5cGUgOiB1aW50OF90IHsKICAgICBOb25lLApAQCAt
NjksNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZBdHRhY2htZW50QXNz
b2NpYXRlZEVsZW1lbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmQXR0YWNo
bWVudEFzc29jaWF0ZWRFbGVtZW50KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBSZWY8RWxl
bWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihUcmVlU2NvcGUm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weU5v
bkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgPSAwOwogCiAg
ICAgdmlydHVhbCBBdHRhY2htZW50QXNzb2NpYXRlZEVsZW1lbnQqIGFzQXR0YWNobWVudEFzc29j
aWF0ZWRFbGVtZW50KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKaW5kZXggMGMwY2RiOTI1N2ExLi4yOTg2YTFiOThmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTA3MSwxMiArMTA3MSwxMSBAQCB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmludmFsaWRhdGVBdHRyaWJ1dGVNYXBwaW5nKCkKICAgICBpbnZhbGlkYXRl
U3R5bGUoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oVHJlZVNjb3BlJiB0cmVlU2NvcGUpCitSZWY8
RWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpCiB7Ci0gICAgUmVmIGRvY3VtZW50
ID0gdHJlZVNjb3BlLmRvY3VtZW50U2NvcGUoKTsKLSAgICBhdXRvIGNsb25lID0gY3JlYXRlKGRv
Y3VtZW50KTsKKyAgICBhdXRvIGNsb25lID0gY3JlYXRlKHRhcmdldERvY3VtZW50KTsKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGNsb25lQXR0YWNobWVudEFzc29jaWF0ZWRF
bGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihjbG9uZSwgZG9jdW1lbnQpOworICAg
IGNsb25lQXR0YWNobWVudEFzc29jaWF0ZWRFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbihjbG9uZSwgdGFyZ2V0RG9jdW1lbnQpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNsb25lOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCAwYzA3MzQ1Y2IzMDgu
LjU0NjhiMGQwYmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAg
LTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUF0dHJpYnV0ZU1h
cHBpbmcoKTsKICAgICB2b2lkIGNvbGxlY3RFeHRyYVN0eWxlRm9yUHJlc2VudGF0aW9uYWxIaW50
cyhNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZWY8RWxlbWVudD4g
Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihUcmVlU2NvcGUmKSBmaW5h
bDsKKyAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgogICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZmM3MTZlMjNm
ZjBiLi41MDM0NzBjODc5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtMTI4LDkgKzEyOCw5IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9y
bSwgY3JlYXRlZEJ5UGFyc2VyID8gQ3JlYXRpb25UeXBlOjpCeVBhcnNlciA6IENyZWF0aW9uVHlw
ZTo6Tm9ybWFsKSk7CiB9CiAKLVJlZjxFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjbG9uZUVs
ZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKFRyZWVTY29wZSYgdHJlZVNjb3BlKQor
UmVmPEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnUU5hbWUoKSwgdHJlZVNjb3BlLmRvY3Vt
ZW50U2NvcGUoKSwgbnVsbHB0ciwgQ3JlYXRpb25UeXBlOjpCeUNsb25pbmcpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ1FOYW1lKCksIHRhcmdldERvY3Vt
ZW50LCBudWxscHRyLCBDcmVhdGlvblR5cGU6OkJ5Q2xvbmluZykpOwogfQogCiBIVE1MSW1hZ2VM
b2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMDY4YzMzODk4OWUxLi5jMTcyYWM2NzUwZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zNzMsNyArMzczLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFs
OwogCi0gICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hp
bGRyZW4oVHJlZVNjb3BlJikgb3ZlcnJpZGU7CisgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKIAogICAg
IGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyA6IHVpbnQ4X3QgeyBVbmluaXRpYWxpemVkLCBPbiwg
T2ZmIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGVmYXVsdFNpemUgPSAyMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYzM0OGIyOTY3ZGU1Li42
ZDgzZWQ2ODJjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
CkBAIC0yODcsOSArMjg3LDkgQEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6aXNTY3JpcHRQcmV2
ZW50ZWRCeUF0dHJpYnV0ZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmPEVs
ZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKFRyZWVTY29wZSYgdHJlZVNjb3BlKQorUmVmPEVsZW1lbnQ+IEhUTUxTY3JpcHRF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50
JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MU2NyaXB0
RWxlbWVudCh0YWdRTmFtZSgpLCB0cmVlU2NvcGUuZG9jdW1lbnRTY29wZSgpLCBmYWxzZSwgYWxy
ZWFkeVN0YXJ0ZWQoKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTY3JpcHRFbGVt
ZW50KHRhZ1FOYW1lKCksIHRhcmdldERvY3VtZW50LCBmYWxzZSwgYWxyZWFkeVN0YXJ0ZWQoKSkp
OwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRSZWZlcnJlclBvbGljeUZvckJpbmRp
bmdzKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5oCmluZGV4IGI5MmI1MGMyYmQwNC4uY2U1OTE3ZmM4ZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNTY3JpcHRQcmV2ZW50ZWRCeUF0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbDsK
IAotICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKFRyZWVTY29wZSYpIGZpbmFsOworICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50JikgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX2Jsb2NraW5nTGlzdDsKICAgICBib29sIG1faXNSZW5k
ZXJCbG9ja2luZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1l
bnQuY3BwCmluZGV4IGJiMWM3Yzg5MDVlNy4uMzNlN2FiODZlYTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcApAQCAtMjI2LDEyICsyMjYsMTEgQEAgdm9pZCBI
VE1MU291cmNlRWxlbWVudDo6YWRkQ2FuZGlkYXRlU3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0
PFVSTD4mIHVybHMpIGNvbnMKICAgICBnZXRVUkxzRnJvbVNyY3NldEF0dHJpYnV0ZSgqdGhpcywg
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNzZXRBdHRyKSwgdXJscyk7CiB9CiAK
LVJlZjxFbGVtZW50PiBIVE1MU291cmNlRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbihUcmVlU2NvcGUmIHRyZWVTY29wZSkKK1JlZjxFbGVtZW50PiBIVE1M
U291cmNlRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpCiB7Ci0gICAgUmVmIGRvY3VtZW50ID0gdHJlZVNjb3Bl
LmRvY3VtZW50U2NvcGUoKTsKLSAgICBSZWYgY2xvbmUgPSBjcmVhdGUoZG9jdW1lbnQpOworICAg
IGF1dG8gY2xvbmUgPSBjcmVhdGUodGFyZ2V0RG9jdW1lbnQpOwogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCi0gICAgY2xvbmVBdHRhY2htZW50QXNzb2NpYXRlZEVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKGNsb25lLCBkb2N1bWVudCk7CisgICAgY2xvbmVBdHRhY2ht
ZW50QXNzb2NpYXRlZEVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKGNsb25lLCB0
YXJnZXREb2N1bWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gY2xvbmU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKaW5kZXggYTk3YzU0MDRhZjhhLi5jMTIyZGE5ZmJk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKQEAgLTgxLDcgKzgx
LDcgQEAgcHJpdmF0ZToKICAgICBBdHRhY2htZW50QXNzb2NpYXRlZEVsZW1lbnRUeXBlIGF0dGFj
aG1lbnRBc3NvY2lhdGVkRWxlbWVudFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdHRhY2ht
ZW50QXNzb2NpYXRlZEVsZW1lbnRUeXBlOjpTb3VyY2U7IH0KICNlbmRpZgogCi0gICAgUmVmPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oVHJlZVNjb3Bl
JikgZmluYWw7CisgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KSBmaW5hbDsKICAgICB2b2lkIGNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFs
OwogCiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJp
YnV0ZU1vZGlmaWNhdGlvblJlYXNvbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGVtcGxhdGVFbGVtZW50LmNwcAppbmRleCBmYTAzMzkyMTM4MzAuLjkzOTI4YjU2MTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCkBAIC0xMTAsMjQg
KzExMCwyMSBAQCB2b2lkIEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OnNldERlY2xhcmF0aXZlU2hhZG93
Um9vdChTaGFkb3dSb290JiBzaGFkb3dSb290KQogICAgIG1fZGVjbGFyYXRpdmVTaGFkb3dSb290
ID0gc2hhZG93Um9vdDsKIH0KIAotUmVmPE5vZGU+IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNsb25l
Tm9kZUludGVybmFsKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUp
CitSZWY8Tm9kZT4gSFRNTFRlbXBsYXRlRWxlbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1l
bnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCiB7CiAgICAgUmVmUHRy
PE5vZGU+IGNsb25lOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2xvbmluZ09wZXJh
dGlvbjo6T25seVNlbGY6Ci0gICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRy
ZW4odHJlZVNjb3BlKTsKKyAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJl
bih0YXJnZXREb2N1bWVudCk7CiAgICAgY2FzZSBDbG9uaW5nT3BlcmF0aW9uOjpTZWxmV2l0aFRl
bXBsYXRlQ29udGVudDoKLSAgICAgICAgY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRy
ZW4odHJlZVNjb3BlKTsKKyAgICAgICAgY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRy
ZW4odGFyZ2V0RG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENsb25pbmdPcGVy
YXRpb246OkV2ZXJ5dGhpbmc6Ci0gICAgICAgIGNsb25lID0gY2xvbmVFbGVtZW50V2l0aENoaWxk
cmVuKHRyZWVTY29wZSk7CisgICAgICAgIGNsb25lID0gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVu
KHRhcmdldERvY3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmIChtX2NvbnRl
bnQpIHsKLSAgICAgICAgYXV0byYgdGVtcGxhdGVFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRlbXBs
YXRlRWxlbWVudD4oKmNsb25lKTsKLSAgICAgICAgUmVmIGZyYWdtZW50ID0gdGVtcGxhdGVFbGVt
ZW50LmNvbnRlbnQoKTsKLSAgICAgICAgY29udGVudCgpLmNsb25lQ2hpbGROb2RlcyhmcmFnbWVu
dC0+ZG9jdW1lbnQoKSwgZnJhZ21lbnQpOwotICAgIH0KKyAgICBpZiAobV9jb250ZW50KQorICAg
ICAgICBjb250ZW50KCkuY2xvbmVDaGlsZE5vZGVzKGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1l
bnQ+KGNsb25lLmdldCgpKS0+Y29udGVudCgpKTsKICAgICByZXR1cm4gY2xvbmUucmVsZWFzZU5v
bk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxh
dGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaApp
bmRleCAwZDM0ZTRjZDU3Y2QuLjRjZmE4MDU0YjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGVtcGxhdGVFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBIVE1MVGVtcGxhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKFRyZWVTY29wZSYsIENsb25pbmdP
cGVyYXRpb24pIGZpbmFsOworICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVu
dCYsIENsb25pbmdPcGVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwog
CiAgICAgbXV0YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gbV9j
b250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwCmluZGV4IGU4MzAxZWI0ZjlmNC4uMzlmMjU5Y2I4MTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBA
IC0yNjcsMTEgKzI2NywxMCBAQCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6SFRNTENvbnN0cnVjdGlv
blNpdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25TZXQ8UGFyc2VyQwogewogfQogCi1IVE1M
Q29uc3RydWN0aW9uU2l0ZTo6SFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1lbnRGcmFnbWVudCYg
ZnJhZ21lbnQsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5PiBwYXJzZXJDb250ZW50UG9s
aWN5LCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoLCBDdXN0b21FbGVtZW50UmVnaXN0cnkq
IHJlZ2lzdHJ5KQorSFRNTENvbnN0cnVjdGlvblNpdGU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlKERv
Y3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4g
cGFyc2VyQ29udGVudFBvbGljeSwgdW5zaWduZWQgbWF4aW11bURPTVRyZWVEZXB0aCkKICAgICA6
IG1fZG9jdW1lbnQoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fYXR0YWNobWVudFJvb3Qo
ZnJhZ21lbnQpCiAgICAgLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kocGFyc2VyQ29udGVudFBvbGlj
eSkKLSAgICAsIG1fcmVnaXN0cnkocmVnaXN0cnkpCiAgICAgLCBtX2lzUGFyc2luZ0ZyYWdtZW50
KHRydWUpCiAgICAgLCBtX3JlZGlyZWN0QXR0YWNoVG9Gb3N0ZXJQYXJlbnQoZmFsc2UpCiAgICAg
LCBtX21heGltdW1ET01UcmVlRGVwdGgobWF4aW11bURPTVRyZWVEZXB0aCkKQEAgLTgxMCwyMyAr
ODA5LDE5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEhUTUxFbGVtZW50PiwgUmVmUHRyPEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZT4sIFJlZlB0cjxDdXN0b21FCiAgICAgYm9vbCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPSAhb3duZXJEb2N1bWVudC0+ZnJhbWUoKTsKICAgICBSZWZQdHIgZWxlbWVudCA9
IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KHRva2VuLnRhZ05hbWUoKSwg
b3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwg
dHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewotICAgICAgICBSZWZQdHI8Q3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5PiByZWdpc3RyeSA9IG1fb3BlbkVsZW1lbnRzLnN0YWNrRGVwdGgo
KSA+IDEgPyBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnJlZ2lzdHJ5Rm9yTm9kZU9yVHJlZVNjb3Bl
KGN1cnJlbnROb2RlKCksIHRyZWVTY29wZSkgOiBtX3JlZ2lzdHJ5OworICAgICAgICBSZWZQdHI8
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiByZWdpc3RyeSA9IHRyZWVTY29wZS0+Y3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KCk7CiAgICAgICAgIGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSByZWdpc3RyeSA/
IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKHRva2VuLm5hbWUoKSkgOiBudWxscHRyOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoZWxlbWVudEludGVyZmFjZSkpIHsKICAgICAgICAgICAgIGlmICghbV9p
c1BhcnNpbmdGcmFnbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm4geyBudWxscHRyLCBlbGVt
ZW50SW50ZXJmYWNlLCBXVEZNb3ZlKHJlZ2lzdHJ5KSB9OwogICAgICAgICAgICAgQVNTRVJUKHF1
YWxpZmllZE5hbWVGb3JIVE1MVGFnKHRva2VuKSA9PSBlbGVtZW50SW50ZXJmYWNlLT5uYW1lKCkp
OwogICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRJbnRlcmZhY2UtPmNyZWF0ZUVsZW1lbnQo
b3duZXJEb2N1bWVudCk7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVnaXN0cnktPmlzU2Nv
cGVkKCkpKQotICAgICAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6YWRkVG9TY29w
ZWRDdXN0b21FbGVtZW50UmVnaXN0cnlNYXAoKmVsZW1lbnQsICpyZWdpc3RyeSk7CiAgICAgICAg
ICAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCk7CiAgICAg
ICAgICAgICBlbGVtZW50LT5lbnF1ZXVlVG9VcGdyYWRlKCplbGVtZW50SW50ZXJmYWNlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcXVhbGlmaWVkTmFtZSA9IHF1YWxpZmll
ZE5hbWVGb3JIVE1MVGFnKHRva2VuKTsKICAgICAgICAgICAgIGlmIChEb2N1bWVudDo6dmFsaWRh
dGVDdXN0b21FbGVtZW50TmFtZSh0b2tlbi5uYW1lKCkpID09IEN1c3RvbUVsZW1lbnROYW1lVmFs
aWRhdGlvblN0YXR1czo6VmFsaWQpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gSFRNTE1h
eWJlRm9ybUFzc29jaWF0ZWRDdXN0b21FbGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgb3du
ZXJEb2N1bWVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHJlZ2lzdHJ5ICYmIHJl
Z2lzdHJ5LT5pc1Njb3BlZCgpKSkKLSAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjphZGRUb1Njb3BlZEN1c3RvbUVsZW1lbnRSZWdpc3RyeU1hcCgqZWxlbWVudCwgKnJl
Z2lzdHJ5KTsKICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdy
YWRlQ2FuZGlkYXRlKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgb3duZXJEb2N1
bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuaAppbmRleCAyMzM1OWQ5OTNjZTkuLjczYTRjZGNiZWQ2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC0xMDAsMTkg
KzEwMCwxOCBAQCBlbnVtIFdoaXRlc3BhY2VNb2RlIHsKIH07CiAKIGNsYXNzIEF0b21IVE1MVG9r
ZW47Ci1jbGFzcyBDdXN0b21FbGVtZW50UmVnaXN0cnk7CitzdHJ1Y3QgQ3VzdG9tRWxlbWVudENv
bnN0cnVjdGlvbkRhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBI
VE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBIVE1MVGVtcGxhdGVFbGVtZW50OwogY2xhc3MgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOwotc3RydWN0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRh
OwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwogcHVibGljOgogICAgIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlKERvY3VtZW50JiwgT3B0aW9uU2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+LCB1bnNpZ25lZCBt
YXhpbXVtRE9NVHJlZURlcHRoKTsKLSAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZShEb2N1bWVudEZy
YWdtZW50JiwgT3B0aW9uU2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+LCB1bnNpZ25lZCBtYXhpbXVt
RE9NVHJlZURlcHRoLCBDdXN0b21FbGVtZW50UmVnaXN0cnkqKTsKKyAgICBIVE1MQ29uc3RydWN0
aW9uU2l0ZShEb2N1bWVudEZyYWdtZW50JiwgT3B0aW9uU2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+
LCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoKTsKICAgICB+SFRNTENvbnN0cnVjdGlvblNp
dGUoKTsKIAogICAgIHZvaWQgZXhlY3V0ZVF1ZXVlZFRhc2tzKCk7CkBAIC0yNDMsNyArMjQyLDYg
QEAgcHJpdmF0ZToKICAgICBUYXNrUXVldWUgbV90YXNrUXVldWU7CiAKICAgICBPcHRpb25TZXQ8
UGFyc2VyQ29udGVudFBvbGljeT4gbV9wYXJzZXJDb250ZW50UG9saWN5OwotICAgIFJlZlB0cjxD
dXN0b21FbGVtZW50UmVnaXN0cnk+IG1fcmVnaXN0cnk7CiAgICAgYm9vbCBtX2lzUGFyc2luZ0Zy
YWdtZW50OwogCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWludGFi
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDA3NTFkMWI1MDI0Mi4uZGEzY2I2YzYwNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTc1LDExICs3NSwx
MSBAQCBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShI
VE1MRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpbwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhU
TUxEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgcG9saWN5KSk7CiB9CiAKLWlubGluZSBIVE1MRG9j
dW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5
PiByYXdQb2xpY3ksIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkpCitpbmxpbmUgSFRN
TERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJh
Z21lbnQsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBv
bGljeT4gcmF3UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50
LmRvY3VtZW50KCksIHJhd1BvbGljeSkKICAgICAsIG1fb3B0aW9ucyhmcmFnbWVudC5kb2N1bWVu
dCgpKQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV90cmVlQnVpbGRlciht
YWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVu
dCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMsIHJlZ2lzdHJ5KSkKKyAgICAsIG1f
dHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwg
Y29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAs
IG1fc2hvdWxkRW1pdFRyYWNlUG9pbnRzKGZhbHNlKSAvLyBBdm9pZCBlbWl0dGluZyB0cmFjZSBw
b2ludHMgd2hlbiBwYXJzaW5nIGZyYWdtZW50cyBsaWtlIG91dGVySFRNTC4KIHsKICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5n
LWh0bWwtZnJhZ21lbnRzCkBAIC04Nyw5ICs4Nyw5IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJz
ZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVu
CiAgICAgICAgIG1fdG9rZW5pemVyLnVwZGF0ZVN0YXRlRm9yKGNvbnRleHRFbGVtZW50LnRhZ1FO
YW1lKCkubG9jYWxOYW1lKCkpOwogfQogCi1pbmxpbmUgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4g
SFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVs
ZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFy
c2VyQ29udGVudFBvbGljeSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiByZWdpc3RyeSkKK2lubGlu
ZSBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNl
dDxQYXJzZXJDb250ZW50UG9saWN5PiBwYXJzZXJDb250ZW50UG9saWN5KQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVudFBhcnNlcihmcmFnbWVudCwgY29udGV4dEVsZW1l
bnQsIHBhcnNlckNvbnRlbnRQb2xpY3ksIHJlZ2lzdHJ5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSFRNTERvY3VtZW50UGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2Vy
Q29udGVudFBvbGljeSkpOwogfQogCiBIVE1MRG9jdW1lbnRQYXJzZXI6On5IVE1MRG9jdW1lbnRQ
YXJzZXIoKQpAQCAtNjIyLDkgKzYyMiw5IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiAgICAgICAgIHJlc3VtZVBhcnNpbmdB
ZnRlclNjcmlwdEV4ZWN1dGlvbigpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgc291cmNlLCBEb2N1bWVudEZyYWdtZW50
JiBmcmFnbWVudCwgRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNldDxQYXJzZXJDb250
ZW50UG9saWN5PiBwYXJzZXJDb250ZW50UG9saWN5LCBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJl
Z2lzdHJ5KQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQm
IGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29u
dGVudFBvbGljeSkKIHsKLSAgICBhdXRvIHBhcnNlciA9IGNyZWF0ZShmcmFnbWVudCwgY29udGV4
dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3ksIHJlZ2lzdHJ5KTsKKyAgICBhdXRvIHBhcnNl
ciA9IGNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kp
OwogICAgIHBhcnNlci0+aW5zZXJ0KHNvdXJjZSk7IC8vIFVzZSBpbnNlcnQoKSBzbyB0aGF0IHRo
ZSBwYXJzZXIgd2lsbCBub3QgeWllbGQuCiAgICAgcGFyc2VyLT5maW5pc2goKTsKICAgICBBU1NF
UlQoIXBhcnNlci0+cHJvY2Vzc2luZ0RhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDJkNzMzMDZiMmJkYS4uYmU2MDc4MGJl
ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRDaGVja2Vk
UHRyQ291bnQoKSBjb25zdCBmaW5hbCB7IENhbk1ha2VDaGVja2VkUHRyOjppbmNyZW1lbnRDaGVj
a2VkUHRyQ291bnQoKTsgfQogICAgIHZvaWQgZGVjcmVtZW50Q2hlY2tlZFB0ckNvdW50KCkgY29u
c3QgZmluYWwgeyBDYW5NYWtlQ2hlY2tlZFB0cjo6ZGVjcmVtZW50Q2hlY2tlZFB0ckNvdW50KCk7
IH0KIAotICAgIHN0YXRpYyB2b2lkIHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcm
LCBEb2N1bWVudEZyYWdtZW50JiwgRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNldDxQ
YXJzZXJDb250ZW50UG9saWN5PiA9IHsgUGFyc2VyQ29udGVudFBvbGljeTo6QWxsb3dTY3JpcHRp
bmdDb250ZW50IH0sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFn
bWVudCYsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBv
bGljeT4gPSB7IFBhcnNlckNvbnRlbnRQb2xpY3k6OkFsbG93U2NyaXB0aW5nQ29udGVudCB9KTsK
IAogICAgIC8vIEZvciBIVE1MUGFyc2VyU2NoZWR1bGVyLgogICAgIHZvaWQgcmVzdW1lUGFyc2lu
Z0FmdGVyWWllbGQoKTsKQEAgLTgwLDggKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIEhUTUxUcmVl
QnVpbGRlciYgdHJlZUJ1aWxkZXIoKTsKIAogcHJpdmF0ZToKLSAgICBIVE1MRG9jdW1lbnRQYXJz
ZXIoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8
UGFyc2VyQ29udGVudFBvbGljeT4sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSopOwotICAgIHN0YXRp
YyBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1l
bnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4sIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSogPSBudWxscHRyKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCYsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8UGFyc2Vy
Q29udGVudFBvbGljeT4pOworICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBjcmVh
dGUoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8
UGFyc2VyQ29udGVudFBvbGljeT4pOwogCiAgICAgLy8gRG9jdW1lbnRQYXJzZXIKICAgICB2b2lk
IGRldGFjaCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKaW5kZXggOWY2YWIzZmEwZTQ5Li4yMWU0MDVjNGZhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjY4LDExICsy
NjgsMTEgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFy
c2VyJiBwYXJzZXIsIEhUTUxEb2N1bWVudCYgZG9jdW0KICNlbmRpZgogfQogCi1IVE1MVHJlZUJ1
aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImIHBhcnNlciwgRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRpb25TZXQ8
UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVudFBvbGljeSwgY29uc3QgSFRNTFBhcnNl
ck9wdGlvbnMmIG9wdGlvbnMsIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkpCitIVE1M
VHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImIHBhcnNlciwg
RG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBPcHRp
b25TZXQ8UGFyc2VyQ29udGVudFBvbGljeT4gcGFyc2VyQ29udGVudFBvbGljeSwgY29uc3QgSFRN
TFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX3BhcnNlcihwYXJzZXIpCiAgICAgLCBt
X29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCkKLSAgICAsIG1fdHJlZShmcmFnbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSwg
b3B0aW9ucy5tYXhpbXVtRE9NVHJlZURlcHRoLCByZWdpc3RyeSkKKyAgICAsIG1fdHJlZShmcmFn
bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSwgb3B0aW9ucy5tYXhpbXVtRE9NVHJlZURlcHRoKQog
ICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydFBvc2l0aW9uKHVuaW5pdGlhbGl6ZWRQb3NpdGlv
blZhbHVlMSgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IGI5ZWE0Y2M3NzRlZi4uZTJl
ZTM1OWE3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIFdURl9N
QUtFX1RaT05FX0FMTE9DQVRFRChIVE1MVHJlZUJ1aWxkZXIpOwogcHVibGljOgogICAgIEhUTUxU
cmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImLCBIVE1MRG9jdW1lbnQmLCBPcHRpb25TZXQ8
UGFyc2VyQ29udGVudFBvbGljeT4sIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJik7Ci0gICAgSFRN
TFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYsIERvY3VtZW50RnJhZ21lbnQmLCBFbGVt
ZW50JiBjb250ZXh0RWxlbWVudCwgT3B0aW9uU2V0PFBhcnNlckNvbnRlbnRQb2xpY3k+LCBjb25z
dCBIVE1MUGFyc2VyT3B0aW9ucyYsIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSopOworICAgIEhUTUxU
cmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXImLCBEb2N1bWVudEZyYWdtZW50JiwgRWxlbWVu
dCYgY29udGV4dEVsZW1lbnQsIE9wdGlvblNldDxQYXJzZXJDb250ZW50UG9saWN5PiwgY29uc3Qg
SFRNTFBhcnNlck9wdGlvbnMmKTsKICAgICB2b2lkIHNldFNob3VsZFNraXBMZWFkaW5nTmV3bGlu
ZShib29sKTsKIAogICAgIH5IVE1MVHJlZUJ1aWxkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDc5ODA2OWZiMDU1Yi4u
ZWM3MGFkNmNiY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAKQEAgLTU4NCw5ICs1ODQsOSBAQCBzdGQ6Om9wdGlvbmFsPFN0eWxl
OjpSZXNvbHZlZFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdAogICAgIHJldHVybiBlbGVtZW50U3R5bGU7CiB9CiAKLVJlZjxFbGVtZW50PiBTbGlkZXJU
aHVtYkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oVHJl
ZVNjb3BlJiB0cmVlU2NvcGUpCitSZWY8RWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjbG9u
ZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50JiB0YXJnZXREb2N1
bWVudCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHRyZWVTY29wZS5kb2N1bWVudFNjb3BlKCkpOwor
ICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaAppbmRleCA2NTUyYzlkZjQ0NmEuLmNlODhmYWZiZWFkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTbGlkZXJUaHVtYkVsZW1lbnQoRG9j
dW1lbnQmKTsKICAgICBib29sIGlzU2xpZGVyVGh1bWJFbGVtZW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4oVHJlZVNjb3BlJikgZmluYWw7CisgICAgUmVmPEVsZW1lbnQ+IGNs
b25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBmaW5hbDsK
ICAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
bWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBmOTgyN2IwZmZiNmMuLjdiYmJm
YzIxOThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApA
QCAtMTkyLDcgKzE5Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2tDdWU+PiBUZXh0VHJh
Y2tDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGRvdWJsZSBzCiAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKICAgICB9Ci0gICAgY3VlRnJhZ21lbnQuY2xvbmVDaGlsZE5vZGVzKGRvY3Vt
ZW50LCBmcmFnbWVudCk7CisgICAgY3VlRnJhZ21lbnQuY2xvbmVDaGlsZE5vZGVzKGZyYWdtZW50
KTsKIAogICAgIE9wdGlvblNldDxSZXF1aXJlZE5vZGVzPiBub2RlVHlwZXMgPSB7IH07CiAgICAg
Zm9yIChOb2RlKiBub2RlID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpIHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVh
dGUoKmRvY3VtZW50KTsKLSAgICBtX2N1ZU5vZGUtPmNsb25lQ2hpbGROb2RlcygqZG9jdW1lbnQs
IGNsb25lZEZyYWdtZW50KTsKKyAgICBtX2N1ZU5vZGUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRG
cmFnbWVudCk7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjbG9uZWRGcmFnbWVudC0+Zmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgcmVtb3Zl
VXNlckFnZW50UGFydEF0dHJpYnV0ZXMoKm5vZGUpOwpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQg
VGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxheVRyZWUoKQogCiAgICAgbV9kaXNwbGF5VHJlZS0+
cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICBhdXRvIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFn
bWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7Ci0gICAgbV9jdWVOb2RlLT5jbG9uZUNoaWxkTm9kZXMo
KmRvY3VtZW50LCBjbG9uZWRGcmFnbWVudCk7CisgICAgbV9jdWVOb2RlLT5jbG9uZUNoaWxkTm9k
ZXMoY2xvbmVkRnJhZ21lbnQpOwogICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKGNsb25l
ZEZyYWdtZW50KTsKIAogICAgIGlmIChtX2ZvbnRTaXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAKaW5kZXggYjhhMTk1OTJjODA5Li5mMzY0YmYxMWI4MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTU0MCw3ICs1NDAsNyBAQCBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gVlRUQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCkKICAgICAvLyBUaGUg
Y2xvbmVkIGZyYWdtZW50IGlzIG5ldmVyIGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28gaXQn
cyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBoZXJlLgogICAgIFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKGNsb25lZEZyYWdtZW50KTsKIAotICAg
IG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcygqZG9jdW1lbnQsIGNsb25lZEZyYWdt
ZW50KTsKKyAgICBtX3dlYlZUVE5vZGVUcmVlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21l
bnQpOwogICAgIHJldHVybiBjbG9uZWRGcmFnbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggM2YxZDZiMzZlMzQwLi41MTEwMjg4MjY1
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAt
ODQsMTAgKzg0LDkgQEAgUmVmPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShXZWJWVFRO
b2RlVHlwZSBub2RlVHlwZSwgQXRvbVN0cmluZyBsYW5ndWFnZSwKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJWVFRFbGVtZW50KG5vZGVUeXBlLCBsYW5ndWFnZSwgZG9jdW1lbnQpKTsKIH0K
IAotUmVmPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4oVHJlZVNjb3BlJiB0cmVlU2NvcGUpCitSZWY8RWxlbWVudD4gV2ViVlRU
RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVu
dCYgdGFyZ2V0RG9jdW1lbnQpCiB7Ci0gICAgUmVmIGRvY3VtZW50ID0gdHJlZVNjb3BlLmRvY3Vt
ZW50U2NvcGUoKTsKLSAgICByZXR1cm4gY3JlYXRlKG1fd2ViVlRUTm9kZVR5cGUsIG1fbGFuZ3Vh
Z2UsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gY3JlYXRlKG1fd2ViVlRUTm9kZVR5cGUsIG1fbGFu
Z3VhZ2UsIHRhcmdldERvY3VtZW50KTsKIH0KIAogUmVmPEhUTUxFbGVtZW50PiBXZWJWVFRFbGVt
ZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCA0MzBjZTdlOGZiNWMu
LjYxNjdkMWY1MTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBlLCBBdG9tU3RyaW5nIGxhbmd1YWdlLCBEb2N1bWVudCYp
OwogICAgIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3Vt
ZW50Jik7CiAKLSAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihUcmVlU2NvcGUmKTsKKyAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpOwogCiAgICAgdm9pZCBzZXRXZWJW
VFROb2RlVHlwZShXZWJWVFROb2RlVHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUgPSB0eXBl
OyB9CiAgICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3dlYlZUVE5vZGVUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAK
aW5kZXggZDQ4OWUzMDExMWViLi40MDcwOTU0YzVmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29u
c3QKIAogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZigpKSk7CiB9Ci1SZWY8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50
V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihUcmVlU2NvcGUmIHRyZWVTY29wZSkKK1JlZjxF
bGVtZW50PiBTVkdTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIHRyZWVTY29wZS5kb2N1bWVudFNj
b3BlKCksIGZhbHNlLCBhbHJlYWR5U3RhcnRlZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCB0YXJnZXREb2N1bWVudCwgZmFsc2UsIGFs
cmVhZHlTdGFydGVkKCkpKTsKIH0KIAogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggOWU4YWVj
ZGZhN2E3Li5hNDRkNWVlY2EwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGF0dHJpYnV0ZS5u
YW1lKCkgPT0gQXRvbVN0cmluZyB7IHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgfTsgfQogICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBm
aW5hbDsKIAotICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKFRyZWVTY29wZSYpIGZpbmFsOworICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1l
bnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50JikgZmluYWw7CiAgICAgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMGI2NWRiNTM2N2M1
Li4zZDgzODU4M2RhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTQ5
OSw3ICs0OTksNyBAQCBzdGF0aWMgdm9pZCBjbG9uZURhdGFBbmRDaGlsZHJlbihTVkdFbGVtZW50
JiByZXBsYWNlbWVudENsb25lLCBTVkdFbGVtZW50JiBvcmlnaQogICAgIEFTU0VSVCghcmVwbGFj
ZW1lbnRDbG9uZS5wYXJlbnROb2RlKCkpOwogCiAgICAgcmVwbGFjZW1lbnRDbG9uZS5jbG9uZURh
dGFGcm9tRWxlbWVudChvcmlnaW5hbENsb25lKTsKLSAgICBvcmlnaW5hbENsb25lLmNsb25lQ2hp
bGROb2RlcyhyZXBsYWNlbWVudENsb25lLnRyZWVTY29wZSgpLCByZXBsYWNlbWVudENsb25lKTsK
KyAgICBvcmlnaW5hbENsb25lLmNsb25lQ2hpbGROb2RlcyhyZXBsYWNlbWVudENsb25lKTsKICAg
ICBhc3NvY2lhdGVSZXBsYWNlbWVudENsb25lc1dpdGhPcmlnaW5hbHMocmVwbGFjZW1lbnRDbG9u
ZSwgb3JpZ2luYWxDbG9uZSk7CiAgICAgcmVtb3ZlRGlzYWxsb3dlZEVsZW1lbnRzRnJvbVN1YnRy
ZWUocmVwbGFjZW1lbnRDbG9uZSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9zY29wZWQtcmVnaXN0cnkv
U2hhZG93Um9vdC1pbXBvcnROb2RlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9zY29wZWQt
cmVnaXN0cnkvU2hhZG93Um9vdC1pbXBvcnROb2RlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMmUwNWEyY2U2My4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVs
ZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFkb3dSb290LWltcG9ydE5vZGUudGVudGF0aXZlLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotCi1QQVNTIFNoYWRvd1Jv
b3QuaW1wb3J0Tm9kZTogYW4gdXBncmFkZSBjYW5kaWRhdGUgZnJvbSBkb2N1bWVudAotUEFTUyBT
aGFkb3dSb290LmltcG9ydE5vZGU6IGEgY3VzdG9tIGVsZW1lbnQgZnJvbSBhbm90aGVyIHNoYWRv
dyB0cmVlCi1QQVNTIFNoYWRvd1Jvb3QuaW1wb3J0Tm9kZTogYSB0ZW1wbGF0ZSBjb250ZW50IGZy
b20gZG9jdW1lbnQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3Qt
aW1wb3J0Tm9kZS50ZW50YXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFkb3dSb290
LWltcG9ydE5vZGUudGVudGF0aXZlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRjNWVmMjRiZDgwMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFk
b3dSb290LWltcG9ydE5vZGUudGVudGF0aXZlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+VGVzdHMgU2hh
ZG93Um9vdC5pbXBvcnROb2RlIEFQSXMgd29yayB3aXRoIHNjb3BlZCBjdXN0b20gZWxlbWVudCBy
ZWdpc3RyaWVzPC90aXRsZT4KLTxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3
YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgotPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL3dpY2cuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvcHJvcG9zYWxzL1Njb3BlZC1D
dXN0b20tRWxlbWVudC1SZWdpc3RyaWVzIj4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWZ1bmN0aW9u
IGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVzdCwgcmVnaXN0cnkpIHsKLSAgICBjb25zdCBo
b3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgY29uc3Qgc2hhZG93Um9v
dCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJywgcmVnaXN0cnl9KTsKLSAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwotICAgIHRlc3QuYWRkX2NsZWFudXAoKCkg
PT4gaG9zdC5yZW1vdmUoKSk7Ci0gICAgcmV0dXJuIHNoYWRvd1Jvb3Q7Ci19Ci0KLXRlc3QoKHRl
c3QpID0+IHsKLSAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnk7
Ci0gICAgY2xhc3MgU29tZUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07Ci0gICAgcmVn
aXN0cnkuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBTb21lRWxlbWVudCk7Ci0gICAgY29uc3Qgc2hh
ZG93Um9vdCA9IGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVzdCwgcmVnaXN0cnkpOwotICAg
IGFzc2VydF90cnVlKHNoYWRvd1Jvb3QuY3JlYXRlRWxlbWVudCgnc29tZS1lbGVtZW50JykgaW5z
dGFuY2VvZiBTb21lRWxlbWVudCk7Ci0KLSAgICBjb25zdCBzb21lRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NvbWUtZWxlbWVudCcpOwotICAgIGFzc2VydF9mYWxzZShzb21lRWxl
bWVudCBpbnN0YW5jZW9mIFNvbWVFbGVtZW50KTsKLSAgICBjb25zdCBjbG9uZSA9IHNoYWRvd1Jv
b3QuaW1wb3J0Tm9kZShzb21lRWxlbWVudCk7Ci0gICAgYXNzZXJ0X3RydWUoY2xvbmUgaW5zdGFu
Y2VvZiBTb21lRWxlbWVudCk7Ci19LCAnU2hhZG93Um9vdC5pbXBvcnROb2RlOiBhbiB1cGdyYWRl
IGNhbmRpZGF0ZSBmcm9tIGRvY3VtZW50Jyk7Ci0KLXRlc3QoKHRlc3QpID0+IHsKLSAgICBjb25z
dCByZWdpc3RyeTEgPSBuZXcgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OwotICAgIGNsYXNzIFNvbWVF
bGVtZW50MSBleHRlbmRzIEhUTUxFbGVtZW50IHsgfTsKLSAgICByZWdpc3RyeTEuZGVmaW5lKCdz
b21lLWVsZW1lbnQnLCBTb21lRWxlbWVudDEpOwotICAgIGNvbnN0IHNoYWRvd1Jvb3QxID0gY3Jl
YXRlQ29ubmVjdGVkU2hhZG93VHJlZSh0ZXN0LCByZWdpc3RyeTEpOwotICAgIGNvbnN0IHNvbWVF
bGVtZW50ID0gc2hhZG93Um9vdDEuY3JlYXRlRWxlbWVudCgnc29tZS1lbGVtZW50Jyk7Ci0gICAg
YXNzZXJ0X3RydWUoc29tZUVsZW1lbnQgaW5zdGFuY2VvZiBTb21lRWxlbWVudDEpOwotCi0gICAg
Y29uc3QgcmVnaXN0cnkyID0gbmV3IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTsKLSAgICBjb25zdCBz
aGFkb3dSb290MiA9IGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVzdCwgcmVnaXN0cnkyKTsK
LSAgICBjbGFzcyBTb21lRWxlbWVudDIgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH0KLSAgICByZWdp
c3RyeTIuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBTb21lRWxlbWVudDIpOwotICAgIGFzc2VydF90
cnVlKHNoYWRvd1Jvb3QyLmNyZWF0ZUVsZW1lbnQoJ3NvbWUtZWxlbWVudCcpIGluc3RhbmNlb2Yg
U29tZUVsZW1lbnQyKTsKLQotICAgIGFzc2VydF90cnVlKHNoYWRvd1Jvb3QyLmltcG9ydE5vZGUo
c29tZUVsZW1lbnQpIGluc3RhbmNlb2YgU29tZUVsZW1lbnQyKTsKLX0sICdTaGFkb3dSb290Lmlt
cG9ydE5vZGU6IGEgY3VzdG9tIGVsZW1lbnQgZnJvbSBhbm90aGVyIHNoYWRvdyB0cmVlJyk7Ci0K
LXRlc3QoKHRlc3QpID0+IHsKLSAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBDdXN0b21FbGVtZW50
UmVnaXN0cnk7Ci0gICAgY29uc3QgbG9ncyA9IFtdOwotICAgIGNsYXNzIFNvbWVFbGVtZW50IGV4
dGVuZHMgSFRNTEVsZW1lbnQgewotICAgICAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgICAg
IHN1cGVyKCk7Ci0gICAgICAgICAgICBsb2dzLnB1c2goJ3NvbWUtZWxlbWVudCcpOwotICAgICAg
ICB9Ci0gICAgfTsKLSAgICBjbGFzcyBPdGhlckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
Ci0gICAgICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAg
ICAgIGxvZ3MucHVzaCgnb3RoZXItZWxlbWVudCcpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICBy
ZWdpc3RyeS5kZWZpbmUoJ3NvbWUtZWxlbWVudCcsIFNvbWVFbGVtZW50KTsKLSAgICByZWdpc3Ry
eS5kZWZpbmUoJ290aGVyLWVsZW1lbnQnLCBPdGhlckVsZW1lbnQpOwotCi0gICAgY29uc3QgdGVt
cGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpOwotICAgIHRlbXBsYXRl
LmlubmVySFRNTCA9ICc8ZGl2Pjxzb21lLWVsZW1lbnQ+aGVsbG88L3NvbWUtZWxlbWVudD48b3Ro
ZXItZWxlbWVudD53b3JsZDwvb3RoZXItZWxlbWVudD48L2Rpdj4nOwotICAgIGFzc2VydF9mYWxz
ZSh0ZW1wbGF0ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ3NvbWUtZWxlbWVudCcpIGluc3RhbmNl
b2YgU29tZUVsZW1lbnQpOwotICAgIGFzc2VydF9mYWxzZSh0ZW1wbGF0ZS5jb250ZW50LnF1ZXJ5
U2VsZWN0b3IoJ290aGVyLWVsZW1lbnQnKSBpbnN0YW5jZW9mIE90aGVyRWxlbWVudCk7Ci0KLSAg
ICBjb25zdCBzaGFkb3dSb290ID0gY3JlYXRlQ29ubmVjdGVkU2hhZG93VHJlZSh0ZXN0LCByZWdp
c3RyeSk7Ci0gICAgY29uc3QgY2xvbmUgPSBzaGFkb3dSb290LmltcG9ydE5vZGUodGVtcGxhdGUu
Y29udGVudCwgLyogZGVlcCAqLyB0cnVlKTsKLSAgICBhc3NlcnRfdHJ1ZShjbG9uZS5xdWVyeVNl
bGVjdG9yKCdzb21lLWVsZW1lbnQnKSBpbnN0YW5jZW9mIFNvbWVFbGVtZW50KTsKLSAgICBhc3Nl
cnRfdHJ1ZShjbG9uZS5xdWVyeVNlbGVjdG9yKCdvdGhlci1lbGVtZW50JykgaW5zdGFuY2VvZiBP
dGhlckVsZW1lbnQpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9ncywgWydzb21lLWVsZW1l
bnQnLCAnb3RoZXItZWxlbWVudCddKTsKLX0sICdTaGFkb3dSb290LmltcG9ydE5vZGU6IGEgdGVt
cGxhdGUgY29udGVudCBmcm9tIGRvY3VtZW50Jyk7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jdXN0b20tZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3QtaW5uZXJIVE1M
LXVwZ3JhZGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9TaGFk
b3dSb290LWlubmVySFRNTC11cGdyYWRlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggYjlj
MGQ4NWEwMWMxLi42NTkzNjcwMzIyYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Njb3BlZC1yZWdpc3RyeS9T
aGFkb3dSb290LWlubmVySFRNTC11cGdyYWRlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVu
dHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3QtaW5uZXJIVE1MLXVwZ3JhZGUudGVudGF0aXZl
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9y
OiBuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50CisKK0hhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9yOiBuZXcudGFyZ2V0IGRvZXMgbm90IGRl
ZmluZSBhIGN1c3RvbSBlbGVtZW50CiAKIFBBU1MgVXBncmFkZSBpbnRvIGF1dG9ub21vdXMgY3Vz
dG9tIGVsZW1lbnQgd2hlbiBpbnNlcnRlZCB2aWEgaW5uZXJIVE1MCiBQQVNTIFVwZ3JhZGUgaW50
byBhdXRvbm9tb3VzIGN1c3RvbSBlbGVtZW50IHdoZW4gZGVmaW5pdGlvbiBpcyBhZGRlZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0
b20tZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3QtaW5uZXJIVE1MLnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2N1c3RvbS1lbGVtZW50cy9zY29wZWQtcmVnaXN0cnkvU2hhZG93Um9vdC1pbm5lckhUTUwu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc5
NTdmNTc0YTNjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jv
b3QtaW5uZXJIVE1MLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3
ICswLDAgQEAKLQotUEFTUyBpbm5lckhUTUwgb24gYSBzaGFkb3cgcm9vdCBzaG91bGQgdXNlIHNj
b3BlZCBjdXN0b20gZWxlbWVudCByZWdpc3RyeQotUEFTUyBpbm5lckhUTUwgb24gYSBkaXNjb25u
ZWN0ZWQgZWxlbWVudCBzaG91bGQgdXNlIHRoZSBhc3NvY2lhdGVkIHNjb3BlZCBjdXN0b20gZWxl
bWVudCByZWdpc3RyeQotUEFTUyBpbm5lckhUTUwgb24gYSBjb25uZWN0ZWQgc2hhZG93IHJvb3Qg
c2hvdWxkIHVzZSBpdHMgc2NvcGVkIGN1c3RvbSBlbGVtZW50Ci1QQVNTIGlubmVySFRNTCBvbiBh
biBpbnNlcnRlZCBlbGVtZW50IHNob3VsZCB1c2UgdGhlIHNjb3BlZCBjdXN0b20gZWxlbWVudCBv
ZiB0aGUgYW5jZXN0b3Igc2hhZG93IHJvb3QKLVBBU1MgaW5uZXJIVE1MIHNob3VsZCBub3QgdXBn
cmFkZSBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20t
ZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3QtaW5uZXJIVE1MLnRlbnRhdGl2ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20t
ZWxlbWVudHMvc2NvcGVkLXJlZ2lzdHJ5L1NoYWRvd1Jvb3QtaW5uZXJIVE1MLnRlbnRhdGl2ZS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWUzZjE4YTk2ZDIuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1
c3RvbS1lbGVtZW50cy9zY29wZWQtcmVnaXN0cnkvU2hhZG93Um9vdC1pbm5lckhUTUwudGVudGF0
aXZlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlRlc3RzIGlubmVySFRNTCBzaG91bGQgdXNlIHRoZSBz
Y29wZWQgY3VzdG9tIGVsZW1lbnQgcmVnaXN0cnkgdXNlZCB0byBjcmVhdGUgdGhlIGNvbnRleHQg
b2JqZWN0PC90aXRsZT4KLTxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIg
aHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgotPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2dpdGh1Yi5jb20vV0lDRy93ZWJjb21wb25lbnRzL2lzc3Vlcy8xMDc4Ij4KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVzdCwg
cmVnaXN0cnkpIHsKLSAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJywgcmVnaXN0cnl9KTsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwot
ICAgIHRlc3QuYWRkX2NsZWFudXAoKCkgPT4gaG9zdC5yZW1vdmUoKSk7Ci0gICAgcmV0dXJuIHNo
YWRvd1Jvb3Q7Ci19Ci0KLXRlc3QoKHRlc3QpID0+IHsKLSAgICBjb25zdCByZWdpc3RyeSA9IG5l
dyBDdXN0b21FbGVtZW50UmVnaXN0cnk7Ci0KLSAgICBjbGFzcyBTb21lRWxlbWVudCBleHRlbmRz
IEhUTUxFbGVtZW50IHsgfTsKLSAgICByZWdpc3RyeS5kZWZpbmUoJ3NvbWUtZWxlbWVudCcsIFNv
bWVFbGVtZW50KTsKLQotICAgIGNsYXNzIE90aGVyRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50
IHsgfTsKLSAgICByZWdpc3RyeS5kZWZpbmUoJ290aGVyLWVsZW1lbnQnLCBPdGhlckVsZW1lbnQp
OwotCi0gICAgY29uc3Qgc2hhZG93Um9vdCA9IGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVz
dCwgcmVnaXN0cnkpOwotICAgIGFzc2VydF90cnVlKHNoYWRvd1Jvb3QuY3JlYXRlRWxlbWVudCgn
c29tZS1lbGVtZW50JykgaW5zdGFuY2VvZiBTb21lRWxlbWVudCk7Ci0gICAgYXNzZXJ0X3RydWUo
c2hhZG93Um9vdC5jcmVhdGVFbGVtZW50KCdvdGhlci1lbGVtZW50JykgaW5zdGFuY2VvZiBPdGhl
ckVsZW1lbnQpOwotICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzb21lLWVsZW1lbnQ+PC9z
b21lLWVsZW1lbnQ+PG90aGVyLWVsZW1lbnQ+PC9vdGhlci1lbGVtZW50Pic7Ci0KLSAgICBhc3Nl
cnRfdHJ1ZShzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ3NvbWUtZWxlbWVudCcpIGluc3RhbmNl
b2YgU29tZUVsZW1lbnQpOwotICAgIGFzc2VydF90cnVlKHNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rv
cignb3RoZXItZWxlbWVudCcpIGluc3RhbmNlb2YgT3RoZXJFbGVtZW50KTsKLX0sICdpbm5lckhU
TUwgb24gYSBzaGFkb3cgcm9vdCBzaG91bGQgdXNlIHNjb3BlZCBjdXN0b20gZWxlbWVudCByZWdp
c3RyeScpOwotCi10ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OwotCi0gICAgY2xhc3MgU29tZUVsZW1lbnQgZXh0ZW5kcyBIVE1M
RWxlbWVudCB7IH07Ci0gICAgcmVnaXN0cnkuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBTb21lRWxl
bWVudCk7Ci0KLSAgICBjbGFzcyBPdGhlckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07
Ci0gICAgcmVnaXN0cnkuZGVmaW5lKCdvdGhlci1lbGVtZW50JywgT3RoZXJFbGVtZW50KTsKLQot
ICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBjcmVhdGVDb25uZWN0ZWRTaGFkb3dUcmVlKHRlc3QsIHJl
Z2lzdHJ5KTsKLSAgICBjb25zdCBzb21lRWxlbWVudCA9IHNoYWRvd1Jvb3QuY3JlYXRlRWxlbWVu
dCgnc29tZS1lbGVtZW50Jyk7Ci0gICAgYXNzZXJ0X3RydWUoc29tZUVsZW1lbnQgaW5zdGFuY2Vv
ZiBTb21lRWxlbWVudCk7Ci0gICAgc29tZUVsZW1lbnQuaW5uZXJIVE1MID0gJzxvdGhlci1lbGVt
ZW50Pjwvb3RoZXItZWxlbWVudD4nOwotICAgIGFzc2VydF90cnVlKHNvbWVFbGVtZW50LnF1ZXJ5
U2VsZWN0b3IoJ290aGVyLWVsZW1lbnQnKSBpbnN0YW5jZW9mIE90aGVyRWxlbWVudCk7Ci19LCAn
aW5uZXJIVE1MIG9uIGEgZGlzY29ubmVjdGVkIGVsZW1lbnQgc2hvdWxkIHVzZSB0aGUgYXNzb2Np
YXRlZCBzY29wZWQgY3VzdG9tIGVsZW1lbnQgcmVnaXN0cnknKTsKLQotdGVzdCgodGVzdCkgPT4g
ewotICAgIGNsYXNzIFNvbWVFbGVtZW50MSBleHRlbmRzIEhUTUxFbGVtZW50IHsgfTsKLSAgICBj
dXN0b21FbGVtZW50cy5kZWZpbmUoJ3NvbWUtZWxlbWVudCcsIFNvbWVFbGVtZW50MSk7Ci0KLSAg
ICBjb25zdCByZWdpc3RyeSA9IG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnk7Ci0gICAgY2xhc3Mg
U29tZUVsZW1lbnQyIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyB9OwotICAgIHJlZ2lzdHJ5LmRlZmlu
ZSgnc29tZS1lbGVtZW50JywgU29tZUVsZW1lbnQyKTsKLQotICAgIGNvbnN0IHNoYWRvd1Jvb3Qg
PSBjcmVhdGVDb25uZWN0ZWRTaGFkb3dUcmVlKHRlc3QsIHJlZ2lzdHJ5KTsKLSAgICBzaGFkb3dS
b290LmlubmVySFRNTCA9ICc8c29tZS1lbGVtZW50Pjwvc29tZS1lbGVtZW50Pic7Ci0gICAgYXNz
ZXJ0X3RydWUoc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdzb21lLWVsZW1lbnQnKSBpbnN0YW5j
ZW9mIFNvbWVFbGVtZW50Mik7Ci19LCAnaW5uZXJIVE1MIG9uIGEgY29ubmVjdGVkIHNoYWRvdyBy
b290IHNob3VsZCB1c2UgaXRzIHNjb3BlZCBjdXN0b20gZWxlbWVudCcpOwotCi10ZXN0KCh0ZXN0
KSA9PiB7Ci0gICAgY2xhc3MgT3RoZXJFbGVtZW50MSBleHRlbmRzIEhUTUxFbGVtZW50IHsgfTsK
LSAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ290aGVyLWVsZW1lbnQnLCBPdGhlckVsZW1lbnQx
KTsKLQotICAgIGNvbnN0IHJlZ2lzdHJ5MSA9IG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnk7Ci0g
ICAgY2xhc3MgU29tZUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07Ci0gICAgcmVnaXN0
cnkxLmRlZmluZSgnc29tZS1lbGVtZW50JywgU29tZUVsZW1lbnQpOwotICAgIGNsYXNzIE90aGVy
RWxlbWVudDIgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07Ci0gICAgcmVnaXN0cnkxLmRlZmluZSgn
b3RoZXItZWxlbWVudCcsIE90aGVyRWxlbWVudDIpOwotCi0gICAgY29uc3QgcmVnaXN0cnkyID0g
bmV3IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTsKLSAgICBjbGFzcyBPdGhlckVsZW1lbnQzIGV4dGVu
ZHMgSFRNTEVsZW1lbnQgeyB9OwotICAgIHJlZ2lzdHJ5Mi5kZWZpbmUoJ290aGVyLWVsZW1lbnQn
LCBPdGhlckVsZW1lbnQzKTsKLQotICAgIGNvbnN0IHNoYWRvd1Jvb3QxID0gY3JlYXRlQ29ubmVj
dGVkU2hhZG93VHJlZSh0ZXN0LCByZWdpc3RyeTEpOwotICAgIGNvbnN0IHNoYWRvd1Jvb3QyID0g
Y3JlYXRlQ29ubmVjdGVkU2hhZG93VHJlZSh0ZXN0LCByZWdpc3RyeTIpOwotICAgIGNvbnN0IHNv
bWVFbGVtZW50ID0gc2hhZG93Um9vdDEuY3JlYXRlRWxlbWVudCgnc29tZS1lbGVtZW50Jyk7Ci0g
ICAgc29tZUVsZW1lbnQuaW5uZXJIVE1MID0gJzxvdGhlci1lbGVtZW50Pjwvb3RoZXItZWxlbWVu
dD4nOwotICAgIGFzc2VydF90cnVlKHNvbWVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ290aGVyLWVs
ZW1lbnQnKSBpbnN0YW5jZW9mIE90aGVyRWxlbWVudDIpOwotICAgIHNoYWRvd1Jvb3QyLmFwcGVu
ZENoaWxkKHNvbWVFbGVtZW50KTsKLSAgICBzb21lRWxlbWVudC5pbm5lckhUTUwgPSAnPG90aGVy
LWVsZW1lbnQ+Yjwvb3RoZXItZWxlbWVudD4nOwotICAgIGFzc2VydF90cnVlKHNvbWVFbGVtZW50
LnF1ZXJ5U2VsZWN0b3IoJ290aGVyLWVsZW1lbnQnKSBpbnN0YW5jZW9mIE90aGVyRWxlbWVudDMp
OwotICAgIHNvbWVFbGVtZW50LnJlbW92ZSgpOwotICAgIHNvbWVFbGVtZW50LmlubmVySFRNTCA9
ICc8b3RoZXItZWxlbWVudD48L290aGVyLWVsZW1lbnQ+JzsKLSAgICBhc3NlcnRfdHJ1ZShzb21l
RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdvdGhlci1lbGVtZW50JykgaW5zdGFuY2VvZiBPdGhlckVs
ZW1lbnQzKTsKLX0sICdpbm5lckhUTUwgb24gYW4gaW5zZXJ0ZWQgZWxlbWVudCBzaG91bGQgdXNl
IHRoZSBzY29wZWQgY3VzdG9tIGVsZW1lbnQgb2YgdGhlIGFuY2VzdG9yIHNoYWRvdyByb290Jyk7
Ci0KLXRlc3QoKHRlc3QpID0+IHsKLSAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBDdXN0b21FbGVt
ZW50UmVnaXN0cnk7Ci0gICAgY2xhc3MgU29tZUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
IH07Ci0gICAgcmVnaXN0cnkuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBTb21lRWxlbWVudCk7Ci0g
ICAgY29uc3Qgc2hhZG93Um9vdCA9IGNyZWF0ZUNvbm5lY3RlZFNoYWRvd1RyZWUodGVzdCwgcmVn
aXN0cnkpOwotCi0gICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNvbWUtZWxlbWVudD48L3Nv
bWUtZWxlbWVudD48dGVtcGxhdGU+PHNvbWUtZWxlbWVudD48L3NvbWUtZWxlbWVudD48L3RlbXBs
YXRlPic7Ci0gICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ3NvbWUt
ZWxlbWVudCcpLl9fcHJvdG9fXy5jb25zdHJ1Y3Rvci5uYW1lLCAnU29tZUVsZW1lbnQnKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKS5jb250
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3NvbWUtZWxlbWVudCcpLl9fcHJvdG9fXy5jb25zdHJ1Y3Rvci5u
YW1lLCAnSFRNTEVsZW1lbnQnKTsKLX0sICdpbm5lckhUTUwgc2hvdWxkIG5vdCB1cGdyYWRlIGEg
Y3VzdG9tIGVsZW1lbnQgaW5zaWRlIGEgdGVtcGxhdGUgZWxlbWVudCcpOwotCi08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="498209"
          type_id="3"
          status="?"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>