<?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>78941</bug_id>
          
          <creation_ts>2012-02-17 15:46:25 -0800</creation_ts>
          <short_desc>Unite TextTrack-related files with their friends in WebCore/html/track</short_desc>
          <delta_ts>2012-02-20 23:06:57 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559603</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 15:46:25 -0800</bug_when>
    <thetext>Unite TextTrack-related files with their friends in WebCore/html/track</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559605</commentid>
    <comment_count>1</comment_count>
      <attachid>127667</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 15:47:41 -0800</bug_when>
    <thetext>Created attachment 127667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559606</commentid>
    <comment_count>2</comment_count>
      <attachid>127667</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-17 15:49:20 -0800</bug_when>
    <thetext>Comment on attachment 127667
Patch

What a beautiful family reunion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559692</commentid>
    <comment_count>3</comment_count>
      <attachid>127667</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-17 18:54:20 -0800</bug_when>
    <thetext>Comment on attachment 127667
Patch

Attachment 127667 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11535756</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560689</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-20 23:06:57 -0800</bug_when>
    <thetext>Committed r108310: &lt;http://trac.webkit.org/changeset/108310&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127667</attachid>
            <date>2012-02-17 15:47:41 -0800</date>
            <delta_ts>2012-02-17 18:54:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78941-20120217154740.patch</filename>
            <type>text/plain</type>
            <size>151474</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pdGUgVGV4dFRyYWNrLXJlbGF0
ZWQgZmlsZXMgd2l0aCB0aGVpciBmcmllbmRzIGluIFdlYkNvcmUvaHRtbC90cmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29kZSB0aGF0IHN1
cHBvcnRzIDx0cmFjaz4gc2VlbXMgdG8gYmUgc3BsaXQgYmV0d2VlbiB0aGUKKyAgICAgICAgV2Vi
Q29yZS9odG1sIGRpcmVjdG9yeSBhbmQgdGhlIFdlYkNvcmUvaHRtbC90cmFjayBkaXJlY3Rvcnku
ICBUaGlzCisgICAgICAgIHBhdGNoIHVuaXRlcyB0aGlzIGNvZGUgaW4gdGhlIFdlYkNvcmUvaHRt
bC90cmFjayBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9Mb2FkYWJs
ZVRleHRUcmFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0
bWwvVGV4dFRyYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9U
ZXh0VHJhY2tDdWVMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1
ZUxpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuaWRsOiBS
ZW1vdmVkLgorICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcC4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNw
cC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFjay5oLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsLgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmgu
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5pZGwuCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWVMaXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2tDdWVMaXN0LmNwcC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmguCisg
ICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbC4KKwogMjAxMi0wMi0xNyAgRGF2
aWQgQmFydG9uICA8ZGJhcnRvbkBtYXRoc2NyaWJlLmNvbT4KIAogICAgICAgICBNYXRoTUwgaW50
ZXJuYWxzIC0gZW1iZWxsaXNoZWQgb3BlcmF0b3JzLCBnZXRCYXNlKCkgYWNjZXNzb3IgZnVuY3Rp
b25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MTI2KQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MSwxMCArMjgxLDYg
QEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9JbWFnZURhdGEuaWRsCiAgICAgaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbAotICAgIGh0bWwv
VGV4dE1ldHJpY3MuaWRsCi0gICAgaHRtbC9UZXh0VHJhY2suaWRsCi0gICAgaHRtbC9UZXh0VHJh
Y2tDdWUuaWRsCi0gICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgIGh0bWwvVGltZVJh
bmdlcy5pZGwKICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuaWRsCiAgICAgaHRtbC9Wb2lkQ2FsbGJh
Y2suaWRsCkBAIC0zMDksNiArMzA1LDEwIEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKICAgICBodG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5pZGwKIAorICAgIGh0bWwvdHJhY2svVGV4dE1ldHJpY3MuaWRsCisgICAgaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCisgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCisg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgIGh0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5pZGwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCiAKQEAgLTIxMDcsMTAg
KzIxMDcsMTAgQEAgRU5ESUYgKCkKIElGIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgTElTVChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAK
LSAgICAgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKLSAgICAgICAgaHRtbC9UZXh0VHJh
Y2suY3BwCi0gICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNwcAotICAgICAgICBodG1sL1RleHRU
cmFja0N1ZUxpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3Bw
CisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAog
ICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw5ICsyNjAs
NiBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhQ29udHJvbGxl
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL1RleHRNZXRyaWNzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL1RleHRUcmFj
ay5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9UZXh0VHJhY2tDdWUuaWRsIFwKLSAgICAkKFdl
YkNvcmUpL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9U
aW1lUmFuZ2VzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1ZhbGlkaXR5U3RhdGUuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlkbCBcCkBAIC0zMDAsNiAr
Mjk3LDkgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2su
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90
cmFjay9UcmFja0V2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lv
biAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTU5OSw5ICs1OTksOSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEp
IHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIHsKICAgSURMX0JJ
TkRJTkdTICs9IFwKLSAgICAkJFBXRC9odG1sL1RleHRUcmFjay5pZGwgXAotICAgICQkUFdEL2h0
bWwvVGV4dFRyYWNrQ3VlLmlkbCBcCi0gICAgJCRQV0QvaHRtbC9UZXh0VHJhY2tDdWVMaXN0Lmlk
bCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAog
ICAgICQkUFdEL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsOSArODI4LDYgQEAgZG9t
X2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwg
XAogCSQoV2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL1Rl
eHRNZXRyaWNzLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL1RleHRUcmFjay5pZGwgXAotCSQoV2Vi
Q29yZSkvaHRtbC9UZXh0VHJhY2tDdWUuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9UaW1lUmFuZ2VzLmlkbCBcCiAJJChXZWJD
b3JlKS9odG1sL1ZhbGlkaXR5U3RhdGUuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvVm9pZENhbGxi
YWNrLmlkbCBcCkBAIC04NjgsNiArODY1LDkgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwgXAogCSQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogCSQoV2ViQ29y
ZSkvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1s
L3RyYWNrL1RleHRUcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9o
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsIFwKQEAgLTIxODEsOCArMjE4MSw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0xp
bmtSZWxBdHRyaWJ1dGUuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oIFwKQEAgLTIyODgsMTYgKzIyODYsMTggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
TWV0cmljcy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaCBcCi0JU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2tDdWVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0
VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVSYW5nZXMuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwODEyNikK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtOTMzLDkg
KzkzMyw2IEBACiAgICAgICAgICAgICAnaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsJywKICAgICAg
ICAgICAgICdodG1sL01lZGlhRXJyb3IuaWRsJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRy
aWNzLmlkbCcsCi0gICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suaWRsJywKLSAgICAgICAgICAg
ICdodG1sL1RleHRUcmFja0N1ZS5pZGwnLAotICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdlcy5pZGwnLAogICAgICAgICAg
ICAgJ2h0bWwvVmFsaWRpdHlTdGF0ZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVm9pZENhbGxi
YWNrLmlkbCcsCkBAIC05NzcsNiArOTc0LDkgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFjay5pZGwn
LAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCcsCisgICAgICAgICAg
ICAnaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0V2
ZW50LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwn
LApAQCAtNTM3Myw4ICs1MzczLDYgQEAKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0
LmgnLAogICAgICAgICAgICAgJ2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oJywKLSAgICAgICAgICAgICdodG1sL0xvYWRhYmxl
VGV4dFRyYWNrLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oJywK
ICAgICAgICAgICAgICdodG1sL01lZGlhQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvTWVkaWFDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFEb2N1bWVudC5j
cHAnLApAQCAtNTQxNCwxMiArNTQxMiw2IEBACiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRU
eXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvVGV4dE1ldHJpY3MuaCcsCi0gICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suY3Bw
JywKLSAgICAgICAgICAgICdodG1sL1RleHRUcmFjay5oJywKLSAgICAgICAgICAgICdodG1sL1Rl
eHRUcmFja0N1ZS5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlLmgnLAotICAg
ICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAnLAotICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL1RpbWVJbnB1dFR5cGUuY3Bw
JywKICAgICAgICAgICAgICdodG1sL1RpbWVJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9UaW1lUmFuZ2VzLmNwcCcsCkBAIC01NTY0LDYgKzU1NTYsMTQgQEAKICAgICAgICAgICAgICdo
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmgnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwJywK
KyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaCcsCiAgICAgICAgICAg
ICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3Bw
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzMzNiw2ICszMzM2LDE0
IEBACiAJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0RDJEQTMxNDZBNTM1
RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc1MkQzOEQxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRN
TFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5jcHAg
Ki87IH07CiAJCTk3NTJEMzhFMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1MkQzOEMx
NDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmggKi87IH07CisJCTk3NTlFOTNF
MTRFRjFDRjgwMDI2QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzU5RTkzNDE0RUYxQ0Y4MDAyNkEyREQg
LyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovOyB9OworCQk5NzU5RTkzRjE0RUYxQ0Y4MDAyNkEy
REQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3NTlFOTM1MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suY3BwICovOyB9
OworCQk5NzU5RTk0MDE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzU5RTkzNjE0RUYxQ0Y4MDAyNkEy
REQgLyogVGV4dFRyYWNrLmggKi87IH07CisJCTk3NTlFOTQyMTRFRjFDRjgwMDI2QTJERCAvKiBU
ZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc1OUU5MzgxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgKi87IH07
CisJCTk3NTlFOTQzMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTlFOTM5MTRFRjFDRjgwMDI2
QTJERCAvKiBUZXh0VHJhY2tDdWUuaCAqLzsgfTsKKwkJOTc1OUU5NDUxNEVGMUNGODAwMjZBMkRE
IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc1OUU5M0IxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxp
c3QuY3BwICovOyB9OworCQk5NzU5RTk0NjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3Vl
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1
OUU5M0MxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxpc3QuaCAqLzsgfTsKKwkJOTc1
OUU5NDkxNEVGMUQ0OTAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzU5RTk0ODE0RUYxRDQ5MDAyNkEy
REQgLyogTG9hZGFibGVUZXh0VHJhY2suaCAqLzsgfTsKIAkJOTc1Q0EyOEExMzAzNjVGODAwRTk5
QUQ5IC8qIENyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzVDQTI4NzEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCAqLzsgfTsKIAkJ
OTc1Q0EyOEIxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1Q0EyODgxMzAzNjVGODAwRTk5QUQ5IC8qIENy
eXB0by5oICovOyB9OwogCQk5NzVDQTJBMTEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1Q0EyOUYx
MzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmNwcCAqLzsgfTsKQEAgLTQyNzgsMTQgKzQyODYs
NiBAQAogCQlCMTBCNjk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMEI2OTdFMTQw
QzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuY3BwICovOyB9OwogCQlCMTBCNjk4MjE0
MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTBCNjk3RjE0MEMxNzQwMDBCQzFDMjYgLyogV2Vi
VlRUVG9rZW5pemVyLmggKi87IH07CiAJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxs
YmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAq
LzsgfTsKLQkJQjFBRDRFNUUxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRE
MTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgKi87IH07Ci0JCUIxQUQ0
RTVGMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNEUxM0ExMkEwQjAwODQ2QjI3
IC8qIExvYWRhYmxlVGV4dFRyYWNrLmggKi87IH07Ci0JCUIxQUQ0RTY2MTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNTUxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5jcHAgKi87IH07
Ci0JCUIxQUQ0RTY3MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTU2MTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlCMUFENEU2ODEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTU3MTNB
MTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3BwICovOyB9OwotCQlCMUFENEU2OTEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1ODEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNr
Q3VlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QjFBRDRFNkExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTkxM0ExMkEwQjAw
ODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwotCQlCMUFENEU2QjEzQTEyQTBC
MDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNUExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFj
a0N1ZUxpc3QuaCAqLzsgfTsKIAkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFj
a0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmNwcCAqLzsgfTsK
IAkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzIxM0ExMkE0NjAw
ODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1OERBMDA4
N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVu
Y3Rpb24uaCAqLzsgfTsKQEAgLTY3ODksOSArNjc4OSw2IEBACiAJCTA3MDc1NjhBMTQyMjYyRDYw
MDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBI
VE1MVHJhY2tFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2
OEUxNDIyNjY4QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcwNzU2OEYxNDIyNjY4QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTA3MDc1NjlDMTQyMjk3OTgwMDQxNDE2MSAvKiBUZXh0VHJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3MDc1NjlEMTQyMjk3OTgwMDQxNDE2MSAvKiBUZXh0VHJhY2tDdWUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFja0N1ZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTA3MDc1NjlFMTQyMjk3OTgwMDQxNDE2MSAvKiBUZXh0VHJhY2tDdWVM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXh0VHJhY2tDdWVMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2RDExNDIzOUE0RTAwNDE0MTYxIC8qIEpT
SFRNTFRyYWNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0hUTUxUcmFja0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzA3NTZEMjE0MjM5QTRFMDA0MTQxNjEgLyogSlNIVE1MVHJhY2tFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRyYWNrRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTZENzE0MjM5QjRCMDA0MTQxNjEgLyogSlNUZXh0VHJh
Y2tDdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJh
Y2tDdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxOTQsNiArMTAxOTEs
MTcgQEAKIAkJOTc0RDJEQTMxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyaXR5UG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxT
cGFuRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxTcGFuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NTJEMzhD
MTQxMzEwNEIwMDMzMDVCRCAvKiBKU0hUTUxTcGFuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0hUTUxTcGFuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5NzU5RTkzNDE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZGFibGVUZXh0VHJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzU5RTkzNTE0RUYxQ0Y4MDAy
NkEyREQgLyogVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NTlFOTM2
MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NTlF
OTM3MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFRleHRUcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NTlFOTM4
MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrQ3VlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTc1OUU5MzkxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tDdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTc1OUU5M0ExNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dFRyYWNrQ3VlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc1OUU5M0IxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFj
a0N1ZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRy
YWNrQ3VlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NTlFOTNDMTRF
RjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRUcmFja0N1ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTc1OUU5M0QxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxpc3QuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFja0N1ZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NzU5RTk0ODE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0
VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVUZXh0VHJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc1Q0EyODcxMzAzNjVGODAwRTk5
QUQ5IC8qIENyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzVDQTI4ODEzMDM2NUY4
MDBFOTlBRDkgLyogQ3J5cHRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
eXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzVDQTI4OTEzMDM2NUY4MDBF
OTlBRDkgLyogQ3J5cHRvLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDcnlwdG8uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMzgsMTQgKzExMDQ2LDYgQEAKIAkJQjEw
QjY5N0UxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJWVFRUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMTBCNjk3RjE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9r
ZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZUVFRva2VuaXpl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMTgyNzQ5MjEzNENBNEMxMDBCOThD
MkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWxsYmFja0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjFBRDRFNEQxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlVGV4dFRyYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjFBRDRFNEUxM0ExMkEwQjAwODQ2QjI3IC8q
IExvYWRhYmxlVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
YWRhYmxlVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTU1
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjFBRDRFNTYxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjFBRDRFNTcxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tDdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCMUFENEU1ODEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRy
YWNrQ3VlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0N1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMUFENEU1OTEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUZXh0VHJhY2tDdWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjFBRDRFNUExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRleHRUcmFja0xv
YWRlci5jcHA7IHBhdGggPSBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQlCMUFENEU3MjEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNr
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRUcmFja0xvYWRl
ci5oOyBwYXRoID0gbG9hZGVyL1RleHRUcmFja0xvYWRlci5oOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTkzLDggKzE2OTkzLDYgQEAKIAkJCQlB
NDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCAqLywKIAkJCQk5ODVC
Qjk2QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi8sCiAJCQkJOTg1
QkI5NkMxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuaCAqLywKLQkJCQlCMUFE
NEU0RDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovLAotCQkJCUIx
QUQ0RTRFMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5oICovLAogCQkJCUNE
MjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUNE
MjdGNkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQlDRDI3
RjZFMDE0NTc1QzFCMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmlkbCAqLywKQEAgLTE3MDM4
LDE1ICsxNzAzNiw2IEBACiAJCQkJRjU1QjNEQTYxMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRJbnB1
dFR5cGUuaCAqLywKIAkJCQlCQ0VGNDVFODBFNjg3NzY3MDAxQzEyODcgLyogVGV4dE1ldHJpY3Mu
aCAqLywKIAkJCQlCQ0VGNDUzRjBFNjc2QUMxMDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaWRsICov
LAotCQkJCUIxQUQ0RTU1MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwICovLAotCQkJ
CUIxQUQ0RTU2MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suaCAqLywKLQkJCQkwNzA3NTY5
QzE0MjI5Nzk4MDA0MTQxNjEgLyogVGV4dFRyYWNrLmlkbCAqLywKLQkJCQlCMUFENEU1NzEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmNwcCAqLywKLQkJCQlCMUFENEU1ODEzQTEyQTBC
MDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggKi8sCi0JCQkJMDcwNzU2OUQxNDIyOTc5ODAwNDE0
MTYxIC8qIFRleHRUcmFja0N1ZS5pZGwgKi8sCi0JCQkJQjFBRDRFNTkxM0ExMkEwQjAwODQ2QjI3
IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICovLAotCQkJCUIxQUQ0RTVBMTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2tDdWVMaXN0LmggKi8sCi0JCQkJMDcwNzU2OUUxNDIyOTc5ODAwNDE0MTYx
IC8qIFRleHRUcmFja0N1ZUxpc3QuaWRsICovLAogCQkJCUY1NUIzREE3MTI1MUYxMkQwMDNFRjI2
OSAvKiBUaW1lSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBODEyNTFGMTJEMDAzRUYyNjkg
LyogVGltZUlucHV0VHlwZS5oICovLAogCQkJCUU0NDYxMzlEMENENjMzMTAwMEZBREE3NSAvKiBU
aW1lUmFuZ2VzLmNwcCAqLywKQEAgLTE4MjQyLDYgKzE4MjMxLDE3IEBACiAJCUIxQUQ0RTc3MTNB
MTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJOTc1OUU5MzQxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRy
YWNrLmNwcCAqLywKKwkJCQk5NzU5RTk0ODE0RUYxRDQ5MDAyNkEyREQgLyogTG9hZGFibGVUZXh0
VHJhY2suaCAqLywKKwkJCQk5NzU5RTkzNTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmNw
cCAqLywKKwkJCQk5NzU5RTkzNjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrLmggKi8sCisJ
CQkJOTc1OUU5MzcxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5pZGwgKi8sCisJCQkJOTc1
OUU5MzgxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgKi8sCisJCQkJOTc1OUU5
MzkxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5oICovLAorCQkJCTk3NTlFOTNBMTRF
RjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuaWRsICovLAorCQkJCTk3NTlFOTNCMTRFRjFD
RjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLywKKwkJCQk5NzU5RTkzQzE0RUYx
Q0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5oICovLAorCQkJCTk3NTlFOTNEMTRFRjFD
RjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmlkbCAqLywKIAkJCQkwNzY5NzA4NDE0NjNB
RDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8sCiAJCQkJMDc2OTcwODUxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLywKIAkJCQkwN0I1QTMwNjE0Njg1MzcxMDBB
ODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8sCkBAIC0yMzE3Niw3ICsyMzE3Niw3IEBACiAJ
CQkJOThDRTQzMkExMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk4NDI2NEYxMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5ODVCQjk2RTEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJp
YnV0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFNUYxM0ExMkEwQjAwODQ2QjI3IC8qIExv
YWRhYmxlVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzU5RTk0OTE0RUYxRDQ5MDAy
NkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzMy
MEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0VFNjg0NjkxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA1Niw5ICsyNDA1Niw5IEBACiAJCQkJ
OTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFNjcxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFNjkxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFj
a0N1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFNkIxM0ExMkEwQjAwODQ2QjI3IC8qIFRl
eHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3NTlFOTQwMTRFRjFDRjgwMDI2
QTJERCAvKiBUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3NTlFOTQzMTRFRjFDRjgw
MDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3NTlFOTQ2MTRF
RjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDk4NzcwRjExMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYzMzQsNyArMjYzMzQsNyBAQAogCQkJCUE3QUQyRjg3MEVDODlEMDcw
MDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OENFNDMyNjEyOUUw
MEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5ODVCQjk2
RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlCMUFENEU1RTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4
dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzMzMEFEQkE1REUwMEE0NTU0RCAv
KiBMb2FkZXJOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDY4MTJEMjZF
MzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDZF
ODFFRUMwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBp
biBTb3VyY2VzICovLApAQCAtMjcwMzEsOSArMjcwMzEsOSBAQAogCQkJCTkzRjE5QTlEMDgyNDVF
NTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyQzNEQTRBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIxQUQ0RTY2MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQjFBRDRFNjgxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMUFENEU2QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRy
YWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzU5RTkzRjE0RUYxQ0Y4MDAyNkEy
REQgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3NTlFOTQyMTRFRjFDRjgw
MDI2QTJERCAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc1OUU5NDUx
NEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMDEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVy
ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVU
ZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVU
ZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0K
LSNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJUZXh0
VHJhY2tDdWVMaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTG9hZGFibGVUZXh0VHJh
Y2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBjb25zdCBTdHJp
bmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJv
b2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKHRyYWNrLT5kb2N1bWVudCgpLCB0cmFjaywg
a2luZCwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCi0gICAgLCBtX3RyYWNrRWxlbWVu
dCh0cmFjaykKLSAgICAsIG1fbG9hZFRpbWVyKHRoaXMsICZMb2FkYWJsZVRleHRUcmFjazo6bG9h
ZFRpbWVyRmlyZWQpCi0gICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCi17Ci19Ci0KLUxvYWRh
YmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQotewotfQotCi12b2lkIExvYWRhYmxl
VGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCi17Ci0gICAgbV90cmFja0VsZW1lbnQgPSAwOwotICAg
IFRleHRUcmFjazo6Y2xlYXJDbGllbnQoKTsKLX0KLQotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6
c2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsID09IG1fdXJsKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFu
ZCB0ZXh0IHRyYWNrcyAoY29udGludWVkKQotCi0gICAgLy8gMi4gTGV0IFVSTCBiZSB0aGUgdHJh
Y2sgVVJMIG9mIHRoZSB0cmFjayBlbGVtZW50LgotICAgIG1fdXJsID0gdXJsOwotICAgIAotICAg
IC8vIDMuIEFzeW5jaHJvbm91c2x5IHJ1biB0aGUgcmVtYWluaW5nIHN0ZXBzLCB3aGlsZSBjb250
aW51aW5nIHdpdGggd2hhdGV2ZXIgdGFzayAKLSAgICAvLyB3YXMgcmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIHRoZSB0ZXh0IHRyYWNrIG9yIGNoYW5naW5nIHRoZSB0ZXh0IHRyYWNrIG1vZGUuCi0g
ICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2xvYWRUaW1lci5zdGFy
dE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCi17Ci0gICAgaWYgKG1fbG9hZGVyKQotICAgICAg
ICBtX2xvYWRlci0+Y2FuY2VsTG9hZCgpOwotCi0gICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQg
dGV4dCB0cmFja3MgKGNvbnRpbnVlZCkKLQotICAgIC8vIDQuIERvd25sb2FkOiBJZiBVUkwgaXMg
bm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JTLWVuYWJsZWQg
ZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQotICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0YXRlIG9mIHRo
ZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUsIHRoZSBvcmln
aW4gYmVpbmcgdGhlCi0gICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1l
bnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWlsLgotICAgIG1f
bG9hZGVyID0gVGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgc3RhdGljX2Nhc3Q8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCo+KG1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7Ci0gICAgaWYg
KCFtX2xvYWRlci0+bG9hZChtX3VybCwgbV90cmFja0VsZW1lbnQtPm1lZGlhRWxlbWVudENyb3Nz
T3JpZ2luQXR0cmlidXRlKCkpKQotICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVM
b2FkKHRoaXMsIEhUTUxUcmFja0VsZW1lbnQ6OkZhaWx1cmUpOwotfQotCi12b2lkIExvYWRhYmxl
VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciogbG9hZGVyKQotewot
ICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlciA9PSBsb2FkZXIpOwotCi0gICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbmV3Q3VlczsKLSAgICBtX2xvYWRlci0+Z2V0TmV3
Q3VlcyhuZXdDdWVzKTsKLQotICAgIGlmICghbV9jdWVzKQotICAgICAgICBtX2N1ZXMgPSBUZXh0
VHJhY2tDdWVMaXN0OjpjcmVhdGUoKTsgICAgCi0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0N1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgbmV3Q3Vlc1tpXS0+c2V0VHJhY2sodGhp
cyk7Ci0gICAgICAgIG1fY3Vlcy0+YWRkKG5ld0N1ZXNbaV0pOwotICAgIH0KLQotICAgIGlmIChj
bGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPnRleHRUcmFja0FkZEN1ZXModGhpcywgbV9jdWVz
LmdldCgpKTsKLX0KLQotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQo
VGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1f
bG9hZGVyID09IGxvYWRlcik7Ci19Ci0KLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRp
bmdDb21wbGV0ZWQoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIsIGJvb2wgbG9hZGluZ0ZhaWxlZCkK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9sb2FkZXIgPT0gbG9hZGVyKTsKLQotICAg
IGlmICghbV90cmFja0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhY2tFbGVt
ZW50LT5kaWRDb21wbGV0ZUxvYWQodGhpcywgbG9hZGluZ0ZhaWxlZCA/IEhUTUxUcmFja0VsZW1l
bnQ6OkZhaWx1cmUgOiBIVE1MVHJhY2tFbGVtZW50OjpTdWNjZXNzKTsKLX0KLQotdm9pZCBMb2Fk
YWJsZVRleHRUcmFjazo6ZmlyZUN1ZUNoYW5nZUV2ZW50KCkKLXsKLSAgICBUZXh0VHJhY2s6OmZp
cmVDdWVDaGFuZ2VFdmVudCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG1fdHJh
Y2tFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNo
YW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7Ci19Ci0KLXNpemVfdCBMb2FkYWJsZVRleHRU
cmFjazo6dHJhY2tFbGVtZW50SW5kZXgoKQotewotICAgIEFTU0VSVChtX3RyYWNrRWxlbWVudCk7
Ci0gICAgQVNTRVJUKG1fdHJhY2tFbGVtZW50LT5wYXJlbnROb2RlKCkpOwotCi0gICAgc2l6ZV90
IGluZGV4ID0gMDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3RyYWNrRWxlbWVudC0+cGFyZW50
Tm9kZSgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKG5vZGUgPT0gbV90cmFja0VsZW1lbnQpCi0gICAgICAgICAg
ICByZXR1cm4gaW5kZXg7Ci0gICAgICAgICsraW5kZXg7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCShy
ZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTG9h
ZGFibGVUZXh0VHJhY2tfaAotI2RlZmluZSBMb2FkYWJsZVRleHRUcmFja19oCi0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNpbmNsdWRlICJUZXh0
VHJhY2tMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MVHJhY2tFbGVt
ZW50OwotY2xhc3MgTG9hZGFibGVUZXh0VHJhY2s7Ci0KLWNsYXNzIExvYWRhYmxlVGV4dFRyYWNr
Q2xpZW50IDogcHVibGljIFRleHRUcmFja0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
TG9hZGFibGVUZXh0VHJhY2tDbGllbnQoKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
TG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwg
Ym9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KLX07Ci0KLWNsYXNzIExvYWRhYmxlVGV4dFRy
YWNrIDogcHVibGljIFRleHRUcmFjaywgcHJpdmF0ZSBUZXh0VHJhY2tMb2FkZXJDbGllbnQgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUo
SFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrLCBraW5k
LCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5Mb2Fk
YWJsZVRleHRUcmFjaygpOwotCi0gICAgdm9pZCBzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYpOwot
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCk7Ci0gICAgCi0gICAgc2l6ZV90IHRyYWNr
RWxlbWVudEluZGV4KCk7Ci0gICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KCkgeyBy
ZXR1cm4gbV90cmFja0VsZW1lbnQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBUZXh0VHJhY2tMb2Fk
ZXJDbGllbnQKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZEN1ZXMoVGV4dFRyYWNrTG9hZGVy
KikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzQXZhaWxhYmxlKFRl
eHRUcmFja0xvYWRlciopOwotICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0
VHJhY2tMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0
VHJhY2tMb2FkZXIqLCBib29sIGxvYWRpbmdGYWlsZWQpOwotCi0gICAgTG9hZGFibGVUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOwotCi0gICAgdm9p
ZCBsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4qKTsKLSAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgZmlyZUN1ZUNoYW5nZUV2ZW50KCk7Ci0KLSAgICBIVE1MVHJhY2tFbGVtZW50
KiBtX3RyYWNrRWxlbWVudDsKLSAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9sb2FkVGlt
ZXI7Ci0gICAgT3duUHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgS1VSTCBtX3Vy
bDsKLSAgICBib29sIG1faXNEZWZhdWx0OwotfTsKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9u
IDEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwyODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLQotI2luY2x1ZGUgIlRleHRUcmFjay5oIgotCi0jaW5jbHVkZSAiRXZlbnQu
aCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlz
dC5oIgotI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRp
dGxlcyIpKTsKLSAgICByZXR1cm4gc3VidGl0bGVzOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiKSk7Ci0gICAgcmV0dXJu
IGNhcHRpb25zOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGVzY3JpcHRp
b25zS2V5d29yZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGRlc2NyaXB0aW9ucywgKCJkZXNjcmlwdGlvbnMiKSk7Ci0gICAgcmV0dXJuIGRlc2NyaXB0
aW9uczsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29y
ZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNoYXB0
ZXJzLCAoImNoYXB0ZXJzIikpOwotICAgIHJldHVybiBjaGFwdGVyczsKLX0KLQotY29uc3QgQXRv
bWljU3RyaW5nJiBUZXh0VHJhY2s6Om1ldGFkYXRhS2V5d29yZCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1ldGFkYXRhLCAoIm1ldGFkYXRhIikpOwot
ICAgIHJldHVybiBtZXRhZGF0YTsKLX0KLQotVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
VGV4dFRyYWNrVHlwZSB0eXBlKQotICAgIDogVHJhY2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6
VGV4dFRyYWNrKQotICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwp
Ci0gICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQotICAgICwgbV9tb2RlKFRleHRUcmFjazo6RElT
QUJMRUQpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3RyYWNrVHlwZSh0eXBlKQot
ICAgICwgbV9yZWFkaW5lc3NTdGF0ZShOb3RMb2FkZWQpCi0gICAgLCBtX3Nob3dpbmdCeURlZmF1
bHQoZmFsc2UpCi17Ci0gICAgc2V0S2luZChraW5kKTsKLX0KLQotVGV4dFRyYWNrOjp+VGV4dFRy
YWNrKCkKLXsKLSAgICBpZiAobV9jbGllbnQgJiYgbV9jdWVzKQotICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkpOwotICAgIGNsZWFyQ2xpZW50
KCk7Ci19Ci0KLWJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKLXsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIHN1YnRpdGxlc0tl
eXdvcmQoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSh2YWx1ZSwgY2FwdGlvbnNLZXl3b3JkKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGRlc2NyaXB0aW9uc0tleXdvcmQoKSkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgY2hhcHRl
cnNLZXl3b3JkKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UodmFsdWUsIG1ldGFkYXRhS2V5d29yZCgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IFN0
cmluZyYga2luZCkKLXsKLSAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKLQotICAgIGlmIChp
c1ZhbGlkS2luZEtleXdvcmQoa2luZCkpCi0gICAgICAgIG1fa2luZCA9IGtpbmQ7Ci0gICAgZWxz
ZQotICAgICAgICBtX2tpbmQgPSBzdWJ0aXRsZXNLZXl3b3JkKCk7Ci0KLSAgICBpZiAobV9jbGll
bnQgJiYgb2xkS2luZCAhPSBtX2tpbmQpCi0gICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5k
Q2hhbmdlZCh0aGlzKTsKLX0KLQotdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUodW5zaWduZWQgc2hv
cnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gNC44LjEwLjEyLjUgT24gc2V0
dGluZyB0aGUgbW9kZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBub3QgZWl0aGVyIDAsIDEsIG9yIDIs
Ci0gICAgLy8gdGhlIHVzZXIgYWdlbnQgbXVzdCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIg
ZXhjZXB0aW9uLgotICAgIGlmIChtb2RlID4gVGV4dFRyYWNrOjpTSE9XSU5HKSB7Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKG1fbW9kZSA9PSBzdGF0aWNfY2FzdDxNb2RlPihtb2RlKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyAyCi0gICAgLy8gIC4uLiBOb3RlOiBJZiB0aGUg
bW9kZSBoYWQgYmVlbiBzaG93aW5nIGJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBjaGFuZ2UgaXQgdG8g
c2hvd2luZywgCi0gICAgLy8gZXZlbiB0aG91Z2ggdGhlIHZhbHVlIG9mIG1vZGUgd291bGQgYXBw
ZWFyIG5vdCB0byBjaGFuZ2UuCi0gICAgbV9tb2RlID0gc3RhdGljX2Nhc3Q8TW9kZT4obW9kZSk7
Ci0gICAgaWYgKG1fbW9kZSA9PSBUZXh0VHJhY2s6OlNIT1dJTkcpCi0gICAgICAgIHNldFNob3dp
bmdCeURlZmF1bHQoZmFsc2UpOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7Ci19Ci0KLVRleHRUcmFjazo6TW9kZSBUZXh0
VHJhY2s6Om1vZGUoKSBjb25zdAotewotICAgIC8vIFRoZSB0ZXh0IHRyYWNrICJzaG93aW5nIiBh
bmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9kZXMgcmV0dXJuIFNIT1dJTkcgKG51bWVyaWMgdmFs
dWUgMikKLSAgICBpZiAobV9zaG93aW5nQnlEZWZhdWx0KQotICAgICAgICByZXR1cm4gU0hPV0lO
RzsKLSAgICByZXR1cm4gbV9tb2RlOwotfQotCi1UZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6
OmN1ZXMoKQotewotICAgIC8vIDQuOC4xMC4xMi41IElmIHRoZSB0ZXh0IHRyYWNrIG1vZGUgLi4u
IGlzIG5vdCB0aGUgdGV4dCB0cmFjayBkaXNhYmxlZCBtb2RlLAotICAgIC8vIHRoZW4gdGhlIGN1
ZXMgYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbGl2ZSBUZXh0VHJhY2tDdWVMaXN0IG9iamVjdCAu
Li4KLSAgICAvLyBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0
IGlzIHJldHVybmVkLCB0aGUKLSAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVh
Y2ggdGltZS4KLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNkb20tdGV4dHRyYWNrLWN1ZXMKLSAgICBpZiAobV9tb2RlICE9IFRleHRUcmFj
azo6RElTQUJMRUQpCi0gICAgICAgIHJldHVybiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLVRleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFjazo6YWN0aXZlQ3Vl
cygpIGNvbnN0Ci17Ci0gICAgLy8gNC44LjEwLjEyLjUgSWYgdGhlIHRleHQgdHJhY2sgbW9kZSAu
Li4gaXMgbm90IHRoZSB0ZXh0IHRyYWNrIGRpc2FibGVkIG1vZGUsCi0gICAgLy8gdGhlbiB0aGUg
YWN0aXZlQ3VlcyBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBsaXZlIFRleHRUcmFja0N1ZUxpc3Qg
b2JqZWN0IC4uLgotICAgIC8vIC4uLiB3aG9zZSBhY3RpdmUgZmxhZyB3YXMgc2V0IHdoZW4gdGhl
IHNjcmlwdCBzdGFydGVkLCBpbiB0ZXh0IHRyYWNrIGN1ZQotICAgIC8vIG9yZGVyLiBPdGhlcndp
c2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUK
LSAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KLSAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4
dHRyYWNrLWFjdGl2ZWN1ZXMKLSAgICBpZiAobV9jdWVzICYmIG1fbW9kZSAhPSBUZXh0VHJhY2s6
OkRJU0FCTEVEKQotICAgICAgICByZXR1cm4gbV9jdWVzLT5hY3RpdmVDdWVzKCk7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+IHBycEN1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcnBDdWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IHBycEN1ZTsKLQot
ICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sgQVBJCi0KLSAgICAvLyBUaGUgYWRkQ3VlKGN1
ZSkgbWV0aG9kIG9mIFRleHRUcmFjayBvYmplY3RzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6Ci0KLSAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4gY3VlIGlzIGFscmVh
ZHkgYXNzb2NpYXRlZCB3aXRoIGEgdGV4dCB0cmFjayBvdGhlciB0aGFuIAotICAgIC8vIHRoZSBt
ZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcgotICAgIC8vIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0g
ICAgVGV4dFRyYWNrKiBjdWVUcmFjayA9IGN1ZS0+dHJhY2soKTsKLSAgICBpZiAoY3VlVHJhY2sg
JiYgY3VlVHJhY2sgIT0gdGhpcykgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gMi4gQXNzb2NpYXRlIGN1ZSB3aXRoIHRo
ZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaywgaWYgaXQgaXMgCi0gICAg
Ly8gbm90IGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggYSB0ZXh0IHRyYWNrLgotICAgIGN1ZS0+
c2V0VHJhY2sodGhpcyk7Ci0KLSAgICAvLyAzLiBJZiB0aGUgZ2l2ZW4gY3VlIGlzIGFscmVhZHkg
bGlzdGVkIGluIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dAotICAgIC8vIHRy
YWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMsIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3IgZXhjZXB0aW9uLgotICAgIC8vIDQuIEFkZCBjdWUgdG8gdGhlIG1ldGhvZCdzIFRleHRU
cmFjayBvYmplY3QncyB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMuCi0gICAg
aWYgKCFlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCktPmFkZChjdWUpKSB7Ci0gICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrQWRkQ3VlKHRoaXMsIGN1ZS5n
ZXQoKSk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghY3VlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQotCi0gICAgLy8gVGhlIHJlbW92ZUN1
ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJhY2sgb2JqZWN0cywgd2hlbiBpbnZva2VkLCBtdXN0IHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotCi0gICAgLy8gMS4gSWYgdGhlIGdpdmVuIGN1ZSBpcyBu
b3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgCi0gICAgLy8gb2JqZWN0
J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNlcHRpb24u
Ci0gICAgaWYgKGN1ZS0+dHJhY2soKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gMi4gSWYgdGhl
IGdpdmVuIGN1ZSBpcyBub3QgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgbWV0aG9kJ3MgVGV4dFRy
YWNrIAotICAgIC8vIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vl
cywgdGhlbiB0aHJvdyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9uLgotICAgIC8vIDMuIFJlbW92
ZSBjdWUgZnJvbSB0aGUgbWV0aG9kJ3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0
ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vlcy4KLSAgICBpZiAoIW1fY3VlcyB8fCAhbV9jdWVzLT5yZW1v
dmUoY3VlKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY3VlLT5zZXRUcmFjaygwKTsKLSAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUodGhpcywgY3VlKTsKLX0KLQotdm9p
ZCBUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOwotfQotICAgIAotdm9pZCBUZXh0VHJhY2s6
OmN1ZVdpbGxDaGFuZ2UoVGV4dFRyYWNrQ3VlKiBjdWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0
aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bwot
ICAgIC8vIGJlIHJlLXJlbmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlm
aWNhdGlvbi4uLgotICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUodGhpcywgY3VlKTsK
LX0KLQotdm9pZCBUZXh0VHJhY2s6OmN1ZURpZENoYW5nZShUZXh0VHJhY2tDdWUqIGN1ZSkKLXsK
LSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyAuLi4gYW5kIGFk
ZCBpdCBiYWNrIGFnYWluLgotICAgIG1fY2xpZW50LT50ZXh0VHJhY2tBZGRDdWUodGhpcywgY3Vl
KTsKLX0KLQotVGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjplbnN1cmVUZXh0VHJhY2tDdWVM
aXN0KCkKLXsKLSAgICBpZiAoIW1fY3VlcykKLSAgICAgICAgbV9jdWVzID0gVGV4dFRyYWNrQ3Vl
TGlzdDo6Y3JlYXRlKCk7Ci0KLSAgICByZXR1cm4gbV9jdWVzLmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShy
ZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUZXh0VHJhY2tf
aAotI2RlZmluZSBUZXh0VHJhY2tfaAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi0jaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgVGV4dFRyYWNrOwotY2xhc3MgVGV4dFRyYWNrQ3VlOwot
Y2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKLQotY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4pID0gMDsKLX07Ci0KLWNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFjayhjb250ZXh0LCBjbGll
bnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKLSAgICB9Ci0gICAgdmlydHVh
bCB+VGV4dFRyYWNrKCk7Ci0gICAgCi0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KLSAgICBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQot
Ci0gICAgU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICB2b2lkIHNl
dEtpbmQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
dWJ0aXRsZXNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2FwdGlv
bnNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25z
S2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNoYXB0ZXJzS2V5d29y
ZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1ldGFkYXRhS2V5d29yZCgpOwot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBTdHJpbmcmKTsKLQotICAg
IFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2b2lkIHNldExh
YmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9Ci0KLSAgICBTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0gICAgdm9pZCBzZXRM
YW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsg
fQotCi0gICAgZW51bSBNb2RlIHsgRElTQUJMRUQgPSAwLCBISURERU4gPSAxLCBTSE9XSU5HID0g
MiB9OwotICAgIE1vZGUgbW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TW9kZSh1bnNpZ25lZCBz
aG9ydCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgYm9vbCBzaG93aW5nQnlEZWZhdWx0KCkgY29u
c3QgeyByZXR1cm4gbV9zaG93aW5nQnlEZWZhdWx0OyB9Ci0gICAgdm9pZCBzZXRTaG93aW5nQnlE
ZWZhdWx0KGJvb2wgc2hvd2luZykgeyBtX3Nob3dpbmdCeURlZmF1bHQgPSBzaG93aW5nOyB9Ci0K
LSAgICBlbnVtIFJlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkID0gMCwgTG9hZGluZyA9IDEsIExv
YWRlZCA9IDIsIEZhaWxlZFRvTG9hZCA9IDMgfTsKLSAgICBSZWFkaW5lc3NTdGF0ZSByZWFkaW5l
c3NTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZGluZXNzU3RhdGU7IH0KLSAgICB2b2lkIHNl
dFJlYWRpbmVzc1N0YXRlKFJlYWRpbmVzc1N0YXRlIHN0YXRlKSB7IG1fcmVhZGluZXNzU3RhdGUg
PSBzdGF0ZTsgfQotCi0gICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcygpOwotICAgIFRleHRUcmFj
a0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNs
aWVudCgpIHsgbV9jbGllbnQgPSAwOyB9Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSB7
IHJldHVybiBtX2NsaWVudDsgfQotCi0gICAgdm9pZCBhZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWU+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
KiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgdm9pZCBjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1
ZSopOwotICAgIHZvaWQgY3VlRGlkQ2hhbmdlKFRleHRUcmFja0N1ZSopOwotICAgIAotICAgIHZp
cnR1YWwgdm9pZCBmaXJlQ3VlQ2hhbmdlRXZlbnQoKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGN1ZWNoYW5nZSk7Ci0KLSAgICBlbnVtIFRleHRUcmFja1R5cGUgeyBUcmFj
a0VsZW1lbnQsIEFkZFRyYWNrLCBJbkJhbmQgfTsKLSAgICBUZXh0VHJhY2tUeXBlIHRyYWNrVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tUeXBlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBUZXh0
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
VGV4dFRyYWNrVHlwZSk7Ci0KLSAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwot
Ci1wcml2YXRlOgotICAgIFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3Qo
KTsKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKLSAgICBTdHJpbmcgbV9r
aW5kOwotICAgIFN0cmluZyBtX2xhYmVsOwotICAgIFN0cmluZyBtX2xhbmd1YWdlOwotICAgIE1v
ZGUgbV9tb2RlOwotICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7Ci0gICAgVGV4dFRyYWNr
VHlwZSBtX3RyYWNrVHlwZTsKLSAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlOwot
ICAgIGJvb2wgbV9zaG93aW5nQnlEZWZhdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2su
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbAkocmV2
aXNpb24gMTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLW1vZHVsZSBodG1sIHsKLQot
ICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAotICAgICAg
ICBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFjaywKLSAgICAgICAgRXZlbnRUYXJn
ZXQsCi0gICAgICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgICAgICBKU0N1c3RvbUlzUmVh
Y2hhYmxlCi0gICAgXSBUZXh0VHJhY2sgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGtpbmQ7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7
Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7Ci0KLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRElTQUJMRUQgPSAwOwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBISURERU4gPSAxOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTSE9X
SU5HID0gMjsKLSAgICAgICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IG1vZGUKLSAgICAgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFRleHRUcmFja0N1ZUxpc3QgY3VlczsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFRleHRUcmFja0N1ZUxpc3QgYWN0aXZlQ3VlczsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25jdWVjaGFuZ2U7Ci0KLSAgICAgICAgdm9pZCBhZGRDdWUoaW4gVGV4
dFRyYWNrQ3VlIGN1ZSkKLSAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgdm9pZCByZW1vdmVDdWUoaW4gVGV4dFRyYWNrQ3VlIGN1ZSkKLSAgICAgICAgICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKLQotICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAg
ICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dnQpCi0gICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci19CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCShyZXZpc2lvbiAxMDgxMjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLQotI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgotCi0jaW5jbHVkZSAiRXZlbnQuaCIK
LSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiVGV4dFRyYWNrLmgiCi0j
aW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHN0YXJ0S2V5d29yZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHN0YXJ0LCAoInN0YXJ0IikpOwotICAgIHJldHVybiBzdGFydDsKLX0KLQotc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgbWlkZGxlS2V5d29yZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1pZGRsZSwgKCJtaWRkbGUiKSk7Ci0gICAgcmV0
dXJuIG1pZGRsZTsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW5kS2V5d29yZCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGVuZCwgKCJl
bmQiKSk7Ci0gICAgcmV0dXJuIGVuZDsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
aG9yaXpvbnRhbEtleXdvcmQoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBob3Jpem9udGFsLCAoImhvcml6b250YWwiKSk7Ci0gICAgcmV0dXJuIGhvcml6
b250YWw7Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZlcnRpY2FsS2V5d29yZCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHZlcnRpY2Fs
LCAoInZlcnRpY2FsIikpOwotICAgIHJldHVybiB2ZXJ0aWNhbDsKLX0KLXN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHZlcnRpY2FsbHJLZXl3b3JkKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgdmVydGljYWxsciwgKCJ2ZXJ0aWNhbC1sciIpKTsKLSAg
ICByZXR1cm4gdmVydGljYWxscjsKLX0KLSAgICAKLVRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3Vl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0KQotICAgIDogbV9pZChpZCkKLSAgICAsIG1fc3Rh
cnRUaW1lKHN0YXJ0KQotICAgICwgbV9lbmRUaW1lKGVuZCkKLSAgICAsIG1fY29udGVudChjb250
ZW50KQotICAgICwgbV93cml0aW5nRGlyZWN0aW9uKEhvcml6b250YWwpCi0gICAgLCBtX2xpbmVQ
b3NpdGlvbigtMSkKLSAgICAsIG1fdGV4dFBvc2l0aW9uKDUwKQotICAgICwgbV9jdWVTaXplKDEw
MCkKLSAgICAsIG1fY3VlQWxpZ25tZW50KE1pZGRsZSkKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dChjb250ZXh0KQotICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKLSAgICAsIG1fcGF1c2VP
bkV4aXQocGF1c2VPbkV4aXQpCi0gICAgLCBtX3NuYXBUb0xpbmVzKHRydWUpCi17Ci0gICAgcGFy
c2VTZXR0aW5ncyhzZXR0aW5ncyk7Ci19Ci0KLVRleHRUcmFja0N1ZTo6flRleHRUcmFja0N1ZSgp
Ci17Ci19Ci0KLXZvaWQgVGV4dFRyYWNrQ3VlOjpjdWVXaWxsQ2hhbmdlKCkKLXsKLSAgICBpZiAo
bV90cmFjaykKLSAgICAgICAgbV90cmFjay0+Y3VlV2lsbENoYW5nZSh0aGlzKTsKLX0KLQotdm9p
ZCBUZXh0VHJhY2tDdWU6OmN1ZURpZENoYW5nZSgpCi17Ci0gICAgaWYgKG1fdHJhY2spCi0gICAg
ICAgIG1fdHJhY2stPmN1ZURpZENoYW5nZSh0aGlzKTsKLX0KLQotVGV4dFRyYWNrKiBUZXh0VHJh
Y2tDdWU6OnRyYWNrKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFjay5nZXQoKTsKLX0KLQot
dm9pZCBUZXh0VHJhY2tDdWU6OnNldFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPnRyYWNrKQot
ewotICAgIG1fdHJhY2sgPSB0cmFjazsKLX0KLQotdm9pZCBUZXh0VHJhY2tDdWU6OnNldElkKGNv
bnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYgKG1faWQgPT0gaWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGN1ZVdpbGxDaGFuZ2UoKTsKLSAgICBtX2lkID0gaWQ7Ci0gICAgY3VlRGlkQ2hhbmdl
KCk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRTdGFydFRpbWUoZG91YmxlIHZhbHVlKQot
ewotICAgIGlmIChtX3N0YXJ0VGltZSA9PSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGN1ZVdpbGxDaGFuZ2UoKTsKLSAgICBtX3N0YXJ0VGltZSA9IHZhbHVlOwotICAgIGN1ZURp
ZENoYW5nZSgpOwotfQotICAgIAotdm9pZCBUZXh0VHJhY2tDdWU6OnNldEVuZFRpbWUoZG91Ymxl
IHZhbHVlKQotewotICAgIGlmIChtX2VuZFRpbWUgPT0gdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBjdWVXaWxsQ2hhbmdlKCk7Ci0gICAgbV9lbmRUaW1lID0gdmFsdWU7Ci0gICAg
Y3VlRGlkQ2hhbmdlKCk7Ci19Ci0gICAgCi12b2lkIFRleHRUcmFja0N1ZTo6c2V0UGF1c2VPbkV4
aXQoYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAobV9wYXVzZU9uRXhpdCA9PSB2YWx1ZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGN1ZVdpbGxDaGFuZ2UoKTsKLSAgICBtX3BhdXNlT25FeGl0
ID0gdmFsdWU7Ci0gICAgY3VlRGlkQ2hhbmdlKCk7Ci19Ci0KLWNvbnN0IFN0cmluZyYgVGV4dFRy
YWNrQ3VlOjpkaXJlY3Rpb24oKSBjb25zdAotewotICAgIHN3aXRjaCAobV93cml0aW5nRGlyZWN0
aW9uKSB7Ci0gICAgY2FzZSBIb3Jpem9udGFsOiAKLSAgICAgICAgcmV0dXJuIGhvcml6b250YWxL
ZXl3b3JkKCk7Ci0gICAgY2FzZSBWZXJ0aWNhbEdyb3dpbmdMZWZ0OgotICAgICAgICByZXR1cm4g
dmVydGljYWxLZXl3b3JkKCk7Ci0gICAgY2FzZSBWZXJ0aWNhbEdyb3dpbmdSaWdodDoKLSAgICAg
ICAgcmV0dXJuIHZlcnRpY2FsbHJLZXl3b3JkKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0K
LX0KLQotdm9pZCBUZXh0VHJhY2tDdWU6OnNldERpcmVjdGlvbihjb25zdCBTdHJpbmcmIHZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtdmlkZW8tZWxlbWVudC5odG1s
I2RvbS10ZXh0dHJhY2tjdWUtZGlyZWN0aW9uCi0gICAgLy8gT24gc2V0dGluZywgdGhlIHRleHQg
dHJhY2sgY3VlIHdyaXRpbmcgZGlyZWN0aW9uIG11c3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBnaXZl
biAKLSAgICAvLyBpbiB0aGUgZmlyc3QgY2VsbCBvZiB0aGUgcm93IGluIHRoZSB0YWJsZSBhYm92
ZSB3aG9zZSBzZWNvbmQgY2VsbCBpcyBhIAotICAgIC8vIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZv
ciB0aGUgbmV3IHZhbHVlLCBpZiBhbnkuIElmIG5vbmUgb2YgdGhlIHZhbHVlcyBtYXRjaCwgdGhl
bgotICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgaW5zdGVhZCB0aHJvdyBhIFN5bnRheEVycm9y
IGV4Y2VwdGlvbi4KLSAgICAKLSAgICBEaXJlY3Rpb24gZGlyZWN0aW9uID0gbV93cml0aW5nRGly
ZWN0aW9uOwotICAgIGlmICh2YWx1ZSA9PSBob3Jpem9udGFsS2V5d29yZCgpKQotICAgICAgICBk
aXJlY3Rpb24gPSBIb3Jpem9udGFsOwotICAgIGVsc2UgaWYgKHZhbHVlID09IHZlcnRpY2FsS2V5
d29yZCgpKQotICAgICAgICBkaXJlY3Rpb24gPSBWZXJ0aWNhbEdyb3dpbmdMZWZ0OwotICAgIGVs
c2UgaWYgKHZhbHVlID09IHZlcnRpY2FsbHJLZXl3b3JkKCkpCi0gICAgICAgIGRpcmVjdGlvbiA9
IFZlcnRpY2FsR3Jvd2luZ1JpZ2h0OwotICAgIGVsc2UKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgIAotICAgIGlmIChkaXJlY3Rpb24gPT0gbV93cml0aW5nRGlyZWN0aW9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjdWVXaWxsQ2hhbmdlKCk7Ci0gICAgbV93cml0aW5nRGlyZWN0aW9u
ID0gZGlyZWN0aW9uOwotICAgIGN1ZURpZENoYW5nZSgpOwotfQotCi12b2lkIFRleHRUcmFja0N1
ZTo6c2V0U25hcFRvTGluZXMoYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAobV9zbmFwVG9MaW5lcyA9
PSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGN1ZVdpbGxDaGFuZ2UoKTsKLSAg
ICBtX3NuYXBUb0xpbmVzID0gdmFsdWU7Ci0gICAgY3VlRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQg
VGV4dFRyYWNrQ3VlOjpzZXRMaW5lUG9zaXRpb24oaW50IHBvc2l0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtdmlkZW8tZWxlbWVudC5odG1sI2RvbS10ZXh0dHJhY2tj
dWUtbGluZXBvc2l0aW9uCi0gICAgLy8gT24gc2V0dGluZywgaWYgdGhlIHRleHQgdHJhY2sgY3Vl
IHNuYXAtdG8tbGluZXMgZmxhZyBpcyBub3Qgc2V0LCBhbmQgdGhlIG5ldwotICAgIC8vIHZhbHVl
IGlzIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiAxMDAsIHRoZW4gdGhyb3cgYW4gSW5kZXhTaXpl
RXJyb3IgZXhjZXB0aW9uLgotICAgIGlmICghbV9zbmFwVG9MaW5lcyAmJiAocG9zaXRpb24gPCAw
IHx8IHBvc2l0aW9uID4gMTAwKSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0
IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgaWYgKG1fbGlu
ZVBvc2l0aW9uID09IHBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY3VlV2ls
bENoYW5nZSgpOwotICAgIG1fbGluZVBvc2l0aW9uID0gcG9zaXRpb247IAotICAgIGN1ZURpZENo
YW5nZSgpOwotfQotCi12b2lkIFRleHRUcmFja0N1ZTo6c2V0VGV4dFBvc2l0aW9uKGludCBwb3Np
dGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXZpZGVvLWVsZW1lbnQu
aHRtbCNkb20tdGV4dHRyYWNrY3VlLWxpbmVwb3NpdGlvbgotICAgIC8vIE9uIHNldHRpbmcsIGlm
IHRoZSBuZXcgdmFsdWUgaXMgbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIDEwMCwgdGhlbiB0aHJv
dyBhbiBJbmRleFNpemVFcnJvciBleGNlcHRpb24uCi0gICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhl
IHRleHQgdHJhY2sgY3VlIHRleHQgcG9zaXRpb24gdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBpZiAo
cG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID4gMTAwKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0la
RV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gT3RoZXJ3aXNlLCBz
ZXQgdGhlIHRleHQgdHJhY2sgY3VlIGxpbmUgcG9zaXRpb24gdG8gdGhlIG5ldyB2YWx1ZS4KLSAg
ICBpZiAobV90ZXh0UG9zaXRpb24gPT0gcG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBjdWVXaWxsQ2hhbmdlKCk7Ci0gICAgbV90ZXh0UG9zaXRpb24gPSBwb3NpdGlvbjsgCi0g
ICAgY3VlRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRTaXplKGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtdmlkZW8tZWxlbWVudC5o
dG1sI2RvbS10ZXh0dHJhY2tjdWUtc2l6ZQotICAgIC8vIE9uIHNldHRpbmcsIGlmIHRoZSBuZXcg
dmFsdWUgaXMgbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIDEwMCwgdGhlbiB0aHJvdyBhbiBJbmRl
eFNpemVFcnJvcgotICAgIC8vIGV4Y2VwdGlvbi4gT3RoZXJ3aXNlLCBzZXQgdGhlIHRleHQgdHJh
Y2sgY3VlIHNpemUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+
IDEwMCkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5l
IHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgaWYgKG1fY3VlU2l6ZSA9PSBzaXplKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY3VlV2lsbENoYW5nZSgpOwotICAgIG1fY3VlU2l6
ZSA9IHNpemU7Ci0gICAgY3VlRGlkQ2hhbmdlKCk7Ci19Ci0KLWNvbnN0IFN0cmluZyYgVGV4dFRy
YWNrQ3VlOjphbGlnbm1lbnQoKSBjb25zdAotewotICAgIHN3aXRjaCAobV9jdWVBbGlnbm1lbnQp
IHsKLSAgICBjYXNlIFN0YXJ0OgotICAgICAgICByZXR1cm4gc3RhcnRLZXl3b3JkKCk7Ci0gICAg
Y2FzZSBNaWRkbGU6Ci0gICAgICAgIHJldHVybiBtaWRkbGVLZXl3b3JkKCk7Ci0gICAgY2FzZSBF
bmQ6Ci0gICAgICAgIHJldHVybiBlbmRLZXl3b3JkKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
IH0KLX0KLQotdm9pZCBUZXh0VHJhY2tDdWU6OnNldEFsaWdubWVudChjb25zdCBTdHJpbmcmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtdmlkZW8tZWxlbWVudC5o
dG1sI2RvbS10ZXh0dHJhY2tjdWUtYWxpZ25tZW50Ci0gICAgLy8gT24gc2V0dGluZywgdGhlIHRl
eHQgdHJhY2sgY3VlIGFsaWdubWVudCBtdXN0IGJlIHNldCB0byB0aGUgdmFsdWUgZ2l2ZW4gaW4g
dGhlIAotICAgIC8vIGZpcnN0IGNlbGwgb2YgdGhlIHJvdyBpbiB0aGUgdGFibGUgYWJvdmUgd2hv
c2Ugc2Vjb25kIGNlbGwgaXMgYSBjYXNlLXNlbnNpdGl2ZQotICAgIC8vIG1hdGNoIGZvciB0aGUg
bmV3IHZhbHVlLCBpZiBhbnkuIElmIG5vbmUgb2YgdGhlIHZhbHVlcyBtYXRjaCwgdGhlbiB0aGUg
dXNlcgotICAgIC8vIGFnZW50IG11c3QgaW5zdGVhZCB0aHJvdyBhIFN5bnRheEVycm9yIGV4Y2Vw
dGlvbi4KLSAgICAKLSAgICBBbGlnbm1lbnQgYWxpZ25tZW50ID0gbV9jdWVBbGlnbm1lbnQ7Ci0g
ICAgaWYgKHZhbHVlID09IHN0YXJ0S2V5d29yZCgpKQotICAgICAgICBhbGlnbm1lbnQgPSBTdGFy
dDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBtaWRkbGVLZXl3b3JkKCkpCi0gICAgICAgIGFsaWdu
bWVudCA9IE1pZGRsZTsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBlbmRLZXl3b3JkKCkpCi0gICAg
ICAgIGFsaWdubWVudCA9IEVuZDsKLSAgICBlbHNlCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAKLSAgICBpZiAoYWxpZ25tZW50ID09IG1fY3VlQWxpZ25tZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjdWVXaWxsQ2hhbmdlKCk7Ci0gICAgbV9jdWVBbGlnbm1lbnQgPSBhbGlnbm1l
bnQ7Ci0gICAgY3VlRGlkQ2hhbmdlKCk7Ci19Ci0gICAgCi12b2lkIFRleHRUcmFja0N1ZTo6c2V0
VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKG1fY29udGVudCA9PSB0ZXh0KQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY3VlV2lsbENoYW5nZSgpOwotICAgIC8vIENsZWFy
IHRoZSBkb2N1bWVudCBmcmFnbWVudCBidXQgZG9uJ3QgYm90aGVyIHRvIGNyZWF0ZSBpdCBhZ2Fp
biBqdXN0IHlldCBhcyB3ZSBjYW4gZG8gdGhhdAotICAgIC8vIHdoZW4gaXQgaXMgcmVxdWVzdGVk
LgotICAgIG1fZG9jdW1lbnRGcmFnbWVudCA9IDA7Ci0gICAgbV9jb250ZW50ID0gdGV4dDsKLSAg
ICBjdWVEaWRDaGFuZ2UoKTsKLX0KLQotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0
VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCi17Ci0gICAgaWYgKCFtX2RvY3VtZW50RnJhZ21lbnQp
Ci0gICAgICAgIG1fZG9jdW1lbnRGcmFnbWVudCA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKDAsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4
dChtX2NvbnRlbnQpOwotCi0gICAgcmV0dXJuIG1fZG9jdW1lbnRGcmFnbWVudDsKLX0KLQotdm9p
ZCBUZXh0VHJhY2tDdWU6OnNldEN1ZUhUTUwoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCkKLXsKLSAgICBtX2RvY3VtZW50RnJhZ21lbnQgPSBmcmFnbWVudDsKLX0KLQotYm9v
bCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKLXsKLSAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0
cmFjaygpICYmIHRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEOwotfQotCi12
b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCi17Ci0gICAgbV9pc0Fj
dGl2ZSA9IGFjdGl2ZTsKLQotICAgIC8vIFdoZW4gYSBUZXh0VHJhY2sncyBtb2RlIGlzIGRpc2Fi
bGVkOiBObyBjdWVzIGFyZSBhY3RpdmUsIG5vIGV2ZW50cyBhcmUgZmlyZWQgLi4uCi0gICAgaWYg
KCF0cmFjaygpIHx8IHRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6OkRJU0FCTEVEKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoYWN0aXZl
KQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVy
RXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKLSAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBl
Yyk7Ci0KLSAgICBpZiAobV90cmFjaykKLSAgICAgICAgbV90cmFjay0+ZmlyZUN1ZUNoYW5nZUV2
ZW50KCk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrQ3VlOjpwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmlu
ZyYgaW5wdXQpCi17Ci0gICAgLy8gNC44LjEwLjEzLjMgUGFyc2UgdGhlIFdlYlZUVCBzZXR0aW5n
cy4KLSAgICAvLyAxIC0gSW5pdGlhbCBzZXR1cC4KLSAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7
Ci0gICAgd2hpbGUgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAgLy8gRGlz
Y2FyZCBhbnkgc3BhY2UgY2hhcmFjdGVycyBiZXR3ZWVuIG9yIGFmdGVyIHNldHRpbmdzIChub3Qg
aW4gdGhlIHNwZWMsIGJ1dCB3ZSB0aGluayBpdCBzaG91bGQgYmUpLgotICAgICAgICB3aGlsZSAo
cG9zaXRpb24gPCBpbnB1dC5sZW5ndGgoKSAmJiBXZWJWVFRQYXJzZXI6OmlzQVNwYWNlKGlucHV0
W3Bvc2l0aW9uXSkpCi0gICAgICAgICAgICBwb3NpdGlvbisrOwotCi0gICAgICAgIC8vIDItNCBT
ZXR0aW5ncyAtIGdldCB0aGUgbmV4dCBjaGFyYWN0ZXIgcmVwcmVzZW50aW5nIGEgc2V0dGluZ3Mu
Ci0gICAgICAgIGNoYXIgc2V0dGluZyA9IGlucHV0W3Bvc2l0aW9uKytdOwotICAgICAgICBpZiAo
cG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgLy8gNS03IC0gSWYgdGhlIGNoYXJhY3RlciBhdCBwb3NpdGlvbiBpcyBub3QgJzonLCBzZXQg
c2V0dGluZyB0byBlbXB0eSBzdHJpbmcuCi0gICAgICAgIGlmIChpbnB1dFtwb3NpdGlvbisrXSAh
PSAnOicpCi0gICAgICAgICAgICBzZXR0aW5nID0gJ1wwJzsKLSAgICAgICAgaWYgKHBvc2l0aW9u
ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIDgg
LSBHYXRoZXIgc2V0dGluZ3MgYmFzZWQgb24gdmFsdWUgb2Ygc2V0dGluZy4KLSAgICAgICAgc3dp
dGNoIChzZXR0aW5nKSB7Ci0gICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgLy8gMS0zIC0gQ29sbGVjdCB0aGUgbmV4dCB3b3JkIGFuZCBzZXQgdGhlIHdyaXRpbmcg
ZGlyZWN0aW9uIGFjY29yZGluZ2x5LgotICAgICAgICAgICAgU3RyaW5nIHdyaXRpbmdEaXJlY3Rp
b24gPSBXZWJWVFRQYXJzZXI6OmNvbGxlY3RXb3JkKGlucHV0LCAmcG9zaXRpb24pOwotICAgICAg
ICAgICAgaWYgKHdyaXRpbmdEaXJlY3Rpb24gPT0gdmVydGljYWxLZXl3b3JkKCkpCi0gICAgICAg
ICAgICAgICAgbV93cml0aW5nRGlyZWN0aW9uID0gVmVydGljYWxHcm93aW5nTGVmdDsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHdyaXRpbmdEaXJlY3Rpb24gPT0gdmVydGljYWxscktleXdvcmQoKSkK
LSAgICAgICAgICAgICAgICBtX3dyaXRpbmdEaXJlY3Rpb24gPSBWZXJ0aWNhbEdyb3dpbmdSaWdo
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdMJzoK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIDEtMiAtIENvbGxlY3QgY2hhcnMgdGhhdCBh
cmUgZWl0aGVyICctJywgJyUnLCBvciBhIGRpZ2l0LgotICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciBsaW5lUG9zaXRpb25CdWlsZGVyOwotICAgICAgICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgaW5w
dXQubGVuZ3RoKCkgJiYgKGlucHV0W3Bvc2l0aW9uXSA9PSAnLScgfHwgaW5wdXRbcG9zaXRpb25d
ID09ICclJyB8fCBpc0FTQ0lJRGlnaXQoaW5wdXRbcG9zaXRpb25dKSkpCi0gICAgICAgICAgICAg
ICAgbGluZVBvc2l0aW9uQnVpbGRlci5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwotICAgICAg
ICAgICAgaWYgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkgJiYgIVdlYlZUVFBhcnNlcjo6aXNB
U3BhY2UoaW5wdXRbcG9zaXRpb25dKSkKLSAgICAgICAgICAgICAgICBnb3RvIE90aGVyd2lzZTsK
LSAgICAgICAgICAgIFN0cmluZyBsaW5lUG9zaXRpb24gPSBsaW5lUG9zaXRpb25CdWlsZGVyLnRv
U3RyaW5nKCk7Ci0KLSAgICAgICAgICAgIC8vIDMtNSAtIElmIHRoZXJlIGlzIG5vdCBhdCBsZWFz
dCBvbmUgZGlnaXQgY2hhcmFjdGVyLAotICAgICAgICAgICAgLy8gICAgICAgYSAnLScgb2NjdXJz
IGFueXdoZXJlIG90aGVyIHRoYW4gdGhlIGZyb250LCBvcgotICAgICAgICAgICAgLy8gICAgICAg
YSAnJScgb2NjdXJzIGFueXdoZXJlIG90aGVyIHRoYW4gdGhlIGVuZCwgdGhlbgotICAgICAgICAg
ICAgLy8gICAgICAgaWdub3JlIHRoaXMgc2V0dGluZyBhbmQga2VlcCBsb29raW5nLgotICAgICAg
ICAgICAgaWYgKGxpbmVQb3NpdGlvbi5maW5kKCctJywgMSkgIT0gbm90Rm91bmQgfHwgbGluZVBv
c2l0aW9uLnJldmVyc2VGaW5kKCIlIiwgbGluZVBvc2l0aW9uLmxlbmd0aCgpIC0gMikgIT0gbm90
Rm91bmQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIDYgLSBJZiB0
aGUgZmlyc3QgY2hhciBpcyBhICctJyBhbmQgdGhlIGxhc3QgY2hhciBpcyBhICclJywgaWdub3Jl
IGFuZCBrZWVwIGxvb2tpbmcuCi0gICAgICAgICAgICBpZiAobGluZVBvc2l0aW9uWzBdID09ICct
JyAmJiBsaW5lUG9zaXRpb25bbGluZVBvc2l0aW9uLmxlbmd0aCgpIC0gMV0gPT0gJyUnKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyA3IC0gSW50ZXJwcmV0IGFzIG51
bWJlciAodG9JbnQgaWdub3JlcyB0cmFpbGluZyBub24tZGlnaXQgY2hhcmFjdGVycywKLSAgICAg
ICAgICAgIC8vICAgICBzdWNoIGFzIGEgcG9zc2libGUgJyUnKS4KLSAgICAgICAgICAgIGJvb2wg
dmFsaWROdW1iZXI7Ci0gICAgICAgICAgICBpbnQgbnVtYmVyID0gbGluZVBvc2l0aW9uLnRvSW50
KCZ2YWxpZE51bWJlcik7Ci0gICAgICAgICAgICBpZiAoIXZhbGlkTnVtYmVyKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyA4IC0gSWYgdGhlIGxhc3QgY2hhciBpcyBh
ICclJyBhbmQgdGhlIHZhbHVlIGlzIG5vdCBiZXR3ZWVuIDAgYW5kIDEwMCwgaWdub3JlIGFuZCBr
ZWVwIGxvb2tpbmcuCi0gICAgICAgICAgICBpZiAobGluZVBvc2l0aW9uW2xpbmVQb3NpdGlvbi5s
ZW5ndGgoKSAtIDFdID09ICclJykgewotICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPCAwIHx8
IG51bWJlciA+IDEwMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
ICAgICAvLyAxMCAtIElmICclJyB0aGVuIHNldCBzbmFwLXRvLWxpbmVzIGZsYWcgdG8gZmFsc2Uu
Ci0gICAgICAgICAgICAgICAgbV9zbmFwVG9MaW5lcyA9IGZhbHNlOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyA5IC0gU2V0IGN1ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBudW1iZXIg
Zm91bmQuCi0gICAgICAgICAgICBtX2xpbmVQb3NpdGlvbiA9IG51bWJlcjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdUJzoKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgIC8vIDEtMiAtIENvbGxlY3QgY2hhcmFjdGVycyB0aGF0IGFyZSBkaWdpdHMu
Ci0gICAgICAgICAgICBTdHJpbmcgdGV4dFBvc2l0aW9uID0gV2ViVlRUUGFyc2VyOjpjb2xsZWN0
RGlnaXRzKGlucHV0LCAmcG9zaXRpb24pOwotICAgICAgICAgICAgaWYgKHBvc2l0aW9uID49IGlu
cHV0Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyAz
IC0gQ2hhcmFjdGVyIGF0IGVuZCBtdXN0IGJlICclJywgb3RoZXJ3aXNlIGlnbm9yZSBhbmQga2Vl
cCBsb29raW5nLgotICAgICAgICAgICAgaWYgKGlucHV0W3Bvc2l0aW9uKytdICE9ICclJykKLSAg
ICAgICAgICAgICAgICBnb3RvIE90aGVyd2lzZTsKLQotICAgICAgICAgICAgLy8gNC02IC0gRW5z
dXJlIG5vIG90aGVyIGNoYXJzIGluIHRoaXMgc2V0dGluZyBhbmQgc2V0dGluZyBpcyBub3QgZW1w
dHkuCi0gICAgICAgICAgICBpZiAocG9zaXRpb24gPCBpbnB1dC5sZW5ndGgoKSAmJiAhV2ViVlRU
UGFyc2VyOjppc0FTcGFjZShpbnB1dFtwb3NpdGlvbl0pKQotICAgICAgICAgICAgICAgIGdvdG8g
T3RoZXJ3aXNlOwotICAgICAgICAgICAgaWYgKHRleHRQb3NpdGlvbi5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIDctOCAtIEludGVycHJldCBhcyBu
dW1iZXIgYW5kIG1ha2Ugc3VyZSBpdCBpcyBiZXR3ZWVuIDAgYW5kIDEwMAotICAgICAgICAgICAg
Ly8gKHRvSW50IGlnbm9yZXMgdHJhaWxpbmcgbm9uLWRpZ2l0IGNoYXJhY3RlcnMsIHN1Y2ggYXMg
YSBwb3NzaWJsZSAnJScpLgotICAgICAgICAgICAgYm9vbCB2YWxpZE51bWJlcjsKLSAgICAgICAg
ICAgIGludCBudW1iZXIgPSB0ZXh0UG9zaXRpb24udG9JbnQoJnZhbGlkTnVtYmVyKTsKLSAgICAg
ICAgICAgIGlmICghdmFsaWROdW1iZXIpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBpZiAobnVtYmVyIDwgMCB8fCBudW1iZXIgPiAxMDApCi0gICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAvLyA5IC0gU2V0IGN1ZSB0ZXh0IHBvc2l0aW9uIHRvIHRoZSBudW1i
ZXIgZm91bmQuCi0gICAgICAgICAgICBtX3RleHRQb3NpdGlvbiA9IG51bWJlcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdTJzoKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgIC8vIDEtMiAtIENvbGxlY3QgY2hhcmFjdGVycyB0aGF0IGFyZSBkaWdp
dHMuCi0gICAgICAgICAgICBTdHJpbmcgY3VlU2l6ZSA9IFdlYlZUVFBhcnNlcjo6Y29sbGVjdERp
Z2l0cyhpbnB1dCwgJnBvc2l0aW9uKTsKLSAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSBpbnB1
dC5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLy8gMyAt
IENoYXJhY3RlciBhdCBlbmQgbXVzdCBiZSAnJScsIG90aGVyd2lzZSBpZ25vcmUgYW5kIGtlZXAg
bG9va2luZy4KLSAgICAgICAgICAgIGlmIChpbnB1dFtwb3NpdGlvbisrXSAhPSAnJScpCi0gICAg
ICAgICAgICAgICAgZ290byBPdGhlcndpc2U7Ci0KLSAgICAgICAgICAgIC8vIDQtNiAtIEVuc3Vy
ZSBubyBvdGhlciBjaGFycyBpbiB0aGlzIHNldHRpbmcgYW5kIHNldHRpbmcgaXMgbm90IGVtcHR5
LgotICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkgJiYgIVdlYlZUVFBh
cnNlcjo6aXNBU3BhY2UoaW5wdXRbcG9zaXRpb25dKSkKLSAgICAgICAgICAgICAgICBnb3RvIE90
aGVyd2lzZTsKLSAgICAgICAgICAgIGlmIChjdWVTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgLy8gNy04IC0gSW50ZXJwcmV0IGFzIG51bWJlciBh
bmQgbWFrZSBzdXJlIGl0IGlzIGJldHdlZW4gMCBhbmQgMTAwLgotICAgICAgICAgICAgYm9vbCB2
YWxpZE51bWJlcjsKLSAgICAgICAgICAgIGludCBudW1iZXIgPSBjdWVTaXplLnRvSW50KCZ2YWxp
ZE51bWJlcik7Ci0gICAgICAgICAgICBpZiAoIXZhbGlkTnVtYmVyKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgaWYgKG51bWJlciA8IDAgfHwgbnVtYmVyID4gMTAwKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyA5IC0gU2V0IGN1ZSBzaXplIHRv
IHRoZSBudW1iZXIgZm91bmQuCi0gICAgICAgICAgICBtX2N1ZVNpemUgPSBudW1iZXI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnQSc6Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyAxLTQgLSBDb2xsZWN0IHRoZSBuZXh0IHdvcmQgYW5kIHNl
dCB0aGUgY3VlIGFsaWdubWVudCBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgIFN0cmluZyBjdWVB
bGlnbm1lbnQgPSBXZWJWVFRQYXJzZXI6OmNvbGxlY3RXb3JkKGlucHV0LCAmcG9zaXRpb24pOwot
ICAgICAgICAgICAgaWYgKGN1ZUFsaWdubWVudCA9PSBzdGFydEtleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICBtX2N1ZUFsaWdubWVudCA9IFN0YXJ0OwotICAgICAgICAgICAgZWxzZSBpZiAoY3Vl
QWxpZ25tZW50ID09IG1pZGRsZUtleXdvcmQoKSkKLSAgICAgICAgICAgICAgICBtX2N1ZUFsaWdu
bWVudCA9IE1pZGRsZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN1ZUFsaWdubWVudCA9PSBlbmRL
ZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAgbV9jdWVBbGlnbm1lbnQgPSBFbmQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRpbnVl
OwotCi1PdGhlcndpc2U6Ci0gICAgICAgIC8vIENvbGxlY3QgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0
ZXJzIHRoYXQgYXJlIG5vdCBzcGFjZSBjaGFyYWN0ZXJzIGFuZCBkaXNjYXJkIHRoZW0uCi0gICAg
ICAgIFdlYlZUVFBhcnNlcjo6Y29sbGVjdFdvcmQoaW5wdXQsICZwb3NpdGlvbik7Ci0gICAgfQot
fQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZTo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0VHJhY2tDdWU7
Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmV2ZW50VGFyZ2V0RGF0YSgp
Ci17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRh
KiBUZXh0VHJhY2tDdWU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24gMTA4MTI2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFRleHRUcmFja0N1ZV9oCi0jZGVmaW5lIFRleHRUcmFja0N1ZV9o
Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgIlRleHRUcmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBE
b2N1bWVudEZyYWdtZW50OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFRl
eHRUcmFjazsKLQotY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRy
YWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIGlk
LCBzdGFydCwgZW5kLCBjb250ZW50LCBzZXR0aW5ncywgcGF1c2VPbkV4aXQpKTsKLSAgICB9Ci0g
ICAgCi0gICAgZW51bSBEaXJlY3Rpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbEdyb3dpbmdMZWZ0
LCBWZXJ0aWNhbEdyb3dpbmdSaWdodCB9OwotICAgIGVudW0gQWxpZ25tZW50IHsgU3RhcnQsIE1p
ZGRsZSwgRW5kIH07Ci0KLSAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDdWUoKTsKLQotICAgIFRleHRU
cmFjayogdHJhY2soKSBjb25zdDsKLSAgICB2b2lkIHNldFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRy
YWNrPik7Ci0KLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQot
ICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBkb3VibGUgc3RhcnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3Vi
bGUpOwotCi0gICAgZG91YmxlIGVuZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2VuZFRpbWU7IH0K
LSAgICB2b2lkIHNldEVuZFRpbWUoZG91YmxlKTsKLQotICAgIGJvb2wgcGF1c2VPbkV4aXQoKSBj
b25zdCB7IHJldHVybiBtX3BhdXNlT25FeGl0OyB9Ci0gICAgdm9pZCBzZXRQYXVzZU9uRXhpdChi
b29sKTsKLQotICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgYm9vbCBz
bmFwVG9MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcFRvTGluZXM7IH0KLSAgICB2b2lkIHNl
dFNuYXBUb0xpbmVzKGJvb2wpOwotCi0gICAgaW50IGxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZVBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRMaW5lUG9zaXRpb24oaW50LCBFeGNl
cHRpb25Db2RlJik7Ci0KLSAgICBpbnQgdGV4dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0UG9zaXRpb247IH0KLSAgICB2b2lkIHNldFRleHRQb3NpdGlvbihpbnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdWVTaXplOyB9Ci0gICAg
dm9pZCBzZXRTaXplKGludCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgY29uc3QgU3RyaW5nJiBh
bGlnbm1lbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldEFsaWdubWVudChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnQ7IH0KLSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpOwotICAgIHZvaWQgc2V0
Q3VlSFRNTChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+KTsKLQotICAgIGJvb2wgaXNBY3Rp
dmUoKTsKLSAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOwotICAgIAotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0KLSAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVudGVyKTsKLSAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGV4aXQpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0
VHJhY2tDdWU+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+OjpkZXJl
ZjsKLQotcHJvdGVjdGVkOgotCi0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKTsKLQotcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0
KTsKLQotICAgIHZvaWQgcGFyc2VTZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGN1
ZVdpbGxDaGFuZ2UoKTsKLSAgICB2b2lkIGN1ZURpZENoYW5nZSgpOwotICAgIAotICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIAotICAgIFN0cmluZyBtX2lkOwotICAg
IGRvdWJsZSBtX3N0YXJ0VGltZTsKLSAgICBkb3VibGUgbV9lbmRUaW1lOwotICAgIFN0cmluZyBt
X2NvbnRlbnQ7Ci0gICAgRGlyZWN0aW9uIG1fd3JpdGluZ0RpcmVjdGlvbjsKLSAgICBpbnQgbV9s
aW5lUG9zaXRpb247Ci0gICAgaW50IG1fdGV4dFBvc2l0aW9uOwotICAgIGludCBtX2N1ZVNpemU7
Ci0gICAgQWxpZ25tZW50IG1fY3VlQWxpZ25tZW50OwotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBtX2RvY3VtZW50RnJhZ21lbnQ7Ci0gICAgUmVmUHRyPFRleHRUcmFjaz4gbV90cmFjazsK
LQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLSAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLSAgICBib29sIG1faXNB
Y3RpdmU7Ci0gICAgYm9vbCBtX3BhdXNlT25FeGl0OwotICAgIGJvb2wgbV9zbmFwVG9MaW5lczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5pZGwJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi1tb2R1bGUgaHRtbCB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKLSAgICAgICAgVjhFbmFibGVkQXRSdW50aW1l
PXdlYmtpdFZpZGVvVHJhY2ssCi0gICAgICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGlkLCBpbiBkb3VibGUgc3RhcnRUaW1lLCBp
biBkb3VibGUgZW5kVGltZSwgaW4gRE9NU3RyaW5nIHRleHQsIGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBzZXR0aW5ncywgaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gYm9vbGVhbiBwYXVzZU9uRXhpdCksCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCi0gICAgICAgIEV2ZW50VGFyZ2V0LAotICAgICAgICBKU0N1c3RvbU1h
cmtGdW5jdGlvbiwKLSAgICAgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQotICAgIF0gVGV4dFRyYWNr
Q3VlIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayB0cmFjazsKLQotICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwotICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIHN0
YXJ0VGltZTsKLSAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBlbmRUaW1lOwotICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiBwYXVzZU9uRXhpdDsKLQotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGRpcmVjdGlvbgotICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gc25hcFRvTGluZXM7Ci0gICAgICAgIGF0dHJpYnV0ZSBs
b25nIGxpbmVQb3NpdGlvbgotICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKLSAgICAgICAgYXR0cmlidXRlIGxvbmcgdGV4dFBvc2l0aW9uCi0gICAgICAgICAgICBzZXR0
ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzaXplCi0g
ICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGFsaWdubWVudAotICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKLQotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHQ7Ci0gICAgICAgIERv
Y3VtZW50RnJhZ21lbnQgZ2V0Q3VlQXNIVE1MKCk7Ci0gICAgICAgIAotICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmVudGVyOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmV4aXQ7Ci0gICAgICAgIAotICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAg
ICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dnQpCi0gICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci0KLX0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5jcHAJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
Ci0jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVRleHRUcmFja0N1ZUxpc3Q6OlRleHRUcmFja0N1ZUxpc3QoKQotewotfQotCi11bnNpZ25lZCBs
b25nIFRleHRUcmFja0N1ZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGlz
dC5zaXplKCk7Ci19Ci0KLVRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6aXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gbV9saXN0W2luZGV4XS5nZXQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotVGV4
dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYgaWQp
IGNvbnN0Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKG1fbGlzdFtpXS0+aWQoKSA9PSBpZCkKLSAgICAgICAgICAgIHJldHVy
biBtX2xpc3RbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1UZXh0VHJhY2tD
dWVMaXN0KiBUZXh0VHJhY2tDdWVMaXN0OjphY3RpdmVDdWVzKCkKLXsKLSAgICBpZiAoIW1fYWN0
aXZlQ3VlcykKLSAgICAgICAgbV9hY3RpdmVDdWVzID0gY3JlYXRlKCk7Ci0KLSAgICBtX2FjdGl2
ZUN1ZXMtPmNsZWFyKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlID0gbV9saXN0W2ldOwot
ICAgICAgICBpZiAoY3VlLT5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9hY3RpdmVDdWVzLT5h
ZGQoY3VlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fYWN0aXZlQ3Vlcy5nZXQoKTsKLX0KLQotYm9v
bCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKLXsK
LSAgICByZXR1cm4gYWRkKGN1ZSwgMCwgbV9saXN0LnNpemUoKSk7Ci19Ci0KLWJvb2wgVGV4dFRy
YWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBwcnBDdWUsIHNpemVfdCBz
dGFydCwgc2l6ZV90IGVuZCkKLXsKLSAgICBBU1NFUlQoc3RhcnQgPD0gbV9saXN0LnNpemUoKSk7
Ci0gICAgQVNTRVJUKGVuZCA8PSBtX2xpc3Quc2l6ZSgpKTsKLQotICAgIC8vIE1haW50YWluIHRl
eHQgdHJhY2sgY3VlIG9yZGVyOgotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RleHQtdHJhY2stY3VlLW9yZGVyCi0gICAgUmVmUHRyPFRl
eHRUcmFja0N1ZT4gY3VlID0gcHJwQ3VlOwotICAgIGlmIChzdGFydCA9PSBlbmQpIHsKLSAgICAg
ICAgaWYgKCFtX2xpc3QuaXNFbXB0eSgpICYmIChtX2xpc3Rbc3RhcnQgLSAxXS5nZXQoKSA9PSBj
dWUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgbV9saXN0Lmlu
c2VydChzdGFydCwgY3VlKTsKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzaXpl
X3QgaW5kZXggPSAoc3RhcnQgKyBlbmQpIC8gMjsKLSAgICBpZiAoY3VlLT5zdGFydFRpbWUoKSA8
IG1fbGlzdFtpbmRleF0tPnN0YXJ0VGltZSgpIHx8IChjdWUtPnN0YXJ0VGltZSgpID09IG1fbGlz
dFtpbmRleF0tPnN0YXJ0VGltZSgpICYmIGN1ZS0+ZW5kVGltZSgpID4gbV9saXN0W2luZGV4XS0+
ZW5kVGltZSgpKSkKLSAgICAgICAgcmV0dXJuIGFkZChjdWUucmVsZWFzZSgpLCBzdGFydCwgaW5k
ZXgpOwotCi0gICAgcmV0dXJuIGFkZChjdWUucmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7Ci19
Ci0KLWJvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKFRleHRUcmFja0N1ZSogY3VlKQotewot
ICAgIHNpemVfdCBpbmRleCA9IG1fbGlzdC5maW5kKGN1ZSk7Ci0gICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjdWUtPnNldElzQWN0aXZlKGZh
bHNlKTsKLSAgICBtX2xpc3QucmVtb3ZlKGluZGV4KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBUZXh0VHJhY2tDdWVMaXN0Ojpjb250YWlucyhUZXh0VHJhY2tDdWUqIGN1ZSkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9saXN0LmNvbnRhaW5zKGN1ZSk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNr
Q3VlTGlzdDo6Y2xlYXIoKQotewotICAgIG1fbGlzdC5jbGVhcigpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2tDdWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmgJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFRleHRUcmFja0N1ZUxpc3RfaAotI2RlZmluZSBUZXh0VHJhY2tDdWVMaXN0X2gKLQot
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4
dFRyYWNrQ3VlTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZUxpc3Q+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tDdWVMaXN0KTsKLSAg
ICB9Ci0KLSAgICB+VGV4dFRyYWNrQ3VlTGlzdCgpIHsgfQotCi0gICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGgoKSBjb25zdDsKLSAgICBUZXh0VHJhY2tDdWUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OwotICAgIFRleHRUcmFja0N1ZSogZ2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVDdWVzKCk7Ci0KLSAgICBib29sIGFkZChQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4pOwotICAgIGJvb2wgcmVtb3ZlKFRleHRUcmFja0N1ZSopOwot
ICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrQ3VlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
VGV4dFRyYWNrQ3VlTGlzdCgpOwotICAgIGJvb2wgYWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
Piwgc2l6ZV90LCBzaXplX3QpOwotICAgIHZvaWQgY2xlYXIoKTsKLSAgICAKLSAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFja0N1ZT4gPiBtX2xpc3Q7Ci0gICAgUmVmUHRyPFRleHRUcmFja0N1ZUxp
c3Q+IG1fYWN0aXZlQ3VlczsKLSAgICAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmlkbAkocmV2aXNpb24gMTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1t
b2R1bGUgaHRtbCB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1WSURF
T19UUkFDSywKLSAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCi0g
ICAgICAgIEluZGV4ZWRHZXR0ZXIKLSAgICBdIFRleHRUcmFja0N1ZUxpc3QgewotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgICAgIFRleHRUcmFj
a0N1ZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgICAgICBUZXh0VHJhY2tDdWUg
Z2V0Q3VlQnlJZChpbiBET01TdHJpbmcgaWQpOwotICAgIH07Ci0KLX0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTA4MTI2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgorCisjaW5jbHVkZSAiRXZl
bnQuaCIKKyNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTG9hZGFi
bGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNrKHRyYWNrLT5kb2N1bWVudCgp
LCB0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCisgICAgLCBtX3Ry
YWNrRWxlbWVudCh0cmFjaykKKyAgICAsIG1fbG9hZFRpbWVyKHRoaXMsICZMb2FkYWJsZVRleHRU
cmFjazo6bG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCit7Cit9
CisKK0xvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQoreworfQorCit2b2lk
IExvYWRhYmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCit7CisgICAgbV90cmFja0VsZW1lbnQg
PSAwOworICAgIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoKTsKK30KKwordm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsID09
IG1fdXJsKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBv
dXQtb2YtYmFuZCB0ZXh0IHRyYWNrcyAoY29udGludWVkKQorCisgICAgLy8gMi4gTGV0IFVSTCBi
ZSB0aGUgdHJhY2sgVVJMIG9mIHRoZSB0cmFjayBlbGVtZW50LgorICAgIG1fdXJsID0gdXJsOwor
ICAgIAorICAgIC8vIDMuIEFzeW5jaHJvbm91c2x5IHJ1biB0aGUgcmVtYWluaW5nIHN0ZXBzLCB3
aGlsZSBjb250aW51aW5nIHdpdGggd2hhdGV2ZXIgdGFzayAKKyAgICAvLyB3YXMgcmVzcG9uc2li
bGUgZm9yIGNyZWF0aW5nIHRoZSB0ZXh0IHRyYWNrIG9yIGNoYW5naW5nIHRoZSB0ZXh0IHRyYWNr
IG1vZGUuCisgICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2xvYWRU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRU
aW1lckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCit7CisgICAgaWYgKG1fbG9hZGVy
KQorICAgICAgICBtX2xvYWRlci0+Y2FuY2VsTG9hZCgpOworCisgICAgaWYgKCFtX3RyYWNrRWxl
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0
LW9mLWJhbmQgdGV4dCB0cmFja3MgKGNvbnRpbnVlZCkKKworICAgIC8vIDQuIERvd25sb2FkOiBJ
ZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JT
LWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQorICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0
YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUs
IHRoZSBvcmlnaW4gYmVpbmcgdGhlCisgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50
J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWls
LgorICAgIG1fbG9hZGVyID0gVGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgc3RhdGljX2Nh
c3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KG1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7
CisgICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgbV90cmFja0VsZW1lbnQtPm1lZGlhRWxl
bWVudENyb3NzT3JpZ2luQXR0cmlidXRlKCkpKQorICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlk
Q29tcGxldGVMb2FkKHRoaXMsIEhUTUxUcmFja0VsZW1lbnQ6OkZhaWx1cmUpOworfQorCit2b2lk
IExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciogbG9h
ZGVyKQoreworICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlciA9PSBsb2FkZXIpOwor
CisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbmV3Q3VlczsKKyAgICBtX2xvYWRl
ci0+Z2V0TmV3Q3VlcyhuZXdDdWVzKTsKKworICAgIGlmICghbV9jdWVzKQorICAgICAgICBtX2N1
ZXMgPSBUZXh0VHJhY2tDdWVMaXN0OjpjcmVhdGUoKTsgICAgCisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5ld0N1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbmV3Q3Vlc1tpXS0+c2V0
VHJhY2sodGhpcyk7CisgICAgICAgIG1fY3Vlcy0+YWRkKG5ld0N1ZXNbaV0pOworICAgIH0KKwor
ICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRleHRUcmFja0FkZEN1ZXModGhp
cywgbV9jdWVzLmdldCgpKTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGlu
Z1N0YXJ0ZWQoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChs
b2FkZXIsIG1fbG9hZGVyID09IGxvYWRlcik7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6
OmN1ZUxvYWRpbmdDb21wbGV0ZWQoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIsIGJvb2wgbG9hZGlu
Z0ZhaWxlZCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9sb2FkZXIgPT0gbG9hZGVy
KTsKKworICAgIGlmICghbV90cmFja0VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
dHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQodGhpcywgbG9hZGluZ0ZhaWxlZCA/IEhUTUxU
cmFja0VsZW1lbnQ6OkZhaWx1cmUgOiBIVE1MVHJhY2tFbGVtZW50OjpTdWNjZXNzKTsKK30KKwor
dm9pZCBMb2FkYWJsZVRleHRUcmFjazo6ZmlyZUN1ZUNoYW5nZUV2ZW50KCkKK3sKKyAgICBUZXh0
VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIG1fdHJhY2tFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmN1ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7Cit9CisKK3NpemVfdCBMb2Fk
YWJsZVRleHRUcmFjazo6dHJhY2tFbGVtZW50SW5kZXgoKQoreworICAgIEFTU0VSVChtX3RyYWNr
RWxlbWVudCk7CisgICAgQVNTRVJUKG1fdHJhY2tFbGVtZW50LT5wYXJlbnROb2RlKCkpOworCisg
ICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3RyYWNrRWxlbWVu
dC0+cGFyZW50Tm9kZSgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG5vZGUgPT0gbV90cmFja0VsZW1lbnQpCisg
ICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICsraW5kZXg7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiAxMDgxMjYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaDoxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTG9hZGFibGVUZXh0VHJhY2tfaAorI2RlZmluZSBMb2FkYWJs
ZVRleHRUcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0
VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTG9hZGFibGVUZXh0VHJhY2s7CisK
K2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50IDogcHVibGljIFRleHRUcmFja0NsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2tDbGllbnQoKSB7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0
IEtVUkwmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxl
dGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KK307
CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJpdmF0ZSBU
ZXh0VHJhY2tMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExv
YWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Ym9vbCBpc0RlZmF1bHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRh
YmxlVGV4dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRUcmFjaygpOworCisgICAgdm9pZCBzY2hl
ZHVsZUxvYWQoY29uc3QgS1VSTCYpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCk7
CisgICAgCisgICAgc2l6ZV90IHRyYWNrRWxlbWVudEluZGV4KCk7CisgICAgSFRNTFRyYWNrRWxl
bWVudCogdHJhY2tFbGVtZW50KCkgeyByZXR1cm4gbV90cmFja0VsZW1lbnQ7IH0KKworcHJpdmF0
ZToKKyAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
TG9hZEN1ZXMoVGV4dFRyYWNrTG9hZGVyKikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciopOworICAgIHZpcnR1YWwgdm9p
ZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqLCBib29sIGxvYWRpbmdGYWlsZWQp
OworCisgICAgTG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9v
bCBpc0RlZmF1bHQpOworCisgICAgdm9pZCBsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRl
eHRUcmFjaz4qKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUN1ZUNoYW5nZUV2ZW50KCk7
CisKKyAgICBIVE1MVHJhY2tFbGVtZW50KiBtX3RyYWNrRWxlbWVudDsKKyAgICBUaW1lcjxMb2Fk
YWJsZVRleHRUcmFjaz4gbV9sb2FkVGltZXI7CisgICAgT3duUHRyPFRleHRUcmFja0xvYWRlcj4g
bV9sb2FkZXI7CisgICAgS1VSTCBtX3VybDsKKyAgICBib29sIG1faXNEZWZhdWx0OworfTsKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDEwODEyNikJKGZyb20gU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwOjEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IlRleHRUcmFjay5oIgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIlRyYWNrQmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRpdGxlcyIpKTsKKyAgICByZXR1cm4gc3Vi
dGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3
b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2Fw
dGlvbnMsICgiY2FwdGlvbnMiKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGVzY3JpcHRpb25zS2V5d29yZCgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlc2NyaXB0aW9ucywgKCJkZXNj
cmlwdGlvbnMiKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uczsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNoYXB0ZXJzLCAoImNoYXB0ZXJzIikpOworICAg
IHJldHVybiBjaGFwdGVyczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6Om1l
dGFkYXRhS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIG1ldGFkYXRhLCAoIm1ldGFkYXRhIikpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30K
KworVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorICAg
IDogVHJhY2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICwgbV9tZWRp
YUVsZW1lbnQoMCkKKyAgICAsIG1fbGFiZWwobGFiZWwpCisgICAgLCBtX2xhbmd1YWdlKGxhbmd1
YWdlKQorICAgICwgbV9tb2RlKFRleHRUcmFjazo6RElTQUJMRUQpCisgICAgLCBtX2NsaWVudChj
bGllbnQpCisgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQorICAgICwgbV9yZWFkaW5lc3NTdGF0ZShO
b3RMb2FkZWQpCisgICAgLCBtX3Nob3dpbmdCeURlZmF1bHQoZmFsc2UpCit7CisgICAgc2V0S2lu
ZChraW5kKTsKK30KKworVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKK3sKKyAgICBpZiAobV9jbGll
bnQgJiYgbV9jdWVzKQorICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlz
LCBtX2N1ZXMuZ2V0KCkpOworICAgIGNsZWFyQ2xpZW50KCk7Cit9CisKK2Jvb2wgVGV4dFRyYWNr
Ojppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodmFsdWUsIHN1YnRpdGxlc0tleXdvcmQoKSkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgY2FwdGlvbnNLZXl3b3Jk
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUsIGRlc2NyaXB0aW9uc0tleXdvcmQoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgY2hhcHRlcnNLZXl3b3JkKCkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIG1ldGFkYXRhS2V5
d29yZCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IFN0cmluZyYga2luZCkKK3sKKyAgICBTdHJp
bmcgb2xkS2luZCA9IG1fa2luZDsKKworICAgIGlmIChpc1ZhbGlkS2luZEtleXdvcmQoa2luZCkp
CisgICAgICAgIG1fa2luZCA9IGtpbmQ7CisgICAgZWxzZQorICAgICAgICBtX2tpbmQgPSBzdWJ0
aXRsZXNLZXl3b3JkKCk7CisKKyAgICBpZiAobV9jbGllbnQgJiYgb2xkS2luZCAhPSBtX2tpbmQp
CisgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0aGlzKTsKK30KKwordm9p
ZCBUZXh0VHJhY2s6OnNldE1vZGUodW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgLy8gNC44LjEwLjEyLjUgT24gc2V0dGluZyB0aGUgbW9kZSwgaWYgdGhlIG5l
dyB2YWx1ZSBpcyBub3QgZWl0aGVyIDAsIDEsIG9yIDIsCisgICAgLy8gdGhlIHVzZXIgYWdlbnQg
bXVzdCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uLgorICAgIGlmIChtb2Rl
ID4gVGV4dFRyYWNrOjpTSE9XSU5HKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fbW9kZSA9PSBzdGF0aWNfY2Fz
dDxNb2RlPihtb2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIG5ldyB2YWx1
ZSBpcyAyCisgICAgLy8gIC4uLiBOb3RlOiBJZiB0aGUgbW9kZSBoYWQgYmVlbiBzaG93aW5nIGJ5
IGRlZmF1bHQsIHRoaXMgd2lsbCBjaGFuZ2UgaXQgdG8gc2hvd2luZywgCisgICAgLy8gZXZlbiB0
aG91Z2ggdGhlIHZhbHVlIG9mIG1vZGUgd291bGQgYXBwZWFyIG5vdCB0byBjaGFuZ2UuCisgICAg
bV9tb2RlID0gc3RhdGljX2Nhc3Q8TW9kZT4obW9kZSk7CisgICAgaWYgKG1fbW9kZSA9PSBUZXh0
VHJhY2s6OlNIT1dJTkcpCisgICAgICAgIHNldFNob3dpbmdCeURlZmF1bHQoZmFsc2UpOworCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQo
dGhpcyk7Cit9CisKK1RleHRUcmFjazo6TW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAorewor
ICAgIC8vIFRoZSB0ZXh0IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIg
bW9kZXMgcmV0dXJuIFNIT1dJTkcgKG51bWVyaWMgdmFsdWUgMikKKyAgICBpZiAobV9zaG93aW5n
QnlEZWZhdWx0KQorICAgICAgICByZXR1cm4gU0hPV0lORzsKKyAgICByZXR1cm4gbV9tb2RlOwor
fQorCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQoreworICAgIC8vIDQuOC4x
MC4xMi41IElmIHRoZSB0ZXh0IHRyYWNrIG1vZGUgLi4uIGlzIG5vdCB0aGUgdGV4dCB0cmFjayBk
aXNhYmxlZCBtb2RlLAorICAgIC8vIHRoZW4gdGhlIGN1ZXMgYXR0cmlidXRlIG11c3QgcmV0dXJu
IGEgbGl2ZSBUZXh0VHJhY2tDdWVMaXN0IG9iamVjdCAuLi4KKyAgICAvLyBPdGhlcndpc2UsIGl0
IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUKKyAgICAv
LyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KKyAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4dHRyYWNr
LWN1ZXMKKyAgICBpZiAobV9tb2RlICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAgICAgIHJl
dHVybiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1RleHRU
cmFja0N1ZUxpc3QqIFRleHRUcmFjazo6YWN0aXZlQ3VlcygpIGNvbnN0Cit7CisgICAgLy8gNC44
LjEwLjEyLjUgSWYgdGhlIHRleHQgdHJhY2sgbW9kZSAuLi4gaXMgbm90IHRoZSB0ZXh0IHRyYWNr
IGRpc2FibGVkIG1vZGUsCisgICAgLy8gdGhlbiB0aGUgYWN0aXZlQ3VlcyBhdHRyaWJ1dGUgbXVz
dCByZXR1cm4gYSBsaXZlIFRleHRUcmFja0N1ZUxpc3Qgb2JqZWN0IC4uLgorICAgIC8vIC4uLiB3
aG9zZSBhY3RpdmUgZmxhZyB3YXMgc2V0IHdoZW4gdGhlIHNjcmlwdCBzdGFydGVkLCBpbiB0ZXh0
IHRyYWNrIGN1ZQorICAgIC8vIG9yZGVyLiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51bGwu
IFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUKKyAgICAvLyBzYW1lIG9iamVjdCBtdXN0
IGJlIHJldHVybmVkIGVhY2ggdGltZS4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4dHRyYWNrLWFjdGl2ZWN1ZXMKKyAgICBp
ZiAobV9jdWVzICYmIG1fbW9kZSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEKQorICAgICAgICByZXR1
cm4gbV9jdWVzLT5hY3RpdmVDdWVzKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrOjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFwcnBDdWUpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0
cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IHBycEN1ZTsKKworICAgIC8vIDQuOC4xMC4xMi40IFRleHQg
dHJhY2sgQVBJCisKKyAgICAvLyBUaGUgYWRkQ3VlKGN1ZSkgbWV0aG9kIG9mIFRleHRUcmFjayBv
YmplY3RzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAg
ICAvLyAxLiBJZiB0aGUgZ2l2ZW4gY3VlIGlzIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGEgdGV4
dCB0cmFjayBvdGhlciB0aGFuIAorICAgIC8vIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0
J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcgorICAgIC8vIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgVGV4dFRyYWNrKiBjdWVUcmFjayA9
IGN1ZS0+dHJhY2soKTsKKyAgICBpZiAoY3VlVHJhY2sgJiYgY3VlVHJhY2sgIT0gdGhpcykgewor
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gMi4gQXNzb2NpYXRlIGN1ZSB3aXRoIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2Jq
ZWN0J3MgdGV4dCB0cmFjaywgaWYgaXQgaXMgCisgICAgLy8gbm90IGN1cnJlbnRseSBhc3NvY2lh
dGVkIHdpdGggYSB0ZXh0IHRyYWNrLgorICAgIGN1ZS0+c2V0VHJhY2sodGhpcyk7CisKKyAgICAv
LyAzLiBJZiB0aGUgZ2l2ZW4gY3VlIGlzIGFscmVhZHkgbGlzdGVkIGluIHRoZSBtZXRob2QncyBU
ZXh0VHJhY2sgb2JqZWN0J3MgdGV4dAorICAgIC8vIHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9m
IGN1ZXMsIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uLgorICAgIC8v
IDQuIEFkZCBjdWUgdG8gdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNr
J3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMuCisgICAgaWYgKCFlbnN1cmVUZXh0VHJhY2tDdWVM
aXN0KCktPmFkZChjdWUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+dGV4dFRyYWNrQWRkQ3VlKHRoaXMsIGN1ZS5nZXQoKSk7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICghY3VlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0LjguMTAuMTIuNCBUZXh0
IHRyYWNrIEFQSQorCisgICAgLy8gVGhlIHJlbW92ZUN1ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJh
Y2sgb2JqZWN0cywgd2hlbiBpbnZva2VkLCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgor
CisgICAgLy8gMS4gSWYgdGhlIGdpdmVuIGN1ZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBt
ZXRob2QncyBUZXh0VHJhY2sgCisgICAgLy8gb2JqZWN0J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNlcHRpb24uCisgICAgaWYgKGN1ZS0+dHJhY2soKSAh
PSB0aGlzKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgLy8gMi4gSWYgdGhlIGdpdmVuIGN1ZSBpcyBub3QgY3VycmVu
dGx5IGxpc3RlZCBpbiB0aGUgbWV0aG9kJ3MgVGV4dFRyYWNrIAorICAgIC8vIG9iamVjdCdzIHRl
eHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3VlcywgdGhlbiB0aHJvdyBhIE5vdEZvdW5k
RXJyb3IgZXhjZXB0aW9uLgorICAgIC8vIDMuIFJlbW92ZSBjdWUgZnJvbSB0aGUgbWV0aG9kJ3Mg
VGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vlcy4K
KyAgICBpZiAoIW1fY3VlcyB8fCAhbV9jdWVzLT5yZW1vdmUoY3VlKSkgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3VlLT5z
ZXRUcmFjaygwKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT50ZXh0VHJh
Y2tSZW1vdmVDdWUodGhpcywgY3VlKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmZpcmVDdWVDaGFu
Z2VFdmVudCgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNl
KSwgZWMpOworfQorICAgIAordm9pZCBUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2UoVGV4dFRyYWNr
Q3VlKiBjdWUpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1l
bnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bworICAgIC8vIGJlIHJlLXJlbmRlcmVkLCBl
dGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgorICAgIG1fY2xpZW50
LT50ZXh0VHJhY2tSZW1vdmVDdWUodGhpcywgY3VlKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmN1
ZURpZENoYW5nZShUZXh0VHJhY2tDdWUqIGN1ZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyAuLi4gYW5kIGFkZCBpdCBiYWNrIGFnYWluLgorICAgIG1f
Y2xpZW50LT50ZXh0VHJhY2tBZGRDdWUodGhpcywgY3VlKTsKK30KKworVGV4dFRyYWNrQ3VlTGlz
dCogVGV4dFRyYWNrOjplbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKK3sKKyAgICBpZiAoIW1fY3Vl
cykKKyAgICAgICAgbV9jdWVzID0gVGV4dFRyYWNrQ3VlTGlzdDo6Y3JlYXRlKCk7CisKKyAgICBy
ZXR1cm4gbV9jdWVzLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCShyZXZpc2lvbiAxMDgx
MjYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmg6MTA4MTI2KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrX2gKKyNkZWZpbmUgVGV4dFRy
YWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsK
K2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2NsYXNzIFRleHRUcmFja0N1
ZUxpc3Q7CisKK2NsYXNzIFRleHRUcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
VGV4dFRyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFu
Z2VkKFRleHRUcmFjayopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5n
ZWQoVGV4dFRyYWNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRl
eHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7Cit9OworCitj
bGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY29udGV4dCwgY2xpZW50LCBraW5kLCBsYWJlbCwg
bGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CisgICAgfQorICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwor
ICAgIAorICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQp
IHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KKworICAgIFN0cmluZyBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdm9pZCBzZXRLaW5kKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgp
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFwdGVyc0tleXdvcmQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBtZXRhZGF0YUtleXdvcmQoKTsKKyAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBj
b25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcm
IGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQorCisgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKworICAgIGVudW0gTW9k
ZSB7IERJU0FCTEVEID0gMCwgSElEREVOID0gMSwgU0hPV0lORyA9IDIgfTsKKyAgICBNb2RlIG1v
ZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1vZGUodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKworICAgIGJvb2wgc2hvd2luZ0J5RGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
d2luZ0J5RGVmYXVsdDsgfQorICAgIHZvaWQgc2V0U2hvd2luZ0J5RGVmYXVsdChib29sIHNob3dp
bmcpIHsgbV9zaG93aW5nQnlEZWZhdWx0ID0gc2hvd2luZzsgfQorCisgICAgZW51bSBSZWFkaW5l
c3NTdGF0ZSB7IE5vdExvYWRlZCA9IDAsIExvYWRpbmcgPSAxLCBMb2FkZWQgPSAyLCBGYWlsZWRU
b0xvYWQgPSAzIH07CisgICAgUmVhZGluZXNzU3RhdGUgcmVhZGluZXNzU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlYWRpbmVzc1N0YXRlOyB9CisgICAgdm9pZCBzZXRSZWFkaW5lc3NTdGF0ZShS
ZWFkaW5lc3NTdGF0ZSBzdGF0ZSkgeyBtX3JlYWRpbmVzc1N0YXRlID0gc3RhdGU7IH0KKworICAg
IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMoKTsKKyAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVD
dWVzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50
ID0gMDsgfQorICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7
IH0KKworICAgIHZvaWQgYWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUm
KTsKKworICAgIHZvaWQgY3VlV2lsbENoYW5nZShUZXh0VHJhY2tDdWUqKTsKKyAgICB2b2lkIGN1
ZURpZENoYW5nZShUZXh0VHJhY2tDdWUqKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUN1
ZUNoYW5nZUV2ZW50KCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjdWVj
aGFuZ2UpOworCisgICAgZW51bSBUZXh0VHJhY2tUeXBlIHsgVHJhY2tFbGVtZW50LCBBZGRUcmFj
aywgSW5CYW5kIH07CisgICAgVGV4dFRyYWNrVHlwZSB0cmFja1R5cGUoKSBjb25zdCB7IHJldHVy
biBtX3RyYWNrVHlwZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwor
CisgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKKworcHJpdmF0ZToKKyAgICBU
ZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CisgICAgSFRNTE1lZGlh
RWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CisgICAgU3RyaW5nIG1fa2luZDsKKyAgICBTdHJpbmcg
bV9sYWJlbDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBNb2RlIG1fbW9kZTsKKyAgICBU
ZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OworICAgIFRleHRUcmFja1R5cGUgbV90cmFja1R5cGU7
CisgICAgUmVhZGluZXNzU3RhdGUgbV9yZWFkaW5lc3NTdGF0ZTsKKyAgICBib29sIG1fc2hvd2lu
Z0J5RGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwJKHJldmlzaW9u
IDEwODEyNikJKGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsOjEwODEyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICAgICAgVjhFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAg
ICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQor
ICAgIF0gVGV4dFRyYWNrIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOworCisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IERJU0FCTEVEID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgSElEREVOID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0hPV0lORyA9IDI7
CisgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBtb2RlCisgICAgICAgICAgICBzZXR0
ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
ZXh0VHJhY2tDdWVMaXN0IGN1ZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJh
Y2tDdWVMaXN0IGFjdGl2ZUN1ZXM7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uY3VlY2hhbmdlOworCisgICAgICAgIHZvaWQgYWRkQ3VlKGluIFRleHRUcmFja0N1
ZSBjdWUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQg
cmVtb3ZlQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAg
ICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkocmV2aXNpb24gMTA4MTI2KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHA6MTA4MTI2KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKworI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5o
IgorI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdGFydEtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBzdGFydCwgKCJzdGFydCIpKTsKKyAgICByZXR1cm4gc3RhcnQ7Cit9CisKK3N0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1pZGRsZUtleXdvcmQoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtaWRkbGUsICgibWlkZGxlIikpOworICAg
IHJldHVybiBtaWRkbGU7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVuZEtleXdv
cmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmQs
ICgiZW5kIikpOworICAgIHJldHVybiBlbmQ7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGhvcml6b250YWxLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgaG9yaXpvbnRhbCwgKCJob3Jpem9udGFsIikpOworICAgIHJldHVybiBo
b3Jpem9udGFsOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2ZXJ0aWNhbEtleXdv
cmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB2ZXJ0
aWNhbCwgKCJ2ZXJ0aWNhbCIpKTsKKyAgICByZXR1cm4gdmVydGljYWw7Cit9CitzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiB2ZXJ0aWNhbGxyS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHZlcnRpY2FsbHIsICgidmVydGljYWwtbHIiKSk7
CisgICAgcmV0dXJuIHZlcnRpY2FsbHI7Cit9CisgICAgCitUZXh0VHJhY2tDdWU6OlRleHRUcmFj
a0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3Ry
aW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCkKKyAgICA6IG1faWQoaWQpCisgICAgLCBt
X3N0YXJ0VGltZShzdGFydCkKKyAgICAsIG1fZW5kVGltZShlbmQpCisgICAgLCBtX2NvbnRlbnQo
Y29udGVudCkKKyAgICAsIG1fd3JpdGluZ0RpcmVjdGlvbihIb3Jpem9udGFsKQorICAgICwgbV9s
aW5lUG9zaXRpb24oLTEpCisgICAgLCBtX3RleHRQb3NpdGlvbig1MCkKKyAgICAsIG1fY3VlU2l6
ZSgxMDApCisgICAgLCBtX2N1ZUFsaWdubWVudChNaWRkbGUpCisgICAgLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1faXNBY3RpdmUoZmFsc2UpCisgICAgLCBtX3Bh
dXNlT25FeGl0KHBhdXNlT25FeGl0KQorICAgICwgbV9zbmFwVG9MaW5lcyh0cnVlKQoreworICAg
IHBhcnNlU2V0dGluZ3Moc2V0dGluZ3MpOworfQorCitUZXh0VHJhY2tDdWU6On5UZXh0VHJhY2tD
dWUoKQoreworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6Y3VlV2lsbENoYW5nZSgpCit7CisgICAg
aWYgKG1fdHJhY2spCisgICAgICAgIG1fdHJhY2stPmN1ZVdpbGxDaGFuZ2UodGhpcyk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrQ3VlOjpjdWVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX3RyYWNrKQor
ICAgICAgICBtX3RyYWNrLT5jdWVEaWRDaGFuZ2UodGhpcyk7Cit9CisKK1RleHRUcmFjayogVGV4
dFRyYWNrQ3VlOjp0cmFjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2suZ2V0KCk7Cit9
CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz50cmFj
aykKK3sKKyAgICBtX3RyYWNrID0gdHJhY2s7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRJ
ZChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmIChtX2lkID09IGlkKQorICAgICAgICByZXR1
cm47CisKKyAgICBjdWVXaWxsQ2hhbmdlKCk7CisgICAgbV9pZCA9IGlkOworICAgIGN1ZURpZENo
YW5nZSgpOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0U3RhcnRUaW1lKGRvdWJsZSB2YWx1
ZSkKK3sKKyAgICBpZiAobV9zdGFydFRpbWUgPT0gdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBjdWVXaWxsQ2hhbmdlKCk7CisgICAgbV9zdGFydFRpbWUgPSB2YWx1ZTsKKyAgICBj
dWVEaWRDaGFuZ2UoKTsKK30KKyAgICAKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRFbmRUaW1lKGRv
dWJsZSB2YWx1ZSkKK3sKKyAgICBpZiAobV9lbmRUaW1lID09IHZhbHVlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgY3VlV2lsbENoYW5nZSgpOworICAgIG1fZW5kVGltZSA9IHZhbHVlOwor
ICAgIGN1ZURpZENoYW5nZSgpOworfQorICAgIAordm9pZCBUZXh0VHJhY2tDdWU6OnNldFBhdXNl
T25FeGl0KGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fcGF1c2VPbkV4aXQgPT0gdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjdWVXaWxsQ2hhbmdlKCk7CisgICAgbV9wYXVzZU9u
RXhpdCA9IHZhbHVlOworICAgIGN1ZURpZENoYW5nZSgpOworfQorCitjb25zdCBTdHJpbmcmIFRl
eHRUcmFja0N1ZTo6ZGlyZWN0aW9uKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fd3JpdGluZ0Rp
cmVjdGlvbikgeworICAgIGNhc2UgSG9yaXpvbnRhbDogCisgICAgICAgIHJldHVybiBob3Jpem9u
dGFsS2V5d29yZCgpOworICAgIGNhc2UgVmVydGljYWxHcm93aW5nTGVmdDoKKyAgICAgICAgcmV0
dXJuIHZlcnRpY2FsS2V5d29yZCgpOworICAgIGNhc2UgVmVydGljYWxHcm93aW5nUmlnaHQ6Cisg
ICAgICAgIHJldHVybiB2ZXJ0aWNhbGxyS2V5d29yZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXZpZGVvLWVsZW1lbnQu
aHRtbCNkb20tdGV4dHRyYWNrY3VlLWRpcmVjdGlvbgorICAgIC8vIE9uIHNldHRpbmcsIHRoZSB0
ZXh0IHRyYWNrIGN1ZSB3cml0aW5nIGRpcmVjdGlvbiBtdXN0IGJlIHNldCB0byB0aGUgdmFsdWUg
Z2l2ZW4gCisgICAgLy8gaW4gdGhlIGZpcnN0IGNlbGwgb2YgdGhlIHJvdyBpbiB0aGUgdGFibGUg
YWJvdmUgd2hvc2Ugc2Vjb25kIGNlbGwgaXMgYSAKKyAgICAvLyBjYXNlLXNlbnNpdGl2ZSBtYXRj
aCBmb3IgdGhlIG5ldyB2YWx1ZSwgaWYgYW55LiBJZiBub25lIG9mIHRoZSB2YWx1ZXMgbWF0Y2gs
IHRoZW4KKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IGluc3RlYWQgdGhyb3cgYSBTeW50YXhF
cnJvciBleGNlcHRpb24uCisgICAgCisgICAgRGlyZWN0aW9uIGRpcmVjdGlvbiA9IG1fd3JpdGlu
Z0RpcmVjdGlvbjsKKyAgICBpZiAodmFsdWUgPT0gaG9yaXpvbnRhbEtleXdvcmQoKSkKKyAgICAg
ICAgZGlyZWN0aW9uID0gSG9yaXpvbnRhbDsKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSB2ZXJ0aWNh
bEtleXdvcmQoKSkKKyAgICAgICAgZGlyZWN0aW9uID0gVmVydGljYWxHcm93aW5nTGVmdDsKKyAg
ICBlbHNlIGlmICh2YWx1ZSA9PSB2ZXJ0aWNhbGxyS2V5d29yZCgpKQorICAgICAgICBkaXJlY3Rp
b24gPSBWZXJ0aWNhbEdyb3dpbmdSaWdodDsKKyAgICBlbHNlCisgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAKKyAgICBpZiAoZGlyZWN0aW9uID09IG1fd3JpdGluZ0RpcmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY3VlV2lsbENoYW5nZSgpOworICAgIG1fd3JpdGluZ0RpcmVj
dGlvbiA9IGRpcmVjdGlvbjsKKyAgICBjdWVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBUZXh0VHJh
Y2tDdWU6OnNldFNuYXBUb0xpbmVzKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fc25hcFRvTGlu
ZXMgPT0gdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjdWVXaWxsQ2hhbmdlKCk7
CisgICAgbV9zbmFwVG9MaW5lcyA9IHZhbHVlOworICAgIGN1ZURpZENoYW5nZSgpOworfQorCit2
b2lkIFRleHRUcmFja0N1ZTo6c2V0TGluZVBvc2l0aW9uKGludCBwb3NpdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXZpZGVvLWVsZW1lbnQuaHRtbCNkb20tdGV4dHRy
YWNrY3VlLWxpbmVwb3NpdGlvbgorICAgIC8vIE9uIHNldHRpbmcsIGlmIHRoZSB0ZXh0IHRyYWNr
IGN1ZSBzbmFwLXRvLWxpbmVzIGZsYWcgaXMgbm90IHNldCwgYW5kIHRoZSBuZXcKKyAgICAvLyB2
YWx1ZSBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gMTAwLCB0aGVuIHRocm93IGFuIEluZGV4
U2l6ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoIW1fc25hcFRvTGluZXMgJiYgKHBvc2l0aW9u
IDwgMCB8fCBwb3NpdGlvbiA+IDEwMCkpIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUg
dGV4dCB0cmFjayBjdWUgbGluZSBwb3NpdGlvbiB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmICht
X2xpbmVQb3NpdGlvbiA9PSBwb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGN1
ZVdpbGxDaGFuZ2UoKTsKKyAgICBtX2xpbmVQb3NpdGlvbiA9IHBvc2l0aW9uOyAKKyAgICBjdWVE
aWRDaGFuZ2UoKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnNldFRleHRQb3NpdGlvbihpbnQg
cG9zaXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS12aWRlby1lbGVt
ZW50Lmh0bWwjZG9tLXRleHR0cmFja2N1ZS1saW5lcG9zaXRpb24KKyAgICAvLyBPbiBzZXR0aW5n
LCBpZiB0aGUgbmV3IHZhbHVlIGlzIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiAxMDAsIHRoZW4g
dGhyb3cgYW4gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uLgorICAgIC8vIE90aGVyd2lzZSwgc2V0
IHRoZSB0ZXh0IHRyYWNrIGN1ZSB0ZXh0IHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCisgICAg
aWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+IDEwMCkgeworICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIE90aGVyd2lz
ZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUu
CisgICAgaWYgKG1fdGV4dFBvc2l0aW9uID09IHBvc2l0aW9uKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgY3VlV2lsbENoYW5nZSgpOworICAgIG1fdGV4dFBvc2l0aW9uID0gcG9zaXRpb247
IAorICAgIGN1ZURpZENoYW5nZSgpOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0U2l6ZShp
bnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXZpZGVvLWVsZW1l
bnQuaHRtbCNkb20tdGV4dHRyYWNrY3VlLXNpemUKKyAgICAvLyBPbiBzZXR0aW5nLCBpZiB0aGUg
bmV3IHZhbHVlIGlzIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiAxMDAsIHRoZW4gdGhyb3cgYW4g
SW5kZXhTaXplRXJyb3IKKyAgICAvLyBleGNlcHRpb24uIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0
IHRyYWNrIGN1ZSBzaXplIHRvIHRoZSBuZXcgdmFsdWUuCisgICAgaWYgKHNpemUgPCAwIHx8IHNp
emUgPiAxMDApIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgdGV4dCB0cmFjayBjdWUg
bGluZSBwb3NpdGlvbiB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmIChtX2N1ZVNpemUgPT0gc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGN1ZVdpbGxDaGFuZ2UoKTsKKyAgICBtX2N1
ZVNpemUgPSBzaXplOworICAgIGN1ZURpZENoYW5nZSgpOworfQorCitjb25zdCBTdHJpbmcmIFRl
eHRUcmFja0N1ZTo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fY3VlQWxpZ25t
ZW50KSB7CisgICAgY2FzZSBTdGFydDoKKyAgICAgICAgcmV0dXJuIHN0YXJ0S2V5d29yZCgpOwor
ICAgIGNhc2UgTWlkZGxlOgorICAgICAgICByZXR1cm4gbWlkZGxlS2V5d29yZCgpOworICAgIGNh
c2UgRW5kOgorICAgICAgICByZXR1cm4gZW5kS2V5d29yZCgpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KyAgICB9Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRBbGlnbm1lbnQoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXZpZGVvLWVsZW1l
bnQuaHRtbCNkb20tdGV4dHRyYWNrY3VlLWFsaWdubWVudAorICAgIC8vIE9uIHNldHRpbmcsIHRo
ZSB0ZXh0IHRyYWNrIGN1ZSBhbGlnbm1lbnQgbXVzdCBiZSBzZXQgdG8gdGhlIHZhbHVlIGdpdmVu
IGluIHRoZSAKKyAgICAvLyBmaXJzdCBjZWxsIG9mIHRoZSByb3cgaW4gdGhlIHRhYmxlIGFib3Zl
IHdob3NlIHNlY29uZCBjZWxsIGlzIGEgY2FzZS1zZW5zaXRpdmUKKyAgICAvLyBtYXRjaCBmb3Ig
dGhlIG5ldyB2YWx1ZSwgaWYgYW55LiBJZiBub25lIG9mIHRoZSB2YWx1ZXMgbWF0Y2gsIHRoZW4g
dGhlIHVzZXIKKyAgICAvLyBhZ2VudCBtdXN0IGluc3RlYWQgdGhyb3cgYSBTeW50YXhFcnJvciBl
eGNlcHRpb24uCisgICAgCisgICAgQWxpZ25tZW50IGFsaWdubWVudCA9IG1fY3VlQWxpZ25tZW50
OworICAgIGlmICh2YWx1ZSA9PSBzdGFydEtleXdvcmQoKSkKKyAgICAgICAgYWxpZ25tZW50ID0g
U3RhcnQ7CisgICAgZWxzZSBpZiAodmFsdWUgPT0gbWlkZGxlS2V5d29yZCgpKQorICAgICAgICBh
bGlnbm1lbnQgPSBNaWRkbGU7CisgICAgZWxzZSBpZiAodmFsdWUgPT0gZW5kS2V5d29yZCgpKQor
ICAgICAgICBhbGlnbm1lbnQgPSBFbmQ7CisgICAgZWxzZQorICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgCisgICAgaWYgKGFsaWdubWVudCA9PSBtX2N1ZUFsaWdubWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY3VlV2lsbENoYW5nZSgpOworICAgIG1fY3VlQWxpZ25tZW50ID0gYWxp
Z25tZW50OworICAgIGN1ZURpZENoYW5nZSgpOworfQorICAgIAordm9pZCBUZXh0VHJhY2tDdWU6
OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmIChtX2NvbnRlbnQgPT0gdGV4
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGN1ZVdpbGxDaGFuZ2UoKTsKKyAgICAvLyBD
bGVhciB0aGUgZG9jdW1lbnQgZnJhZ21lbnQgYnV0IGRvbid0IGJvdGhlciB0byBjcmVhdGUgaXQg
YWdhaW4ganVzdCB5ZXQgYXMgd2UgY2FuIGRvIHRoYXQKKyAgICAvLyB3aGVuIGl0IGlzIHJlcXVl
c3RlZC4KKyAgICBtX2RvY3VtZW50RnJhZ21lbnQgPSAwOworICAgIG1fY29udGVudCA9IHRleHQ7
CisgICAgY3VlRGlkQ2hhbmdlKCk7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
VGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIGlmICghbV9kb2N1bWVudEZyYWdt
ZW50KQorICAgICAgICBtX2RvY3VtZW50RnJhZ21lbnQgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSgw
LCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1
ZVRleHQobV9jb250ZW50KTsKKworICAgIHJldHVybiBtX2RvY3VtZW50RnJhZ21lbnQ7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRDdWVIVE1MKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQpCit7CisgICAgbV9kb2N1bWVudEZyYWdtZW50ID0gZnJhZ21lbnQ7Cit9CisK
K2Jvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1faXNBY3RpdmUg
JiYgdHJhY2soKSAmJiB0cmFjaygpLT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpESVNBQkxFRDsKK30K
Kwordm9pZCBUZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKGJvb2wgYWN0aXZlKQoreworICAgIG1f
aXNBY3RpdmUgPSBhY3RpdmU7CisKKyAgICAvLyBXaGVuIGEgVGV4dFRyYWNrJ3MgbW9kZSBpcyBk
aXNhYmxlZDogTm8gY3VlcyBhcmUgYWN0aXZlLCBubyBldmVudHMgYXJlIGZpcmVkIC4uLgorICAg
IGlmICghdHJhY2soKSB8fCB0cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpESVNBQkxFRCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaWYgKGFj
dGl2ZSkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
bnRlckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgZWxzZQorICAgICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVudCwgZmFsc2UsIGZhbHNl
KSwgZWMpOworCisgICAgaWYgKG1fdHJhY2spCisgICAgICAgIG1fdHJhY2stPmZpcmVDdWVDaGFu
Z2VFdmVudCgpOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6cGFyc2VTZXR0aW5ncyhjb25zdCBT
dHJpbmcmIGlucHV0KQoreworICAgIC8vIDQuOC4xMC4xMy4zIFBhcnNlIHRoZSBXZWJWVFQgc2V0
dGluZ3MuCisgICAgLy8gMSAtIEluaXRpYWwgc2V0dXAuCisgICAgdW5zaWduZWQgcG9zaXRpb24g
PSAwOworICAgIHdoaWxlIChwb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCgpKSB7CisgICAgICAgIC8v
IERpc2NhcmQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYmV0d2VlbiBvciBhZnRlciBzZXR0aW5ncyAo
bm90IGluIHRoZSBzcGVjLCBidXQgd2UgdGhpbmsgaXQgc2hvdWxkIGJlKS4KKyAgICAgICAgd2hp
bGUgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkgJiYgV2ViVlRUUGFyc2VyOjppc0FTcGFjZShp
bnB1dFtwb3NpdGlvbl0pKQorICAgICAgICAgICAgcG9zaXRpb24rKzsKKworICAgICAgICAvLyAy
LTQgU2V0dGluZ3MgLSBnZXQgdGhlIG5leHQgY2hhcmFjdGVyIHJlcHJlc2VudGluZyBhIHNldHRp
bmdzLgorICAgICAgICBjaGFyIHNldHRpbmcgPSBpbnB1dFtwb3NpdGlvbisrXTsKKyAgICAgICAg
aWYgKHBvc2l0aW9uID49IGlucHV0Lmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vIDUtNyAtIElmIHRoZSBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gaXMgbm90ICc6Jywg
c2V0IHNldHRpbmcgdG8gZW1wdHkgc3RyaW5nLgorICAgICAgICBpZiAoaW5wdXRbcG9zaXRpb24r
K10gIT0gJzonKQorICAgICAgICAgICAgc2V0dGluZyA9ICdcMCc7CisgICAgICAgIGlmIChwb3Np
dGlvbiA+PSBpbnB1dC5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyA4IC0gR2F0aGVyIHNldHRpbmdzIGJhc2VkIG9uIHZhbHVlIG9mIHNldHRpbmcuCisgICAgICAg
IHN3aXRjaCAoc2V0dGluZykgeworICAgICAgICBjYXNlICdEJzoKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIDEtMyAtIENvbGxlY3QgdGhlIG5leHQgd29yZCBhbmQgc2V0IHRoZSB3cml0
aW5nIGRpcmVjdGlvbiBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgIFN0cmluZyB3cml0aW5nRGly
ZWN0aW9uID0gV2ViVlRUUGFyc2VyOjpjb2xsZWN0V29yZChpbnB1dCwgJnBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGlmICh3cml0aW5nRGlyZWN0aW9uID09IHZlcnRpY2FsS2V5d29yZCgpKQorICAg
ICAgICAgICAgICAgIG1fd3JpdGluZ0RpcmVjdGlvbiA9IFZlcnRpY2FsR3Jvd2luZ0xlZnQ7Cisg
ICAgICAgICAgICBlbHNlIGlmICh3cml0aW5nRGlyZWN0aW9uID09IHZlcnRpY2FsbHJLZXl3b3Jk
KCkpCisgICAgICAgICAgICAgICAgbV93cml0aW5nRGlyZWN0aW9uID0gVmVydGljYWxHcm93aW5n
UmlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAn
TCc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAvLyAxLTIgLSBDb2xsZWN0IGNoYXJzIHRo
YXQgYXJlIGVpdGhlciAnLScsICclJywgb3IgYSBkaWdpdC4KKyAgICAgICAgICAgIFN0cmluZ0J1
aWxkZXIgbGluZVBvc2l0aW9uQnVpbGRlcjsKKyAgICAgICAgICAgIHdoaWxlIChwb3NpdGlvbiA8
IGlucHV0Lmxlbmd0aCgpICYmIChpbnB1dFtwb3NpdGlvbl0gPT0gJy0nIHx8IGlucHV0W3Bvc2l0
aW9uXSA9PSAnJScgfHwgaXNBU0NJSURpZ2l0KGlucHV0W3Bvc2l0aW9uXSkpKQorICAgICAgICAg
ICAgICAgIGxpbmVQb3NpdGlvbkJ1aWxkZXIuYXBwZW5kKGlucHV0W3Bvc2l0aW9uKytdKTsKKyAg
ICAgICAgICAgIGlmIChwb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCgpICYmICFXZWJWVFRQYXJzZXI6
OmlzQVNwYWNlKGlucHV0W3Bvc2l0aW9uXSkpCisgICAgICAgICAgICAgICAgZ290byBPdGhlcndp
c2U7CisgICAgICAgICAgICBTdHJpbmcgbGluZVBvc2l0aW9uID0gbGluZVBvc2l0aW9uQnVpbGRl
ci50b1N0cmluZygpOworCisgICAgICAgICAgICAvLyAzLTUgLSBJZiB0aGVyZSBpcyBub3QgYXQg
bGVhc3Qgb25lIGRpZ2l0IGNoYXJhY3RlciwKKyAgICAgICAgICAgIC8vICAgICAgIGEgJy0nIG9j
Y3VycyBhbnl3aGVyZSBvdGhlciB0aGFuIHRoZSBmcm9udCwgb3IKKyAgICAgICAgICAgIC8vICAg
ICAgIGEgJyUnIG9jY3VycyBhbnl3aGVyZSBvdGhlciB0aGFuIHRoZSBlbmQsIHRoZW4KKyAgICAg
ICAgICAgIC8vICAgICAgIGlnbm9yZSB0aGlzIHNldHRpbmcgYW5kIGtlZXAgbG9va2luZy4KKyAg
ICAgICAgICAgIGlmIChsaW5lUG9zaXRpb24uZmluZCgnLScsIDEpICE9IG5vdEZvdW5kIHx8IGxp
bmVQb3NpdGlvbi5yZXZlcnNlRmluZCgiJSIsIGxpbmVQb3NpdGlvbi5sZW5ndGgoKSAtIDIpICE9
IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyA2IC0g
SWYgdGhlIGZpcnN0IGNoYXIgaXMgYSAnLScgYW5kIHRoZSBsYXN0IGNoYXIgaXMgYSAnJScsIGln
bm9yZSBhbmQga2VlcCBsb29raW5nLgorICAgICAgICAgICAgaWYgKGxpbmVQb3NpdGlvblswXSA9
PSAnLScgJiYgbGluZVBvc2l0aW9uW2xpbmVQb3NpdGlvbi5sZW5ndGgoKSAtIDFdID09ICclJykK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gNyAtIEludGVycHJldCBh
cyBudW1iZXIgKHRvSW50IGlnbm9yZXMgdHJhaWxpbmcgbm9uLWRpZ2l0IGNoYXJhY3RlcnMsCisg
ICAgICAgICAgICAvLyAgICAgc3VjaCBhcyBhIHBvc3NpYmxlICclJykuCisgICAgICAgICAgICBi
b29sIHZhbGlkTnVtYmVyOworICAgICAgICAgICAgaW50IG51bWJlciA9IGxpbmVQb3NpdGlvbi50
b0ludCgmdmFsaWROdW1iZXIpOworICAgICAgICAgICAgaWYgKCF2YWxpZE51bWJlcikKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gOCAtIElmIHRoZSBsYXN0IGNoYXIg
aXMgYSAnJScgYW5kIHRoZSB2YWx1ZSBpcyBub3QgYmV0d2VlbiAwIGFuZCAxMDAsIGlnbm9yZSBh
bmQga2VlcCBsb29raW5nLgorICAgICAgICAgICAgaWYgKGxpbmVQb3NpdGlvbltsaW5lUG9zaXRp
b24ubGVuZ3RoKCkgLSAxXSA9PSAnJScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyIDwg
MCB8fCBudW1iZXIgPiAxMDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgLy8gMTAgLSBJZiAnJScgdGhlbiBzZXQgc25hcC10by1saW5lcyBmbGFnIHRvIGZh
bHNlLgorICAgICAgICAgICAgICAgIG1fc25hcFRvTGluZXMgPSBmYWxzZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gOSAtIFNldCBjdWUgbGluZSBwb3NpdGlvbiB0byB0aGUgbnVt
YmVyIGZvdW5kLgorICAgICAgICAgICAgbV9saW5lUG9zaXRpb24gPSBudW1iZXI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAvLyAxLTIgLSBDb2xsZWN0IGNoYXJhY3RlcnMgdGhhdCBhcmUgZGln
aXRzLgorICAgICAgICAgICAgU3RyaW5nIHRleHRQb3NpdGlvbiA9IFdlYlZUVFBhcnNlcjo6Y29s
bGVjdERpZ2l0cyhpbnB1dCwgJnBvc2l0aW9uKTsKKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+
PSBpbnB1dC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Ly8gMyAtIENoYXJhY3RlciBhdCBlbmQgbXVzdCBiZSAnJScsIG90aGVyd2lzZSBpZ25vcmUgYW5k
IGtlZXAgbG9va2luZy4KKyAgICAgICAgICAgIGlmIChpbnB1dFtwb3NpdGlvbisrXSAhPSAnJScp
CisgICAgICAgICAgICAgICAgZ290byBPdGhlcndpc2U7CisKKyAgICAgICAgICAgIC8vIDQtNiAt
IEVuc3VyZSBubyBvdGhlciBjaGFycyBpbiB0aGlzIHNldHRpbmcgYW5kIHNldHRpbmcgaXMgbm90
IGVtcHR5LgorICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkgJiYgIVdl
YlZUVFBhcnNlcjo6aXNBU3BhY2UoaW5wdXRbcG9zaXRpb25dKSkKKyAgICAgICAgICAgICAgICBn
b3RvIE90aGVyd2lzZTsKKyAgICAgICAgICAgIGlmICh0ZXh0UG9zaXRpb24uaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyA3LTggLSBJbnRlcnByZXQg
YXMgbnVtYmVyIGFuZCBtYWtlIHN1cmUgaXQgaXMgYmV0d2VlbiAwIGFuZCAxMDAKKyAgICAgICAg
ICAgIC8vICh0b0ludCBpZ25vcmVzIHRyYWlsaW5nIG5vbi1kaWdpdCBjaGFyYWN0ZXJzLCBzdWNo
IGFzIGEgcG9zc2libGUgJyUnKS4KKyAgICAgICAgICAgIGJvb2wgdmFsaWROdW1iZXI7CisgICAg
ICAgICAgICBpbnQgbnVtYmVyID0gdGV4dFBvc2l0aW9uLnRvSW50KCZ2YWxpZE51bWJlcik7Cisg
ICAgICAgICAgICBpZiAoIXZhbGlkTnVtYmVyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgaWYgKG51bWJlciA8IDAgfHwgbnVtYmVyID4gMTAwKQorICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgLy8gOSAtIFNldCBjdWUgdGV4dCBwb3NpdGlvbiB0byB0aGUg
bnVtYmVyIGZvdW5kLgorICAgICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSBudW1iZXI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnUyc6CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAvLyAxLTIgLSBDb2xsZWN0IGNoYXJhY3RlcnMgdGhhdCBhcmUg
ZGlnaXRzLgorICAgICAgICAgICAgU3RyaW5nIGN1ZVNpemUgPSBXZWJWVFRQYXJzZXI6OmNvbGxl
Y3REaWdpdHMoaW5wdXQsICZwb3NpdGlvbik7CisgICAgICAgICAgICBpZiAocG9zaXRpb24gPj0g
aW5wdXQubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8v
IDMgLSBDaGFyYWN0ZXIgYXQgZW5kIG11c3QgYmUgJyUnLCBvdGhlcndpc2UgaWdub3JlIGFuZCBr
ZWVwIGxvb2tpbmcuCisgICAgICAgICAgICBpZiAoaW5wdXRbcG9zaXRpb24rK10gIT0gJyUnKQor
ICAgICAgICAgICAgICAgIGdvdG8gT3RoZXJ3aXNlOworCisgICAgICAgICAgICAvLyA0LTYgLSBF
bnN1cmUgbm8gb3RoZXIgY2hhcnMgaW4gdGhpcyBzZXR0aW5nIGFuZCBzZXR0aW5nIGlzIG5vdCBl
bXB0eS4KKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCgpICYmICFXZWJW
VFRQYXJzZXI6OmlzQVNwYWNlKGlucHV0W3Bvc2l0aW9uXSkpCisgICAgICAgICAgICAgICAgZ290
byBPdGhlcndpc2U7CisgICAgICAgICAgICBpZiAoY3VlU2l6ZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8vIDctOCAtIEludGVycHJldCBhcyBudW1i
ZXIgYW5kIG1ha2Ugc3VyZSBpdCBpcyBiZXR3ZWVuIDAgYW5kIDEwMC4KKyAgICAgICAgICAgIGJv
b2wgdmFsaWROdW1iZXI7CisgICAgICAgICAgICBpbnQgbnVtYmVyID0gY3VlU2l6ZS50b0ludCgm
dmFsaWROdW1iZXIpOworICAgICAgICAgICAgaWYgKCF2YWxpZE51bWJlcikKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAwIHx8IG51bWJlciA+IDEwMCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gOSAtIFNldCBjdWUgc2l6
ZSB0byB0aGUgbnVtYmVyIGZvdW5kLgorICAgICAgICAgICAgbV9jdWVTaXplID0gbnVtYmVyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0EnOgorICAg
ICAgICAgICAgeworICAgICAgICAgICAgLy8gMS00IC0gQ29sbGVjdCB0aGUgbmV4dCB3b3JkIGFu
ZCBzZXQgdGhlIGN1ZSBhbGlnbm1lbnQgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICBTdHJpbmcg
Y3VlQWxpZ25tZW50ID0gV2ViVlRUUGFyc2VyOjpjb2xsZWN0V29yZChpbnB1dCwgJnBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGlmIChjdWVBbGlnbm1lbnQgPT0gc3RhcnRLZXl3b3JkKCkpCisgICAg
ICAgICAgICAgICAgbV9jdWVBbGlnbm1lbnQgPSBTdGFydDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGN1ZUFsaWdubWVudCA9PSBtaWRkbGVLZXl3b3JkKCkpCisgICAgICAgICAgICAgICAgbV9jdWVB
bGlnbm1lbnQgPSBNaWRkbGU7CisgICAgICAgICAgICBlbHNlIGlmIChjdWVBbGlnbm1lbnQgPT0g
ZW5kS2V5d29yZCgpKQorICAgICAgICAgICAgICAgIG1fY3VlQWxpZ25tZW50ID0gRW5kOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb250
aW51ZTsKKworT3RoZXJ3aXNlOgorICAgICAgICAvLyBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY2hh
cmFjdGVycyB0aGF0IGFyZSBub3Qgc3BhY2UgY2hhcmFjdGVycyBhbmQgZGlzY2FyZCB0aGVtLgor
ICAgICAgICBXZWJWVFRQYXJzZXI6OmNvbGxlY3RXb3JkKGlucHV0LCAmcG9zaXRpb24pOworICAg
IH0KK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNr
Q3VlOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2tDdWU6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3VlOjpldmVudFRhcmdldERh
dGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0
RGF0YSogVGV4dFRyYWNrQ3VlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCShy
ZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKIAogI2luY2x1ZGUgIlRleHRU
cmFja0N1ZS5oIgogCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdt
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNs
dWRlICJXZWJWVFRQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJldmlzaW9u
IDEwODEyNikJKGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaDoxMDgxMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrQ3VlX2gKKyNkZWZpbmUgVGV4
dFRyYWNrQ3VlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworY2xhc3MgVGV4dFRyYWNrOworCitjbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291
bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzLCBib29sIHBhdXNl
T25FeGl0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tDdWUo
Y29udGV4dCwgaWQsIHN0YXJ0LCBlbmQsIGNvbnRlbnQsIHNldHRpbmdzLCBwYXVzZU9uRXhpdCkp
OworICAgIH0KKyAgICAKKyAgICBlbnVtIERpcmVjdGlvbiB7IEhvcml6b250YWwsIFZlcnRpY2Fs
R3Jvd2luZ0xlZnQsIFZlcnRpY2FsR3Jvd2luZ1JpZ2h0IH07CisgICAgZW51bSBBbGlnbm1lbnQg
eyBTdGFydCwgTWlkZGxlLCBFbmQgfTsKKworICAgIHZpcnR1YWwgflRleHRUcmFja0N1ZSgpOwor
CisgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OworICAgIHZvaWQgc2V0VHJhY2soUGFzc1Jl
ZlB0cjxUZXh0VHJhY2s+KTsKKworICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBTdHJpbmcmKTsKKworICAgIGRvdWJsZSBz
dGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQorICAgIHZvaWQgc2V0U3Rh
cnRUaW1lKGRvdWJsZSk7CisKKyAgICBkb3VibGUgZW5kVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kVGltZTsgfQorICAgIHZvaWQgc2V0RW5kVGltZShkb3VibGUpOworCisgICAgYm9vbCBwYXVz
ZU9uRXhpdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VPbkV4aXQ7IH0KKyAgICB2b2lkIHNldFBh
dXNlT25FeGl0KGJvb2wpOworCisgICAgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24oKSBjb25zdDsK
KyAgICB2b2lkIHNldERpcmVjdGlvbihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisK
KyAgICBib29sIHNuYXBUb0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwVG9MaW5lczsgfQor
ICAgIHZvaWQgc2V0U25hcFRvTGluZXMoYm9vbCk7CisKKyAgICBpbnQgbGluZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lUG9zaXRpb247IH0KKyAgICB2b2lkIHNldExpbmVQb3NpdGlv
bihpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGludCB0ZXh0UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3RleHRQb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0VGV4dFBvc2l0aW9uKGludCwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2N1ZVNp
emU7IH0KKyAgICB2b2lkIHNldFNpemUoaW50LCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25z
dCBTdHJpbmcmIGFsaWdubWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0QWxpZ25tZW50KGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudDsgfQorICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcm
KTsKKworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7Cisg
ICAgdm9pZCBzZXRDdWVIVE1MKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4pOworCisgICAg
Ym9vbCBpc0FjdGl2ZSgpOworICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CisgICAgCisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW50ZXIpOworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXhpdCk7CisKKyAgICB1c2luZyBSZWZD
b3VudGVkPFRleHRUcmFja0N1ZT46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFj
a0N1ZT46OmRlcmVmOworCitwcm90ZWN0ZWQ6CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpOworCitwcml2YXRlOgorICAgIFRleHRUcmFja0N1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUg
ZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wg
cGF1c2VPbkV4aXQpOworCisgICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgY3VlV2lsbENoYW5nZSgpOworICAgIHZvaWQgY3VlRGlkQ2hhbmdlKCk7CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgCisgICAgU3RyaW5n
IG1faWQ7CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2VuZFRpbWU7Cisg
ICAgU3RyaW5nIG1fY29udGVudDsKKyAgICBEaXJlY3Rpb24gbV93cml0aW5nRGlyZWN0aW9uOwor
ICAgIGludCBtX2xpbmVQb3NpdGlvbjsKKyAgICBpbnQgbV90ZXh0UG9zaXRpb247CisgICAgaW50
IG1fY3VlU2l6ZTsKKyAgICBBbGlnbm1lbnQgbV9jdWVBbGlnbm1lbnQ7CisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudDsKKyAgICBSZWZQdHI8VGV4dFRyYWNr
PiBtX3RyYWNrOworCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAg
IGJvb2wgbV9pc0FjdGl2ZTsKKyAgICBib29sIG1fcGF1c2VPbkV4aXQ7CisgICAgYm9vbCBtX3Nu
YXBUb0xpbmVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAkocmV2
aXNpb24gMTA4MTI2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5pZGw6
MTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAg
ICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFjaywKKyAgICAgICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaWQs
IGluIGRvdWJsZSBzdGFydFRpbWUsIGluIGRvdWJsZSBlbmRUaW1lLCBpbiBET01TdHJpbmcgdGV4
dCwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHNldHRpbmdzLCBp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIHBhdXNlT25FeGl0KSwKKyAg
ICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgRXZlbnRUYXJn
ZXQsCisgICAgICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgICAgICBKU0N1c3RvbUlzUmVh
Y2hhYmxlCisgICAgXSBUZXh0VHJhY2tDdWUgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
VGV4dFRyYWNrIHRyYWNrOworCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBkb3VibGUgc3RhcnRUaW1lOworICAgICAgICBhdHRyaWJ1dGUgZG91Ymxl
IGVuZFRpbWU7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHBhdXNlT25FeGl0OworCisgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyZWN0aW9uCisgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzIChET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzbmFwVG9MaW5l
czsKKyAgICAgICAgYXR0cmlidXRlIGxvbmcgbGluZVBvc2l0aW9uCisgICAgICAgICAgICBzZXR0
ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgbG9uZyB0ZXh0UG9z
aXRpb24KKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IGF0dHJpYnV0ZSBsb25nIHNpemUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ25tZW50CisgICAgICAgICAg
ICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgdGV4dDsKKyAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBnZXRDdWVBc0hUTUwoKTsKKyAg
ICAgICAgCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW50ZXI7CisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXhpdDsKKyAgICAgICAgCisgICAgICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2Vw
dGlvbik7CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAkocmV2aXNp
b24gMTA4MTI2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3Bw
OjEwODEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRy
YWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRUcmFja0N1ZUxpc3Q6
OlRleHRUcmFja0N1ZUxpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIFRleHRUcmFja0N1ZUxp
c3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC5zaXplKCk7Cit9CisKK1Rl
eHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K3sKKyAgICBpZiAoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gbV9saXN0
W2luZGV4XS5nZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworVGV4dFRyYWNrQ3VlKiBUZXh0VHJh
Y2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
bGlzdFtpXS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBtX2xpc3RbaV0uZ2V0KCk7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2tD
dWVMaXN0OjphY3RpdmVDdWVzKCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlQ3VlcykKKyAgICAgICAg
bV9hY3RpdmVDdWVzID0gY3JlYXRlKCk7CisKKyAgICBtX2FjdGl2ZUN1ZXMtPmNsZWFyKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlID0gbV9saXN0W2ldOworICAgICAgICBpZiAoY3VlLT5p
c0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9hY3RpdmVDdWVzLT5hZGQoY3VlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fYWN0aXZlQ3Vlcy5nZXQoKTsKK30KKworYm9vbCBUZXh0VHJhY2tDdWVMaXN0
OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICByZXR1cm4gYWRkKGN1
ZSwgMCwgbV9saXN0LnNpemUoKSk7Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBwcnBDdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkK
K3sKKyAgICBBU1NFUlQoc3RhcnQgPD0gbV9saXN0LnNpemUoKSk7CisgICAgQVNTRVJUKGVuZCA8
PSBtX2xpc3Quc2l6ZSgpKTsKKworICAgIC8vIE1haW50YWluIHRleHQgdHJhY2sgY3VlIG9yZGVy
OgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI3RleHQtdHJhY2stY3VlLW9yZGVyCisgICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlID0g
cHJwQ3VlOworICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgaWYgKCFtX2xpc3QuaXNF
bXB0eSgpICYmIChtX2xpc3Rbc3RhcnQgLSAxXS5nZXQoKSA9PSBjdWUuZ2V0KCkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgbV9saXN0Lmluc2VydChzdGFydCwgY3VlKTsK
KyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzaXplX3QgaW5kZXggPSAoc3RhcnQg
KyBlbmQpIC8gMjsKKyAgICBpZiAoY3VlLT5zdGFydFRpbWUoKSA8IG1fbGlzdFtpbmRleF0tPnN0
YXJ0VGltZSgpIHx8IChjdWUtPnN0YXJ0VGltZSgpID09IG1fbGlzdFtpbmRleF0tPnN0YXJ0VGlt
ZSgpICYmIGN1ZS0+ZW5kVGltZSgpID4gbV9saXN0W2luZGV4XS0+ZW5kVGltZSgpKSkKKyAgICAg
ICAgcmV0dXJuIGFkZChjdWUucmVsZWFzZSgpLCBzdGFydCwgaW5kZXgpOworCisgICAgcmV0dXJu
IGFkZChjdWUucmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7Cit9CisKK2Jvb2wgVGV4dFRyYWNr
Q3VlTGlzdDo6cmVtb3ZlKFRleHRUcmFja0N1ZSogY3VlKQoreworICAgIHNpemVfdCBpbmRleCA9
IG1fbGlzdC5maW5kKGN1ZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBjdWUtPnNldElzQWN0aXZlKGZhbHNlKTsKKyAgICBtX2xpc3Qu
cmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0VHJhY2tDdWVM
aXN0Ojpjb250YWlucyhUZXh0VHJhY2tDdWUqIGN1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9s
aXN0LmNvbnRhaW5zKGN1ZSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6Y2xlYXIoKQor
eworICAgIG1fbGlzdC5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0
LmgJKHJldmlzaW9uIDEwODEyNikJKGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWVMaXN0Lmg6MTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGV4dFRyYWNrQ3VlTGlzdF9oCisjZGVmaW5lIFRleHRUcmFja0N1ZUxpc3RfaAorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJh
Y2tDdWVMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlTGlzdD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZUxpc3QpOworICAgIH0K
KworICAgIH5UZXh0VHJhY2tDdWVMaXN0KCkgeyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0
aCgpIGNvbnN0OworICAgIFRleHRUcmFja0N1ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CisgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAg
IFRleHRUcmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKTsKKworICAgIGJvb2wgYWRkKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPik7CisgICAgYm9vbCByZW1vdmUoVGV4dFRyYWNrQ3VlKik7CisgICAg
Ym9vbCBjb250YWlucyhUZXh0VHJhY2tDdWUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUZXh0
VHJhY2tDdWVMaXN0KCk7CisgICAgYm9vbCBhZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBz
aXplX3QsIHNpemVfdCk7CisgICAgdm9pZCBjbGVhcigpOworICAgIAorICAgIFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiA+IG1fbGlzdDsKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4g
bV9hY3RpdmVDdWVzOworICAgIAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVM
aXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUxpc3QuaWRsCShyZXZpc2lvbiAxMDgxMjYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5pZGw6MTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1WSURFT19UUkFDSywKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZp
ZGVvVHJhY2ssCisgICAgICAgIEluZGV4ZWRHZXR0ZXIKKyAgICBdIFRleHRUcmFja0N1ZUxpc3Qg
eworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAg
ICAgIFRleHRUcmFja0N1ZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBU
ZXh0VHJhY2tDdWUgZ2V0Q3VlQnlJZChpbiBET01TdHJpbmcgaWQpOworICAgIH07CisKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="129861"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="129862"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>