<?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>247061</bug_id>
          
          <creation_ts>2022-10-26 05:40:07 -0700</creation_ts>
          <short_desc>[MQ4] Add FeatureSchemas for most media query features</short_desc>
          <delta_ts>2022-10-26 11:43:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>180234</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1908403</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 05:40:07 -0700</bug_when>
    <thetext>Schemas with evaluation functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908407</commentid>
    <comment_count>1</comment_count>
      <attachid>463249</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 05:56:26 -0700</bug_when>
    <thetext>Created attachment 463249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908409</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-26 06:14:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/101586285&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908413</commentid>
    <comment_count>3</comment_count>
      <attachid>463250</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 06:44:51 -0700</bug_when>
    <thetext>Created attachment 463250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908420</commentid>
    <comment_count>4</comment_count>
      <attachid>463251</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 07:47:58 -0700</bug_when>
    <thetext>Created attachment 463251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908421</commentid>
    <comment_count>5</comment_count>
      <attachid>463252</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 07:48:37 -0700</bug_when>
    <thetext>Created attachment 463252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908431</commentid>
    <comment_count>6</comment_count>
      <attachid>463252</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-10-26 08:15:39 -0700</bug_when>
    <thetext>Comment on attachment 463252
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=463252&amp;action=review

&gt; Source/WebCore/loader/DocumentLoader.h:364
&gt; +    // FXIME: Why is this in a Loader?

why!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908453</commentid>
    <comment_count>7</comment_count>
      <attachid>463256</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-26 10:03:40 -0700</bug_when>
    <thetext>Created attachment 463256
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908502</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-26 11:43:12 -0700</bug_when>
    <thetext>Committed 256030@main (7ea03b267c5a): &lt;https://commits.webkit.org/256030@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463256.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463249</attachid>
            <date>2022-10-26 05:56:26 -0700</date>
            <delta_ts>2022-10-26 06:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247061-20221026155624.patch</filename>
            <type>text/plain</type>
            <size>49508</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAyZjEyODY1OWRkMDg2ZjZiYzU2MDMyNzhjNDQ0YTdjMTRkNzg2NTVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI2IE9jdCAyMDIyIDE1OjQ2OjQ1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
QWRkIEZlYXR1cmVTY2hlbWFzIGZvciBtb3N0IG1lZGlhIHF1ZXJ5IGZlYXR1cmVzCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MDYxIEluY2x1ZGUgYSBSYWRhciBs
aW5rIChPT1BTISkuCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFkZCBzY2hlbWFzIHdp
dGggZXZhbHVhdGlvbiBmdW5jdGlvbnMgZm9yIG1vc3QgbWVkaWEgcXVlcnkgZmVhdHVyZXMgKGV2
ZXJ5dGhpbmcgZXhjZXB0IHRoZSByZXNvbHV0aW9uIHF1ZXJpZXMpLgpFdmFsdWF0aW9uIGZ1bmN0
aW9ucyBhcmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nIG9uZXMgaW4gTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAuCgpUaGVzZSBhcmUgbm90IHVzZWQgeWV0LgoKKiBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMu
Y3BwOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpTaXplRmVhdHVyZVNjaGVtYTo6U2l6ZUZlYXR1
cmVTY2hlbWEpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpvcmllbnRhdGlvbik6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6
TVE6OmV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRl
Z2VyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVCb29sZWFuRmVhdHVyZSk6CihX
ZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2VyRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVh
dGVOdW1iZXJGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZUlkZW50aWZpZXJGZWF0dXJl
KToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNv
cmU6Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OnZhbGlkYXRlRmVhdHVyZUFnYWlu
c3RTY2hlbWEpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5
cGVzLmg6CihXZWJDb3JlOjpNUTo6RmVhdHVyZVNjaGVtYTo6RmVhdHVyZVNjaGVtYSk6CiogU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6
TVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgooV2ViQ29yZTo6
TVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6Ok1ROjpN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOiBEZWxldGVkLgoqIFNv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHA6IEFkZGVkLgooV2ViQ29yZTo6
TVE6OkZlYXR1cmVzOjpCb29sZWFuU2NoZW1hOjpCb29sZWFuU2NoZW1hKToKKFdlYkNvcmU6Ok1R
OjpGZWF0dXJlczo6Qm9vbGVhblNjaGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6
RmVhdHVyZXM6OkludGVnZXJTY2hlbWE6OkludGVnZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZl
YXR1cmVzOjpJbnRlZ2VyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0
dXJlczo6TGVuZ3RoU2NoZW1hOjpMZW5ndGhTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjpMZW5ndGhTY2hlbWE6OnZhbHVlRnVuY3Rpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpS
YXRpb1NjaGVtYTo6UmF0aW9TY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1Nj
aGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OklkZW50aWZpZXJT
Y2hlbWE6OklkZW50aWZpZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpJZGVudGlm
aWVyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW5pbWF0
aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW55SG92ZXIpOgooV2ViQ29yZTo6TVE6OkZl
YXR1cmVzOjphbnlQb2ludGVyKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YXNwZWN0UmF0aW8p
OgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OmNvbG9yR2FtdXQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvckluZGV4KToKKFdlYkNv
cmU6Ok1ROjpGZWF0dXJlczo6ZGV2aWNlQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjpkZXZpY2VIZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkZXZpY2VXaWR0aCk6
CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmR5bmFtaWNSYW5nZSk6CihXZWJDb3JlOjpNUTo6RmVh
dHVyZXM6OmZvcmNlZENvbG9ycyk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmdyaWQpOgooV2Vi
Q29yZTo6TVE6OkZlYXR1cmVzOjpoZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpob3Zl
cik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmludmVydGVkQ29sb3JzKToKKFdlYkNvcmU6Ok1R
OjpGZWF0dXJlczo6bW9ub2Nocm9tZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6Om9yaWVudGF0
aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cG9pbnRlcik6CihXZWJDb3JlOjpNUTo6RmVh
dHVyZXM6OnByZWZlcnNDb250cmFzdCk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnByZWZlcnNE
YXJrSW50ZXJmYWNlKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cHJlZmVyc1JlZHVjZWRNb3Rp
b24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpzY2FuKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJl
czo6dHJhbnNmb3JtMmQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp0cmFuc2Zvcm0zZCk6CihX
ZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnRyYW5zaXRpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
Ojp2aWRlb1BsYXlhYmxlSW5saW5lKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6d2lkdGgpOgoo
V2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkaXNwbGF5TW9kZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OnByZWZlcnNDb2xvclNjaGVtZSk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlGZWF0dXJlcy5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFR
dWVyeVBhcnNlci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwOgooV2Vi
Q29yZTo6U3R5bGU6OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNv
bnRleHRGb3JRdWVyeSBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAg
ICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiB8ICAgNiArCiAuLi4vY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVy
ZXMuY3BwICAgICAgfCAgIDcgKy0KIC4uLi9jc3MvcXVlcnkvQ29udGFpbmVyUXVlcnlGZWF0dXJl
cy5oICAgICAgICB8ICAgMyArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAgIHwgIDY3ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmggICAgfCAgIDUgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIu
Y3BwICAgICB8ICAgMiArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgg
ICAgICAgIHwgICA3ICstCiAuLi4vV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAgfCAgMjggKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggICB8ICAgNSArLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5j
cHAgIHwgNjY3ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlGZWF0dXJlcy5oIHwgIDc1ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeVBhcnNlci5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVy
eUV2YWx1YXRvci5jcHAgfCAgIDMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDg1MiBpbnNlcnRpb25z
KCspLCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9j
c3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggZTMyYzExMzExZGY4Li5kMTZmZGUwZjY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04ODcsNiAr
ODg3LDcgQEAgY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAogY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1
ZXJ5U2VyaWFsaXphdGlvbi5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAor
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFy
c2VyLmNwcAogY3NzL3R5cGVkb20vQ29tcHV0ZWRTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3Bw
CiBjc3MvdHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJjMTMyYmI4
MGY0Li4yZjk3OTFmNWVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjYsNiArNTUyNiw3IEBACiAJCUU0NTVBNTcxMjhG
RDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU3MDI4RkQ3M0YzMDBCNkVBNzYgLyog
TWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNDU1QTU4MjI4RkU4RDhEMDBCNkVBNzYg
LyogTWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAqLzsgfTsKIAkJ
RTQ1NUE1OTQyOTAyODc4OTAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNTkzMjkwMjg3
ODgwMEI2RUE3NiAvKiBDb250YWluZXJRdWVyeUZlYXR1cmVzLmggKi87IH07CisJCUU0NTVBNUJB
MjkwN0E4OUEwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNUI5MjkwN0E4OTkwMEI2RUE3NiAv
KiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1
IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAw
NERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZD
MDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAq
LzsgfTsKQEAgLTE4MDUzLDYgKzE4MDU0LDggQEAKIAkJRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2
IC8qIE1lZGlhUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFR
dWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDU1QTU5MTI5MDI4Nzc4MDBC
NkVBNzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb250YWluZXJRdWVyeUZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1NUE1OTMyOTAyODc4ODAwQjZFQTc2IC8qIENvbnRhaW5lclF1
ZXJ5RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVy
UXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU1QTVCOTI5
MDdBODk5MDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNDU1QTVCQjI5MDdBOEEzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1NzUsNiArMzI1NzgsOCBAQAog
CQkJCUU0NTVBNTgxMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5LmggKi8sCiAJCQkJRTQ1
NUE1NkYyOEZENzNFQjAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAogCQkJ
CUU0NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJ
CQkJRTQ1NUE1QkIyOTA3QThBMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5jcHAgKi8s
CisJCQkJRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oICov
LAogCQkJCUU0NEY0MjJGMjhGNkE2NTIwMDBGODdCQyAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAq
LywKIAkJCQlFNDRGNDIyRDI4RjZBNjQ4MDAwRjg3QkMgLyogTWVkaWFRdWVyeVBhcnNlci5oICov
LAogCQkJKTsKQEAgLTM3NDcwLDYgKzM3NDc1LDcgQEAKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4
OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1
NUE1NzEyOEZENzNGMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlh
UXVlcnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3
QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdB
RDdEMDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDNBQTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVy
eUZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZl
YXR1cmVzLmNwcAppbmRleCAxNDVkMDhmMzQwM2UuLjQ4MGU4NTYwYjQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmNwcApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lclF1
ZXJ5RmVhdHVyZXMuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
QEAgLTMzLDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmU6OkNROjpGZWF0dXJlcyB7CiB1c2lu
ZyBuYW1lc3BhY2UgTVE7CiAKIHN0cnVjdCBTaXplRmVhdHVyZVNjaGVtYSA6IHB1YmxpYyBGZWF0
dXJlU2NoZW1hIHsKLSAgICBTaXplRmVhdHVyZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NW
YWx1ZUlEPiB2YWx1ZUlkZW50aWZpZXJzID0geyB9KQotICAgICAgICA6IEZlYXR1cmVTY2hlbWEo
bmFtZSwgdHlwZSwgdmFsdWVUeXBlcywgdmFsdWVJZGVudGlmaWVycykKKyAgICBTaXplRmVhdHVy
ZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1
ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMg
PSB7IH0pCisgICAgICAgIDogRmVhdHVyZVNjaGVtYShuYW1lLCB0eXBlLCB2YWx1ZVR5cGVzLCBX
VEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogCiAgICAgRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1
YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQpAQCAtMTY3LDcgKzE2OCw3IEBA
IGNvbnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKICAgICAgICAgRXZhbHVhdGlvblJl
c3VsdCBldmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgUmVuZGVyQm94
JiByZW5kZXJlciwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0IG92ZXJy
aWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHJlbmRlcmVyLmNv
bnRlbnRIZWlnaHQoKSA+PSByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKLSAgICAgICAgICAgIHJl
dHVybiBldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShmZWF0dXJlLCBpc1BvcnRyYWl0ID8gQ1NTVmFs
dWVQb3J0cmFpdCA6IENTU1ZhbHVlTGFuZHNjYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBldmFs
dWF0ZUlkZW50aWZpZXJGZWF0dXJlKGZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRy
YWl0IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKaW5kZXggNDk3
OThkYjZlZDMxLi5iMmZlOGU2MTQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaApAQCAtMjQsOCArMjQsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZTo6Q1EgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZDY1ZjgxZmU2MjAu
LmYyM2QxZGY1MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVy
aWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkv
R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC04Myw2ICs4MywzMiBAQCBzdGF0aWMg
RXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUxlbmd0aENvbXBhcmlzb24oTGF5b3V0VW5pdCBzaXpl
LCBjb25zdCBzdGQ6Om9wdAogICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShj
b21wYXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKIH07CiAKK3N0YXRpYyBFdmFsdWF0aW9uUmVz
dWx0IGV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbihkb3VibGUgbnVtYmVyLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPENvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpCit7CisgICAgaWYgKCFj
b21wYXJpc29uKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKworICAg
IGF1dG8gZXhwcmVzc2lvbk51bWJlciA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oY29tcGFyaXNvbi0+dmFsdWUuZ2V0KCkpLT5kb3VibGVWYWx1ZSgpOworCisgICAgYXV0byBs
ZWZ0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gZXhwcmVzc2lvbk51bWJlciA6IG51bWJlcjsKKyAg
ICBhdXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gbnVtYmVyIDogZXhwcmVzc2lvbk51
bWJlcjsKKworICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29u
LT5vcCwgbGVmdCwgcmlnaHQpKTsKK307CisKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1
YXRlSW50ZWdlckNvbXBhcmlzb24oaW50IG51bWJlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb21w
YXJpc29uPiYgY29tcGFyaXNvbiwgU2lkZSBzaWRlKQoreworICAgIGlmICghY29tcGFyaXNvbikK
KyAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAgICBhdXRvIGV4cHJl
c3Npb25OdW1iZXIgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlz
b24tPnZhbHVlLmdldCgpKS0+aW50VmFsdWUoKTsKKworICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0g
U2lkZTo6TGVmdCA/IGV4cHJlc3Npb25OdW1iZXIgOiBudW1iZXI7CisgICAgYXV0byByaWdodCA9
IHNpZGUgPT0gU2lkZTo6TGVmdCA/IG51bWJlciA6IGV4cHJlc3Npb25OdW1iZXI7CisKKyAgICBy
ZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJp
Z2h0KSk7Cit9OworCiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25z
dCBGZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRD
b21wYXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKQEAgLTEzMSwxOCArMTU3LDQ5
IEBAIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYg
ZmVhdHVyZSwgZG91YmxlIHJhdGlvKQogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmlnaHRSZXN1
bHQ7CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3Qg
RmVhdHVyZSYgZmVhdHVyZSwgQ1NTVmFsdWVJRCBleHBlY3RlZFZhbHVlKQorRXZhbHVhdGlvblJl
c3VsdCBldmFsdWF0ZUJvb2xlYW5GZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGJvb2wg
Y3VycmVudFZhbHVlKQogewogICAgIGlmICghZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAg
ICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gdG9F
dmFsdWF0aW9uUmVzdWx0KGN1cnJlbnRWYWx1ZSk7CiAKLSAgICBhdXRvJiBjb21wYXJpc29uID0g
KmZlYXR1cmUucmlnaHRDb21wYXJpc29uOworICAgIGF1dG8mIHZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCpmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbi0+dmFsdWUpOworICAgIGF1
dG8gZXhwZWN0ZWRWYWx1ZSA9IHZhbHVlLmludFZhbHVlKCk7CiAKLSAgICBpZiAoIWlzPENTU1By
aW1pdGl2ZVZhbHVlPihjb21wYXJpc29uLnZhbHVlKSB8fCBjb21wYXJpc29uLm9wICE9IENvbXBh
cmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgZXhwZWN0ZWRW
YWx1ZSAhPSAxKQogICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAor
ICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoZXhwZWN0ZWRWYWx1ZSA9PSBjdXJyZW50VmFs
dWUpOworfQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3Qg
RmVhdHVyZSYgZmVhdHVyZSwgaW50IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICBpZiAoIWZlYXR1cmUu
bGVmdENvbXBhcmlzb24gJiYgIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQorICAgICAgICByZXR1
cm4gdG9FdmFsdWF0aW9uUmVzdWx0KCEhY3VycmVudFZhbHVlKTsKKworICAgIGF1dG8gbGVmdFJl
c3VsdCA9IGV2YWx1YXRlSW50ZWdlckNvbXBhcmlzb24oY3VycmVudFZhbHVlLCBmZWF0dXJlLmxl
ZnRDb21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKKyAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVh
dGVJbnRlZ2VyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29u
LCBTaWRlOjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0Owor
fQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJl
JiBmZWF0dXJlLCBkb3VibGUgY3VycmVudFZhbHVlKQoreworICAgIGlmICghZmVhdHVyZS5sZWZ0
Q29tcGFyaXNvbiAmJiAhZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCisgICAgICAgIHJldHVybiB0
b0V2YWx1YXRpb25SZXN1bHQoISFjdXJyZW50VmFsdWUpOworCisgICAgYXV0byBsZWZ0UmVzdWx0
ID0gZXZhbHVhdGVOdW1iZXJDb21wYXJpc29uKGN1cnJlbnRWYWx1ZSwgZmVhdHVyZS5sZWZ0Q29t
cGFyaXNvbiwgU2lkZTo6TGVmdCk7CisgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1YXRlTnVt
YmVyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRl
OjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSWRlbnRpZmllckZlYXR1cmUoY29uc3QgRmVhdHVyZSYg
ZmVhdHVyZSwgQ1NTVmFsdWVJRCBjdXJyZW50VmFsdWUpCit7CisgICAgaWYgKCFmZWF0dXJlLnJp
Z2h0Q29tcGFyaXNvbikKKyAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjdXJyZW50
VmFsdWUgIT0gQ1NTVmFsdWVOb25lICYmIGN1cnJlbnRWYWx1ZSAhPSBDU1NWYWx1ZU5vUHJlZmVy
ZW5jZSk7CisKICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
ZmVhdHVyZS5yaWdodENvbXBhcmlzb24tPnZhbHVlKTsKLSAgICByZXR1cm4gdG9FdmFsdWF0aW9u
UmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICByZXR1cm4gdG9F
dmFsdWF0aW9uUmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBjdXJyZW50VmFsdWUpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlF
dmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2
YWx1YXRvci5oCmluZGV4IDZmYTA4NWY3YzE3ZC4uMDU2ZWViYjhkODljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApA
QCAtMzcsNyArMzcsMTAgQEAgbmFtZXNwYWNlIE1RIHsKIAogRXZhbHVhdGlvblJlc3VsdCBldmFs
dWF0ZUxlbmd0aEZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIExheW91dFVuaXQsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmKTsKIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0Zl
YXR1cmUoY29uc3QgRmVhdHVyZSYsIGRvdWJsZSk7Ci1FdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
RGlzY3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKTsKK0V2YWx1YXRpb25S
ZXN1bHQgZXZhbHVhdGVCb29sZWFuRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgYm9vbCk7CitFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGludCk7
CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiwg
ZG91YmxlKTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVJZGVudGlmaWVyRmVhdHVyZShjb25z
dCBGZWF0dXJlJiwgQ1NTVmFsdWVJRCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZh
bHVhdG9yPgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXgg
MTM0ZGRjYTJmZmEzLi4wMGY4MThmZGQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBA
IGJvb2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0
U2NoZW1hKEZlYXR1cmUmIGZlYXR1cmUsCiAKICAgICBhdXRvIGlzVmFsaWQgPSBbJl0gewogICAg
ICAgICBpZiAoc2NoZW1hLnR5cGUgPT0gRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUpIHsK
LSAgICAgICAgICAgIGlmIChmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmIGZlYXR1cmUubGVmdENv
bXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgICAgICAgICBp
ZiAoZmVhdHVyZS5zeW50YXggPT0gU3ludGF4OjpSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5yaWdodENvbXBhcmlzb24gJiYgZmVh
dHVyZS5yaWdodENvbXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKaW5kZXggYTNiZTMwZjg2MDdjLi41MWYwYzhh
YzhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFR
dWVyeVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1
ZXJ5VHlwZXMuaApAQCAtNzIsNyArNzIsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uIHsKIGVudW0gY2xh
c3MgRXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9Owog
CiBzdHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKLSAgICBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhIGNvbnZlcnNpb25EYXRhOworICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsK
KyAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgfTsKICAgICBj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTk1LDEx
ICs5NiwxMSBAQCBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CiAKICAgICB2aXJ0dWFsIEV2YWx1YXRp
b25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9u
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247IH0KIAot
ICAgIEZlYXR1cmVTY2hlbWEoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBPcHRp
b25TZXQ8VmFsdWVUeXBlPiB2YWx1ZVR5cGVzLCBWZWN0b3I8Q1NTVmFsdWVJRD4gdmFsdWVJZGVu
dGlmaWVycykKKyAgICBGZWF0dXJlU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFR5cGUg
dHlwZSwgT3B0aW9uU2V0PFZhbHVlVHlwZT4gdmFsdWVUeXBlcywgVmVjdG9yPENTU1ZhbHVlSUQ+
JiYgdmFsdWVJZGVudGlmaWVycyA9IHsgfSkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAg
ICwgdHlwZSh0eXBlKQogICAgICAgICAsIHZhbHVlVHlwZXModmFsdWVUeXBlcykKLSAgICAgICAg
LCB2YWx1ZUlkZW50aWZpZXJzKHZhbHVlSWRlbnRpZmllcnMpCisgICAgICAgICwgdmFsdWVJZGVu
dGlmaWVycyhXVEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogICAgIHZpcnR1YWwg
fkZlYXR1cmVTY2hlbWEoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGI1NjNiYjI4ZWE5Mi4uY2M0NzNl
NWI2NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0
eWxlRm9udFNpemVGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IE1RIHsKQEAgLTM2LDcgKzM3LDggQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0
b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxl
KQogICAgIDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUo
bWVkaWFUeXBlKQotICAgICwgbV9ldmFsdWF0aW9uQ29udGV4dCh7IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEgeyAqcm9vdEVsZW1lbnRTdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgZG9jdW1lbnQu
cmVuZGVyVmlldygpIH0sIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9KQorICAgICwgbV9kb2N1bWVu
dChkb2N1bWVudCkKKyAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZShyb290RWxlbWVudFN0eWxlKQog
ewogfQogCkBAIC02NywxNyArNjksMjcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFs
dWF0ZShjb25zdCBNZWRpYVF1ZXJ5JiBxdWVyeSkgY29uc3QKICAgICBhdXRvIGNvbmRpdGlvbk1h
dGNoZXMgPSBbJl0gewogICAgICAgICBpZiAoIXF1ZXJ5LmNvbmRpdGlvbikKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKCpxdWVyeS5j
b25kaXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7
CisKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAoIW1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVs
dFN0eWxlLmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9u
dFNpemVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgbV9kb2N1bWVudCk7CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOworICAgICAgICBkZWZhdWx0U3R5bGUu
c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CisgICAgICAgIGRl
ZmF1bHRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgpOworCisgICAgICAgIEZlYXR1cmVFdmFs
dWF0aW9uQ29udGV4dCBjb250ZXh0IHsgbV9kb2N1bWVudCwgeyAqbV9yb290RWxlbWVudFN0eWxl
LCAmZGVmYXVsdFN0eWxlLCBudWxscHRyLCBtX2RvY3VtZW50LnJlbmRlclZpZXcoKSB9LCBudWxs
cHRyIH07CisgICAgICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbigqcXVlcnkuY29uZGl0aW9u
LCBjb250ZXh0KSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogICAgIH0oKTsKIAogICAgIHJl
dHVybiBjb25kaXRpb25NYXRjaGVzICE9IGlzTmVnYXRlZDsKIH0KIAotRXZhbHVhdGlvblJlc3Vs
dCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGNv
bnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEV2YWx1
YXRpb25SZXN1bHQ6OlVua25vd247Ci19Ci0KLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzJiMmYwMWNmYTg2Li4wZDFjYjM4
ODgzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0
b3IuaApAQCAtNDAsMTEgKzQwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKGNvbnN0
IE1lZGlhUXVlcnlMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1
ZXJ5JikgY29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25z
dCBGZWF0dXJlJiwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7Ci0KIHBy
aXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0
dXJlRXZhbHVhdGlvbkNvbnRleHQgbV9ldmFsdWF0aW9uQ29udGV4dDsKKyAgICBjb25zdCBEb2N1
bWVudCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0
eWxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZl
YXR1cmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUyNDBj
MThmYjczZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRp
YVF1ZXJ5RmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNjY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVh
dHVyZXMuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlF1
aXJrcy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJUaGVtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZTo6TVE6OkZlYXR1cmVzIHsKKworc3RydWN0IEJvb2xlYW5TY2hl
bWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVGdW5jdGlvbiA9IEZ1
bmN0aW9uPGJvb2woY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgQm9v
bGVhblNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVG
dW5jdGlvbikKKyAgICAgICAgOiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5
cGU6OkRpc2NyZXRlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAg
ICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKwor
ICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29u
c3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlQm9vbGVhbkZlYXR1cmUoZmVhdHVyZSwgdmFsdWVG
dW5jdGlvbihjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24g
dmFsdWVGdW5jdGlvbjsKK307CisKK3N0cnVjdCBJbnRlZ2VyU2NoZW1hIDogcHVibGljIEZlYXR1
cmVTY2hlbWEgeworICAgIHVzaW5nIFZhbHVlRnVuY3Rpb24gPSBGdW5jdGlvbjxpbnQoY29uc3Qg
RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgSW50ZWdlclNjaGVtYShjb25zdCBB
dG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlvbikKKyAgICAgICAg
OiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1
cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24o
V1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQg
ZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2
YWx1YXRlSW50ZWdlckZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisK
K3N0cnVjdCBMZW5ndGhTY2hlbWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcg
VmFsdWVGdW5jdGlvbiA9IEZ1bmN0aW9uPExheW91dFVuaXQoY29uc3QgRmVhdHVyZUV2YWx1YXRp
b25Db250ZXh0Jik+OworCisgICAgTGVuZ3RoU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUs
IFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEo
bmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVU
eXBlOjpMZW5ndGggfSkKKyAgICAgICAgLCB2YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5j
dGlvbikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZl
YXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1
cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSwgY29udGV4dC5jb252ZXJzaW9uRGF0
YSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsK
K307CisKK3N0cnVjdCBSYXRpb1NjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1
c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248ZG91YmxlKGNvbnN0IEZlYXR1cmVFdmFsdWF0
aW9uQ29udGV4dCYpPjsKKworICAgIFJhdGlvU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUs
IFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEo
bmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVU
eXBlOjpSYXRpbyB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0
aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBj
b25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlUmF0aW9GZWF0dXJl
KGZlYXR1cmUsIHZhbHVlRnVuY3Rpb24oY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBWYWx1ZUZ1bmN0aW9uIHZhbHVlRnVuY3Rpb247Cit9OworCit1c2luZyBNYXRjaGluZ0lkZW50
aWZpZXJzID0gVmVjdG9yPENTU1ZhbHVlSUQsIDE+OworCitzdHJ1Y3QgSWRlbnRpZmllclNjaGVt
YSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVu
Y3Rpb248TWF0Y2hpbmdJZGVudGlmaWVycyhjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQm
KT47CisKKyAgICBJZGVudGlmaWVyU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3Rv
cjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMsIFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1
bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlw
ZTo6RGlzY3JldGUsIHsgfSwgV1RGTW92ZSh2YWx1ZUlkZW50aWZpZXJzKSkKKyAgICAgICAgLCB2
YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1
cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGF1dG8gdmFsdWVJRHMgPSB2YWx1ZUZ1bmN0aW9uKGNvbnRleHQpOworICAgICAgICBmb3Ig
KGF1dG8gdmFsdWVJRCA6IHZhbHVlSURzKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWVJZGVu
dGlmaWVycy5jb250YWlucyh2YWx1ZUlEKSk7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVJZGVu
dGlmaWVyRmVhdHVyZShmZWF0dXJlLCB2YWx1ZUlEKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVmFsdWVGdW5jdGlvbiB2YWx1ZUZ1bmN0aW9uOworfTsKKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgYW5pbWF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LWFuaW1hdGlv
biJfcywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJl
dHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVt
YSB7CisgICAgICAgICJhbnktaG92ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVIb3ZlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAg
ICAgICAgICBib29sIGlzU3VwcG9ydGVkID0gIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlzU3VwcG9ydGVkID8gQ1NTVmFsdWVI
b3ZlciA6IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2No
ZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBhbnlQb2ludGVyKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7Cisg
ICAgICAgICJhbnktcG9pbnRlciJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBD
U1NWYWx1ZUZpbmUsIENTU1ZhbHVlQ29hcnNlIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQp
IHsKKyAgICAgICAgICAgIGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnBh
Z2UoKTsKKyAgICAgICAgICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljcyA9IHBhZ2UgPyBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFi
bGVQb2ludGluZ0RldmljZXMoKSA6IE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPigp
OworCisgICAgICAgICAgICBNYXRjaGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzOworICAgICAg
ICAgICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuY29udGFpbnMoUG9pbnRlckNoYXJhY3Rl
cmlzdGljczo6RmluZSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1Zh
bHVlRmluZSk7CisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlu
cyhQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2UpKQorICAgICAgICAgICAgICAgIGlkZW50
aWZpZXJzLmFwcGVuZChDU1NWYWx1ZUNvYXJzZSk7CisgICAgICAgICAgICBpZiAoaWRlbnRpZmll
cnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChDU1NWYWx1
ZU5vbmUpOworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXJzOworICAgICAgICB9CisKKyAg
ICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFzcGVj
dFJhdGlvKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPFJhdGlvU2No
ZW1hPiBzY2hlbWEgeworICAgICAgICAiYXNwZWN0LXJhdGlvIl9zLAorICAgICAgICBbXShhdXRv
JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiB2aWV3ID0gKmNvbnRleHQuZG9jdW1lbnQu
dmlldygpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odmlldy5sYXlv
dXRXaWR0aCgpKSAvIHZpZXcubGF5b3V0SGVpZ2h0KCk7CisgICAgICAgIH0KKyAgICB9OworICAg
IHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9yKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEludGVnZXJTY2hlbWE+IHNjaGVtYSB7
CisgICAgICAgICJjb2xvciJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAg
ICAgICAgcmV0dXJuIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KGNvbnRleHQuZG9jdW1lbnQuZnJh
bWUoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJu
IHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3JHYW11dCgpCit7CisgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEg
eworICAgICAgICAiY29sb3ItZ2FtdXQiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlU1JH
QiwgQ1NTVmFsdWVQMywgQ1NTVmFsdWVSZWMyMDIwIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUo
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIHN0YXJ0
IGRldGVjdGluZyBkaXNwbGF5cyB0aGF0IHN1cHBvcnQgbW9yZSBjb2xvcnMuCisgICAgICAgICAg
ICBNYXRjaGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzIHsgQ1NTVmFsdWVTUkdCIH07CisgICAg
ICAgICAgICBpZiAoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKGZyYW1lLm1haW5GcmFtZSgp
LnZpZXcoKSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlUDMp
OworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXJzOworICAgICAgICB9CisgICAgfTsKKyAg
ICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckluZGV4KCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEludGVnZXJTY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJjb2xvci1pbmRleCJfcywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0
dXJuIDA7IH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVT
Y2hlbWEmIGRldmljZUFzcGVjdFJhdGlvKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPFJhdGlvU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiZGV2aWNlLWFzcGVjdC1y
YXRpbyJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byBz
Y3JlZW5TaXplID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5tYWluRnJhbWUoKS5zY3JlZW5T
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzY3JlZW5TaXpl
LndpZHRoKCkpIC8gc2NyZWVuU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAg
cmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgZGV2aWNlSGVpZ2h0KCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2No
ZW1hIHsKKyAgICAgICAgImRldmljZS1oZWlnaHQiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgY29udGV4dC5kb2N1bWVudC5m
cmFtZSgpLT5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCkuaGVpZ2h0KCkgfTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgZGV2
aWNlUGl4ZWxSYXRpbygpOworCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VXaWR0aCgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNjaGVt
YSB7CisgICAgICAgICJkZXZpY2Utd2lkdGgiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQp
IHsKKyAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgY29udGV4dC5kb2N1bWVudC5mcmFt
ZSgpLT5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCkud2lkdGgoKSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkeW5hbWlj
UmFuZ2UoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmll
clNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgImR5bmFtaWMtcmFuZ2UiX3MsCisgICAgICAgIFZl
Y3RvciB7IENTU1ZhbHVlU3RhbmRhcmQsIENTU1ZhbHVlSGlnaCB9LAorICAgICAgICBbXShhdXRv
JiBjb250ZXh0KSB7CisgICAgICAgICAgICBib29sIHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSA9
IFsmXSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5m
cmFtZSgpOworICAgICAgICAgICAgICAgIGlmICghZnJhbWUuc2V0dGluZ3MoKS5oZHJNZWRpYUNh
cGFiaWxpdGllc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFN1cHBvcnRzSGlnaER5
bmFtaWNSYW5nZVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRB
Y2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2Uo
ZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgTWF0Y2hpbmdJZGVudGlmaWVycyBpZGVudGlmaWVycyB7IENTU1ZhbHVlU3RhbmRhcmQgfTsK
KyAgICAgICAgICAgIGlmIChzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCisgICAgICAgICAgICAg
ICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlSGlnaCk7CisgICAgICAgICAgICByZXR1cm4g
aWRlbnRpZmllcnM7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisK
K2NvbnN0IEZlYXR1cmVTY2hlbWEmIGZvcmNlZENvbG9ycygpCit7CisgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAi
Zm9yY2VkLWNvbG9ycyJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1
ZUFjdGl2ZSB9LAorICAgICAgICBbXShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIE1hdGNo
aW5nSWRlbnRpZmllcnMgeyBDU1NWYWx1ZU5vbmUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAg
cmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgZ3JpZCgpCit7CisgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgewor
ICAgICAgICAiZ3JpZCJfcywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBoZWln
aHQoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1h
PiBzY2hlbWEgeworICAgICAgICAiaGVpZ2h0Il9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0
KSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5kb2N1bWVudC52aWV3KCktPmxheW91dEhl
aWdodCgpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25z
dCBGZWF0dXJlU2NoZW1hJiBob3ZlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiaG92ZXIiX3MsCisg
ICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVIb3ZlciB9LAorICAgICAgICBb
XShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1
bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAgICAgICAgICBib29sIGlzU3VwcG9ydGVkID0gIHBh
Z2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2lu
dGluZ0RldmljZSgpOworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmllcnMgeyBp
c1N1cHBvcnRlZCA/IENTU1ZhbHVlSG92ZXIgOiBDU1NWYWx1ZU5vbmUgfTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgaW52
ZXJ0ZWRDb2xvcnMoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRl
bnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgImludmVydGVkLWNvbG9ycyJfcywKKyAg
ICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUludmVydGVkIH0sCisgICAgICAg
IFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGJvb2wgaXNJbnZlcnRlZCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgp
OworICAgICAgICAgICAgICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZENvbG9yc0FyZUlu
dmVydGVkQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpP
bikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nlc3NpYmlsaXR5VmFs
dWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBzY3JlZW5IYXNJbnZlcnRl
ZENvbG9ycygpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hp
bmdJZGVudGlmaWVycyB7IGlzSW52ZXJ0ZWQgPyBDU1NWYWx1ZUludmVydGVkIDogQ1NTVmFsdWVO
b25lIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIG1vbm9jaHJvbWUoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIm1vbm9jaHJvbWUi
X3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGJvb2wgaXNNb25v
Y2hyb21lID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRv
Y3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9y
Y2VkRGlzcGxheUlzTW9ub2Nocm9tZUFjY2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZERpc3BsYXlJc01vbm9jaHJv
bWVBY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVy
biBzY3JlZW5Jc01vbm9jaHJvbWUoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIGlzTW9ub2Nocm9tZSA/IHNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50KGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygp
KSA6IDA7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJvcmllbnRh
dGlvbiJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVMYW5kc2NhcGUsIENTU1ZhbHVlUG9y
dHJhaXQgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYg
dmlldyA9ICpjb250ZXh0LmRvY3VtZW50LnZpZXcoKTsKKyAgICAgICAgICAgIC8vIFNxdWFyZSB2
aWV3cG9ydCBpcyBwb3J0cmFpdC4KKyAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHZpZXcu
bGF5b3V0SGVpZ2h0KCkgPj0gdmlldy5sYXlvdXRXaWR0aCgpOworICAgICAgICAgICAgcmV0dXJu
IE1hdGNoaW5nSWRlbnRpZmllcnMgeyBpc1BvcnRyYWl0ID8gQ1NTVmFsdWVQb3J0cmFpdCA6IENT
U1ZhbHVlTGFuZHNjYXBlIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHBvaW50ZXIoKQoreworICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAg
InBvaW50ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVGaW5l
LCBDU1NWYWx1ZUNvYXJzZSB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAg
ICAgICAgICBhdXRvIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MgPSBwYWdlID8gcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkucG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNl
KCkgOiBPcHRpb25TZXQ8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4oKTsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICAgICAgICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuY29udGFp
bnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSkgeworICAgICAgICAgICAgICAgIGF1
dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZFByZXZlbnRQb2ludGVyTWVkaWFRdWVy
eUZyb21FdmFsdWF0aW5nVG9Db2Fyc2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcG9pbnRlckNo
YXJhY3RlcmlzdGljcyA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7CisgICAgICAgICAg
ICB9CisjZW5kaWYKKyAgICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7
CisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzOjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBl
bmQoQ1NTVmFsdWVGaW5lKTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNz
LmNvbnRhaW5zKFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAg
ICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChp
ZGVudGlmaWVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5k
KENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAg
IH0KKworICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVt
YSYgcHJlZmVyc0NvbnRyYXN0KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJwcmVmZXJzLWNvbnRyYXN0
Il9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vUHJlZmVyZW5jZSwgQ1NTVmFsdWVNb3Jl
LCBDU1NWYWx1ZUxlc3MgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAg
ICAgYm9vbCB1c2VyUHJlZmVyc0NvbnRyYXN0ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRv
JiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNDb250cmFzdEFjY2Vzc2liaWxpdHlW
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
Ok9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBj
YXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWU6OlN5c3RlbToKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBUaGVtZTo6c2luZ2xldG9uKCkudXNlclByZWZlcnND
b250cmFzdCgpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBy
ZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHVzZXJQcmVmZXJzQ29udHJhc3QgPyBDU1NWYWx1
ZU1vcmUgOiBDU1NWYWx1ZU5vUHJlZmVyZW5jZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICBy
ZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVmZXJzRGFya0ludGVy
ZmFjZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVy
U2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicHJlZmVycy1kYXJrLWludGVyZmFjZSJfcywKKyAg
ICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb1ByZWZlcmVuY2UsIENTU1ZhbHVlUHJlZmVycyB9LAor
ICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpj
b250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICBib29sIHByZWZlcnNEYXJrSW50
ZXJmYWNlID0gZnJhbWUucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgJiYgZnJhbWUucGFn
ZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJ
ZGVudGlmaWVycyB7IHByZWZlcnNEYXJrSW50ZXJmYWNlID8gQ1NTVmFsdWVQcmVmZXJzIDogQ1NT
VmFsdWVOb1ByZWZlcmVuY2UgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVt
YTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgcHJlZmVyc1JlZHVjZWRNb3Rpb24oKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2No
ZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJhc3QiX3MsCisgICAgICAgIFZlY3RvciB7IENT
U1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZVJlZHVjZSB9LAorICAgICAgICBbXShhdXRvJiBj
b250ZXh0KSB7CisgICAgICAgICAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IFsm
XSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFt
ZSgpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVm
ZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1
ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RI
RU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlm
aWVycyB7IHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA/IENTU1ZhbHVlUmVkdWNlIDogQ1NTVmFs
dWVOb1ByZWZlcmVuY2UgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsK
K30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgcmVzb2x1dGlvbigpOworCitjb25zdCBGZWF0dXJl
U2NoZW1hJiBzY2FuKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElk
ZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJzY2FuIl9zLAorICAgICAgICBWZWN0
b3IgeyBDU1NWYWx1ZUludGVybGFjZSwgQ1NTVmFsdWVQcm9ncmVzc2l2ZSB9LAorICAgICAgICBb
XShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmllcnMgeyBDU1NW
YWx1ZVByb2dyZXNzaXZlIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHRyYW5zZm9ybTJkKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAg
ICItd2Via2l0LXRyYW5zZm9ybS0yZCJfcywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hl
bWEmIHRyYW5zZm9ybTNkKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LXRyYW5zZm9ybS0yZCJf
cywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1T
KQorICAgICAgICAgICAgYXV0byogdmlldyA9IGNvbnRleHQuZG9jdW1lbnQucmVuZGVyVmlldygp
OworICAgICAgICAgICAgcmV0dXJuIHZpZXcgJiYgdmlldy0+Y29tcG9zaXRvcigpLmNhblJlbmRl
cjNEVHJhbnNmb3JtcygpOworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfTsK
KyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB0cmFuc2l0aW9u
KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+
IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LXRyYW5zaXRpb24iX3MsCisgICAgICAgIFtdKGF1
dG8mKSB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitj
b25zdCBGZWF0dXJlU2NoZW1hJiB2aWRlb1BsYXlhYmxlSW5saW5lKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAg
ICItd2Via2l0LXZpZGVvLXBsYXlhYmxlLWlubGluZSJfcywKKyAgICAgICAgW10oYXV0byYgY29u
dGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+c2V0
dGluZ3MoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCk7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHdpZHRoKCkKK3sK
KyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2NoZW1h
IHsKKyAgICAgICAgIndpZHRoIl9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5kb2N1bWVudC52aWV3KCktPmxheW91dFdpZHRoKCk7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKKyNpZiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkaXNwbGF5TW9kZSgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBz
Y2hlbWEgeworICAgICAgICAiZGlzcGxheS1tb2RlIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NW
YWx1ZUZ1bGxzY3JlZW4sIENTU1ZhbHVlU3RhbmRhbG9uZSwgQ1NTVmFsdWVNaW5pbWFsVWksIENT
U1ZhbHVlQnJvd3NlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBib29sIGlkZW50aWZpZXIgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0g
KmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1hbmlmZXN0
ID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgOiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgaWYgKCFtYW5pZmVzdCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQnJvd3NlcjsKKworICAgICAgICAgICAgICAgIHN3aXRj
aCAobWFuaWZlc3QtPmRpc3BsYXkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OkRpc3BsYXk6OkZ1bGxzY3JlZW46CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZUZ1bGxzY3JlZW47CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1h
bmlmZXN0OjpEaXNwbGF5OjpTdGFuZGFsb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTVmFsdWVTdGFuZGFsb25lOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25NYW5p
ZmVzdDo6RGlzcGxheTo6TWluaW1hbFVJOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
VmFsdWVNaW5pbWFsVWk7CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1hbmlmZXN0
OjpEaXNwbGF5OjpCcm93c2VyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVC
cm93c2VyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmllcnMgeyBpZGVudGlmaWVyIH07CisgICAgICAgIH0K
KyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVJL
X01PREVfQ1NTKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgcHJlZmVyc0NvbG9yU2NoZW1lKCkKK3sK
KyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJwcmVmZXJzLWNvbG9yLXNjaGVtZSJfcywKKyAgICAgICAgVmVjdG9y
IHsgQ1NTVmFsdWVMaWdodCwgQ1NTVmFsdWVEYXJrIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgPSBbJl0geworICAgICAg
ICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoZnJhbWUuZG9jdW1lbnQoKS0+bG9hZGVyKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBjb2xvclNjaGVtZVByZWZlcmVuY2UgPSBmcmFtZS5kb2N1bWVudCgpLT5s
b2FkZXIoKS0+Y29sb3JTY2hlbWVQcmVmZXJlbmNlKCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjb2xvclNjaGVtZVByZWZlcmVuY2UgIT0gQ29sb3JTY2hlbWVQcmVmZXJlbmNlOjpOb1ByZWZl
cmVuY2UpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sb3JTY2hlbWVQcmVmZXJl
bmNlID09IENvbG9yU2NoZW1lUHJlZmVyZW5jZTo6RGFyazsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgp
OworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlm
aWVycyB7IHVzZURhcmtBcHBlYXJhbmNlID8gQ1NTVmFsdWVEYXJrIDogQ1NTVmFsdWVMaWdodCB9
OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorI2VuZGlmCisKK1Zl
Y3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1hKj4gYWxsU2NoZW1hcygpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgJmFuaW1hdGlvbigpLAorICAgICAgICAmYW55SG92ZXIoKSwKKyAgICAgICAgJmFu
eVBvaW50ZXIoKSwKKyAgICAgICAgJmFzcGVjdFJhdGlvKCksCisgICAgICAgICZjb2xvcigpLAor
ICAgICAgICAmY29sb3JHYW11dCgpLAorICAgICAgICAmY29sb3JJbmRleCgpLAorICAgICAgICAm
ZGV2aWNlQXNwZWN0UmF0aW8oKSwKKyAgICAgICAgJmRldmljZUhlaWdodCgpLAorLy8gRklYTUU6
ICZkZXZpY2VQaXhlbFJhdGlvKCksCisgICAgICAgICZkZXZpY2VXaWR0aCgpLAorICAgICAgICAm
ZHluYW1pY1JhbmdlKCksCisgICAgICAgICZmb3JjZWRDb2xvcnMoKSwKKyAgICAgICAgJmdyaWQo
KSwKKyAgICAgICAgJmhlaWdodCgpLAorICAgICAgICAmaG92ZXIoKSwKKyAgICAgICAgJmludmVy
dGVkQ29sb3JzKCksCisgICAgICAgICZtb25vY2hyb21lKCksCisgICAgICAgICZvcmllbnRhdGlv
bigpLAorICAgICAgICAmcG9pbnRlcigpLAorICAgICAgICAmcHJlZmVyc0NvbnRyYXN0KCksCisg
ICAgICAgICZwcmVmZXJzRGFya0ludGVyZmFjZSgpLAorICAgICAgICAmcHJlZmVyc1JlZHVjZWRN
b3Rpb24oKSwKKy8vIEZJWE1FOiAmcmVzb2x1dGlvbigpLAorICAgICAgICAmc2NhbigpLAorICAg
ICAgICAmdHJhbnNmb3JtMmQoKSwKKyAgICAgICAgJnRyYW5zZm9ybTNkKCksCisgICAgICAgICZ0
cmFuc2l0aW9uKCksCisgICAgICAgICZ2aWRlb1BsYXlhYmxlSW5saW5lKCksCisgICAgICAgICZ3
aWR0aCgpLAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICAgICAgJmRpc3Bs
YXlNb2RlKCksCisjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAgICAgJnBy
ZWZlcnNDb2xvclNjaGVtZSgpLAorI2VuZGlmCisgICAgfTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRlY2RlODM0ZTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5oCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJHZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlOjpNUSB7
CisKK25hbWVzcGFjZSBGZWF0dXJlcyB7CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFuaW1hdGlv
bigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgYW55SG92ZXIoKTsKK2NvbnN0IEZlYXR1cmVTY2hl
bWEmIGFueVBvaW50ZXIoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFzcGVjdFJhdGlvKCk7Citj
b25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3JH
YW11dCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3JJbmRleCgpOworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgZGV2aWNlQXNwZWN0UmF0aW8oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmlj
ZUhlaWdodCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgZGV2aWNlUGl4ZWxSYXRpbygpOworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZGV2aWNlV2lkdGgoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGR5
bmFtaWNSYW5nZSgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgZm9yY2VkQ29sb3JzKCk7Citjb25z
dCBGZWF0dXJlU2NoZW1hJiBncmlkKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBoZWlnaHQoKTsK
K2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhvdmVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBpbnZl
cnRlZENvbG9ycygpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgbW9ub2Nocm9tZSgpOworY29uc3Qg
RmVhdHVyZVNjaGVtYSYgb3JpZW50YXRpb24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHBvaW50
ZXIoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHByZWZlcnNDb250cmFzdCgpOworY29uc3QgRmVh
dHVyZVNjaGVtYSYgcHJlZmVyc0RhcmtJbnRlcmZhY2UoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEm
IHByZWZlcnNSZWR1Y2VkTW90aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiByZXNvbHV0aW9u
KCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBzY2FuKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB0
cmFuc2Zvcm0yZCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNmb3JtM2QoKTsKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIHRyYW5zaXRpb24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHZpZGVv
UGxheWFibGVJbmxpbmUoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHdpZHRoKCk7CisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgZGlzcGxheU1v
ZGUoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorY29uc3QgRmVhdHVyZVNj
aGVtYSYgcHJlZmVyc0NvbG9yU2NoZW1lKCk7CisjZW5kaWYKKworVmVjdG9yPGNvbnN0IEZlYXR1
cmVTY2hlbWEqPiBhbGxTY2hlbWFzKCk7CisKK307CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IGNiZjFiNmJhODA5Zi4uMGI4NDRi
ZTkwOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5U2VyaWFsaXph
dGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlGZWF0dXJlcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgTVEgewpAQCAtMzksMTEgKzQwLDcgQEAgTWVkaWFRdWVyeVBhcnNl
cjo6TWVkaWFRdWVyeVBhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogCiBW
ZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IE1lZGlhUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hl
bWFzKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hl
bWE+IHdpZHRoU2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJ3aWR0aCJfcywgRmVhdHVyZVNjaGVt
YTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9
IH0gfTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+
IGhlaWdodFNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAiaGVpZ2h0Il9zLCBGZWF0dXJlU2NoZW1h
OjpUeXBlOjpSYW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0g
fSB9OwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4g
b3JpZW50YXRpb25TY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgIm9yaWVudGF0aW9uIl9zLCBGZWF0
dXJlU2NoZW1hOjpUeXBlOjpEaXNjcmV0ZSwgeyB9LCB7IENTU1ZhbHVlUG9ydHJhaXQsIENTU1Zh
bHVlTGFuZHNjYXBlIH0gfSB9OwotCi0gICAgcmV0dXJuIHsgJndpZHRoU2NoZW1hLmdldCgpLCAm
aGVpZ2h0U2NoZW1hLmdldCgpLCAmb3JpZW50YXRpb25TY2hlbWEuZ2V0KCkgfTsKKyAgICByZXR1
cm4gRmVhdHVyZXM6OmFsbFNjaGVtYXMoKTsKIH0KIAogTWVkaWFRdWVyeUxpc3QgTWVkaWFRdWVy
eVBhcnNlcjo6Y29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCAwMjk0YmUxY2Q1Y2Mu
LmI0ZjE0MWYzMGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAg
LTM2MSw2ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgTW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBv
bGljeSBtb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9t
b2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5OyB9CiAgICAgdm9pZCBzZXRNb2RhbENvbnRh
aW5lck9ic2VydmF0aW9uUG9saWN5KE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3kgcG9s
aWN5KSB7IG1fbW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeSA9IHBvbGljeTsgfQogCisg
ICAgLy8gRlhJTUU6IFdoeSBpcyB0aGlzIGluIGEgTG9hZGVyPwogICAgIFdFQkNPUkVfRVhQT1JU
IENvbG9yU2NoZW1lUHJlZmVyZW5jZSBjb2xvclNjaGVtZVByZWZlcmVuY2UoKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbG9yU2NoZW1lUHJlZmVyZW5jZShDb2xvclNjaGVtZVByZWZlcmVuY2UgcHJl
ZmVyZW5jZSkgeyBtX2NvbG9yU2NoZW1lUHJlZmVyZW5jZSA9IHByZWZlcmVuY2U7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4
IGMwZDRhZWRmNmYwZi4uNmYwNjlhMWIyMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC03MiwxMSArNzIsMTIgQEAgYXV0byBD
b250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnko
Y29uc3QgQ1E6OkNvbnRhaW4KICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghY29udGFp
bmVyLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gTVE6OkZlYXR1cmVFdmFsdWF0aW9uQ29u
dGV4dCB7IH07CisgICAgICAgIHJldHVybiBNUTo6RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsg
bV9lbGVtZW50LT5kb2N1bWVudCgpIH07CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICpjb250YWlu
ZXItPnJlbmRlcmVyKCk7CiAKICAgICByZXR1cm4gTVE6OkZlYXR1cmVFdmFsdWF0aW9uQ29udGV4
dCB7CisgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKSwKICAgICAgICAgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSB7IHJlbmRlcmVyLnN0eWxlKCksIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5k
b2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgJnJlbmRlcmVyLnZpZXco
KSB9LAogICAgICAgICAmcmVuZGVyZXIKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463250</attachid>
            <date>2022-10-26 06:44:51 -0700</date>
            <delta_ts>2022-10-26 08:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247061-20221026164449.patch</filename>
            <type>text/plain</type>
            <size>49510</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAxMzczMWQ2NTE1YWZhMmRmZDkxYWM5NDEyYzdhYzhhZTk3YWNjMjE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI2IE9jdCAyMDIyIDE1OjQ2OjQ1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
QWRkIEZlYXR1cmVTY2hlbWFzIGZvciBtb3N0IG1lZGlhIHF1ZXJ5IGZlYXR1cmVzCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MDYxIDxyZGFyOi8vcHJvYmxlbS8x
MDE1ODYyODU+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFkZCBzY2hlbWFzIHdpdGgg
ZXZhbHVhdGlvbiBmdW5jdGlvbnMgZm9yIG1vc3QgbWVkaWEgcXVlcnkgZmVhdHVyZXMgKGV2ZXJ5
dGhpbmcgZXhjZXB0IHRoZSByZXNvbHV0aW9uIHF1ZXJpZXMpLgpFdmFsdWF0aW9uIGZ1bmN0aW9u
cyBhcmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nIG9uZXMgaW4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAuCgpUaGVzZSBhcmUgbm90IHVzZWQgeWV0LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3Bw
OgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpTaXplRmVhdHVyZVNjaGVtYTo6U2l6ZUZlYXR1cmVT
Y2hlbWEpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpvcmllbnRhdGlvbik6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
OmV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2Vy
Q29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVCb29sZWFuRmVhdHVyZSk6CihXZWJD
b3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2VyRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVO
dW1iZXJGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZUlkZW50aWZpZXJGZWF0dXJlKToK
KFdlYkNvcmU6Ok1ROjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6
Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OnZhbGlkYXRlRmVhdHVyZUFnYWluc3RT
Y2hlbWEpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVz
Lmg6CihXZWJDb3JlOjpNUTo6RmVhdHVyZVNjaGVtYTo6RmVhdHVyZVNjaGVtYSk6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6Ok1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHA6IEFkZGVkLgooV2ViQ29yZTo6TVE6
OkZlYXR1cmVzOjpCb29sZWFuU2NoZW1hOjpCb29sZWFuU2NoZW1hKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6Qm9vbGVhblNjaGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVh
dHVyZXM6OkludGVnZXJTY2hlbWE6OkludGVnZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjpJbnRlZ2VyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJl
czo6TGVuZ3RoU2NoZW1hOjpMZW5ndGhTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpM
ZW5ndGhTY2hlbWE6OnZhbHVlRnVuY3Rpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRp
b1NjaGVtYTo6UmF0aW9TY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1NjaGVt
YTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OklkZW50aWZpZXJTY2hl
bWE6OklkZW50aWZpZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpJZGVudGlmaWVy
U2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW5pbWF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW55SG92ZXIpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjphbnlQb2ludGVyKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YXNwZWN0UmF0aW8pOgoo
V2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmNv
bG9yR2FtdXQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvckluZGV4KToKKFdlYkNvcmU6
Ok1ROjpGZWF0dXJlczo6ZGV2aWNlQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjpkZXZpY2VIZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkZXZpY2VXaWR0aCk6CihX
ZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmR5bmFtaWNSYW5nZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OmZvcmNlZENvbG9ycyk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmdyaWQpOgooV2ViQ29y
ZTo6TVE6OkZlYXR1cmVzOjpoZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpob3Zlcik6
CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmludmVydGVkQ29sb3JzKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6bW9ub2Nocm9tZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6Om9yaWVudGF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cG9pbnRlcik6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OnByZWZlcnNDb250cmFzdCk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnByZWZlcnNEYXJr
SW50ZXJmYWNlKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24p
OgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpzY2FuKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6
dHJhbnNmb3JtMmQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp0cmFuc2Zvcm0zZCk6CihXZWJD
b3JlOjpNUTo6RmVhdHVyZXM6OnRyYW5zaXRpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp2
aWRlb1BsYXlhYmxlSW5saW5lKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6d2lkdGgpOgooV2Vi
Q29yZTo6TVE6OkZlYXR1cmVzOjpkaXNwbGF5TW9kZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OnByZWZlcnNDb2xvclNjaGVtZSk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6Ciog
U291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29y
ZTo6U3R5bGU6OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHRGb3JRdWVyeSBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAg
ICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8ICAgNiArCiAuLi4vY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMu
Y3BwICAgICAgfCAgIDcgKy0KIC4uLi9jc3MvcXVlcnkvQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5o
ICAgICAgICB8ICAgMyArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAgIHwgIDY3ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggICAgfCAgIDUgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3Bw
ICAgICB8ICAgMiArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggICAg
ICAgIHwgICA3ICstCiAuLi4vV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgfCAgMjggKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
ICB8ICAgNSArLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAg
IHwgNjY4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlGZWF0dXJlcy5oIHwgIDc1ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFR
dWVyeVBhcnNlci5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5jcHAgfCAgIDMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCsp
LCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTMyYzExMzExZGY4Li5kMTZmZGUwZjY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04ODcsNiArODg3
LDcgQEAgY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAogY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
U2VyaWFsaXphdGlvbi5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcAogY3NzL3R5cGVkb20vQ29tcHV0ZWRTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCiBj
c3MvdHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJjMTMyYmI4MGY0
Li4yZjk3OTFmNWVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjYsNiArNTUyNiw3IEBACiAJCUU0NTVBNTcxMjhGRDcz
RjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU3MDI4RkQ3M0YzMDBCNkVBNzYgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNDU1QTU4MjI4RkU4RDhEMDBCNkVBNzYgLyog
TWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAqLzsgfTsKIAkJRTQ1
NUE1OTQyOTAyODc4OTAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNTkzMjkwMjg3ODgw
MEI2RUE3NiAvKiBDb250YWluZXJRdWVyeUZlYXR1cmVzLmggKi87IH07CisJCUU0NTVBNUJBMjkw
N0E4OUEwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNUI5MjkwN0E4OTkwMEI2RUE3NiAvKiBN
ZWRpYVF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8q
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERG
QzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcg
LyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsg
fTsKQEAgLTE4MDUzLDYgKzE4MDU0LDggQEAKIAkJRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8q
IE1lZGlhUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDU1QTU5MTI5MDI4Nzc4MDBCNkVB
NzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb250YWluZXJRdWVyeUZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ1NUE1OTMyOTAyODc4ODAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyUXVl
cnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU1QTVCOTI5MDdB
ODk5MDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDU1QTVCQjI5MDdBOEEzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1NzUsNiArMzI1NzgsOCBAQAogCQkJ
CUU0NTVBNTgxMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5LmggKi8sCiAJCQkJRTQ1NUE1
NkYyOEZENzNFQjAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAogCQkJCUU0
NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJCQkJ
RTQ1NUE1QkIyOTA3QThBMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5jcHAgKi8sCisJ
CQkJRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oICovLAog
CQkJCUU0NEY0MjJGMjhGNkE2NTIwMDBGODdCQyAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywK
IAkJCQlFNDRGNDIyRDI4RjZBNjQ4MDAwRjg3QkMgLyogTWVkaWFRdWVyeVBhcnNlci5oICovLAog
CQkJKTsKQEAgLTM3NDcwLDYgKzM3NDc1LDcgQEAKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3
ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1NUE1
NzEyOEZENzNGMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlhUXVl
cnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJD
IC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdBRDdE
MDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNB
QTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1
cmVzLmNwcAppbmRleCAxNDVkMDhmMzQwM2UuLjQ4MGU4NTYwYjQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAg
LTMzLDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmU6OkNROjpGZWF0dXJlcyB7CiB1c2luZyBu
YW1lc3BhY2UgTVE7CiAKIHN0cnVjdCBTaXplRmVhdHVyZVNjaGVtYSA6IHB1YmxpYyBGZWF0dXJl
U2NoZW1hIHsKLSAgICBTaXplRmVhdHVyZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBU
eXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1
ZUlEPiB2YWx1ZUlkZW50aWZpZXJzID0geyB9KQotICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgdHlwZSwgdmFsdWVUeXBlcywgdmFsdWVJZGVudGlmaWVycykKKyAgICBTaXplRmVhdHVyZVNj
aGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5
cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMgPSB7
IH0pCisgICAgICAgIDogRmVhdHVyZVNjaGVtYShuYW1lLCB0eXBlLCB2YWx1ZVR5cGVzLCBXVEZN
b3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogCiAgICAgRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRp
b25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQpAQCAtMTY3LDcgKzE2OCw3IEBAIGNv
bnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKICAgICAgICAgRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0IG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHJlbmRlcmVyLmNvbnRl
bnRIZWlnaHQoKSA+PSByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKLSAgICAgICAgICAgIHJldHVy
biBldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShmZWF0dXJlLCBpc1BvcnRyYWl0ID8gQ1NTVmFsdWVQ
b3J0cmFpdCA6IENTU1ZhbHVlTGFuZHNjYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBldmFsdWF0
ZUlkZW50aWZpZXJGZWF0dXJlKGZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0
IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKaW5kZXggNDk3OThk
YjZlZDMxLi5iMmZlOGU2MTQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaApAQCAtMjQsOCArMjQsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZTo6Q1EgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZDY1ZjgxZmU2MjAuLmYy
M2QxZGY1MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2Vu
ZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC04Myw2ICs4MywzMiBAQCBzdGF0aWMgRXZh
bHVhdGlvblJlc3VsdCBldmFsdWF0ZUxlbmd0aENvbXBhcmlzb24oTGF5b3V0VW5pdCBzaXplLCBj
b25zdCBzdGQ6Om9wdAogICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21w
YXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKIH07CiAKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0
IGV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbihkb3VibGUgbnVtYmVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPENvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpCit7CisgICAgaWYgKCFjb21w
YXJpc29uKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKworICAgIGF1
dG8gZXhwcmVzc2lvbk51bWJlciA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
Y29tcGFyaXNvbi0+dmFsdWUuZ2V0KCkpLT5kb3VibGVWYWx1ZSgpOworCisgICAgYXV0byBsZWZ0
ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gZXhwcmVzc2lvbk51bWJlciA6IG51bWJlcjsKKyAgICBh
dXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gbnVtYmVyIDogZXhwcmVzc2lvbk51bWJl
cjsKKworICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5v
cCwgbGVmdCwgcmlnaHQpKTsKK307CisKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
SW50ZWdlckNvbXBhcmlzb24oaW50IG51bWJlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb21wYXJp
c29uPiYgY29tcGFyaXNvbiwgU2lkZSBzaWRlKQoreworICAgIGlmICghY29tcGFyaXNvbikKKyAg
ICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAgICBhdXRvIGV4cHJlc3Np
b25OdW1iZXIgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlzb24t
PnZhbHVlLmdldCgpKS0+aW50VmFsdWUoKTsKKworICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lk
ZTo6TGVmdCA/IGV4cHJlc3Npb25OdW1iZXIgOiBudW1iZXI7CisgICAgYXV0byByaWdodCA9IHNp
ZGUgPT0gU2lkZTo6TGVmdCA/IG51bWJlciA6IGV4cHJlc3Npb25OdW1iZXI7CisKKyAgICByZXR1
cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0
KSk7Cit9OworCiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21w
YXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKQEAgLTEzMSwxOCArMTU3LDQ5IEBA
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgZG91YmxlIHJhdGlvKQogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmlnaHRSZXN1bHQ7
CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgQ1NTVmFsdWVJRCBleHBlY3RlZFZhbHVlKQorRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZUJvb2xlYW5GZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGJvb2wgY3Vy
cmVudFZhbHVlKQogewogICAgIGlmICghZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAg
IHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KGN1cnJlbnRWYWx1ZSk7CiAKLSAgICBhdXRvJiBjb21wYXJpc29uID0gKmZl
YXR1cmUucmlnaHRDb21wYXJpc29uOworICAgIGF1dG8mIHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCpmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbi0+dmFsdWUpOworICAgIGF1dG8g
ZXhwZWN0ZWRWYWx1ZSA9IHZhbHVlLmludFZhbHVlKCk7CiAKLSAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPihjb21wYXJpc29uLnZhbHVlKSB8fCBjb21wYXJpc29uLm9wICE9IENvbXBhcmlz
b25PcGVyYXRvcjo6RXF1YWwpCisgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgZXhwZWN0ZWRWYWx1
ZSAhPSAxKQogICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAorICAg
IHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoZXhwZWN0ZWRWYWx1ZSA9PSBjdXJyZW50VmFsdWUp
OworfQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgaW50IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICBpZiAoIWZlYXR1cmUubGVm
dENvbXBhcmlzb24gJiYgIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQorICAgICAgICByZXR1cm4g
dG9FdmFsdWF0aW9uUmVzdWx0KCEhY3VycmVudFZhbHVlKTsKKworICAgIGF1dG8gbGVmdFJlc3Vs
dCA9IGV2YWx1YXRlSW50ZWdlckNvbXBhcmlzb24oY3VycmVudFZhbHVlLCBmZWF0dXJlLmxlZnRD
b21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKKyAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVhdGVJ
bnRlZ2VyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBT
aWRlOjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQor
CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiBm
ZWF0dXJlLCBkb3VibGUgY3VycmVudFZhbHVlKQoreworICAgIGlmICghZmVhdHVyZS5sZWZ0Q29t
cGFyaXNvbiAmJiAhZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCisgICAgICAgIHJldHVybiB0b0V2
YWx1YXRpb25SZXN1bHQoISFjdXJyZW50VmFsdWUpOworCisgICAgYXV0byBsZWZ0UmVzdWx0ID0g
ZXZhbHVhdGVOdW1iZXJDb21wYXJpc29uKGN1cnJlbnRWYWx1ZSwgZmVhdHVyZS5sZWZ0Q29tcGFy
aXNvbiwgU2lkZTo6TGVmdCk7CisgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1YXRlTnVtYmVy
Q29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpS
aWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlSWRlbnRpZmllckZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgQ1NTVmFsdWVJRCBjdXJyZW50VmFsdWUpCit7CisgICAgaWYgKCFmZWF0dXJlLnJpZ2h0
Q29tcGFyaXNvbikKKyAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjdXJyZW50VmFs
dWUgIT0gQ1NTVmFsdWVOb25lICYmIGN1cnJlbnRWYWx1ZSAhPSBDU1NWYWx1ZU5vUHJlZmVyZW5j
ZSk7CisKICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZmVh
dHVyZS5yaWdodENvbXBhcmlzb24tPnZhbHVlKTsKLSAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVz
dWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBjdXJyZW50VmFsdWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFs
dWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1
YXRvci5oCmluZGV4IDZmYTA4NWY3YzE3ZC4uMDU2ZWViYjhkODljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAt
MzcsNyArMzcsMTAgQEAgbmFtZXNwYWNlIE1RIHsKIAogRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0
ZUxlbmd0aEZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIExheW91dFVuaXQsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmKTsKIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1
cmUoY29uc3QgRmVhdHVyZSYsIGRvdWJsZSk7Ci1FdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRGlz
Y3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKTsKK0V2YWx1YXRpb25SZXN1
bHQgZXZhbHVhdGVCb29sZWFuRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgYm9vbCk7CitFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGludCk7CitF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91
YmxlKTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVJZGVudGlmaWVyRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgQ1NTVmFsdWVJRCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZhbHVh
dG9yPgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggMTM0
ZGRjYTJmZmEzLi4wMGY4MThmZGQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIGJv
b2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0U2No
ZW1hKEZlYXR1cmUmIGZlYXR1cmUsCiAKICAgICBhdXRvIGlzVmFsaWQgPSBbJl0gewogICAgICAg
ICBpZiAoc2NoZW1hLnR5cGUgPT0gRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUpIHsKLSAg
ICAgICAgICAgIGlmIChmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmIGZlYXR1cmUubGVmdENvbXBh
cmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgICAgICAgICBpZiAo
ZmVhdHVyZS5zeW50YXggPT0gU3ludGF4OjpSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5yaWdodENvbXBhcmlzb24gJiYgZmVhdHVy
ZS5yaWdodENvbXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKaW5kZXggYTNiZTMwZjg2MDdjLi41MWYwYzhhYzhk
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
VHlwZXMuaApAQCAtNzIsNyArNzIsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uIHsKIGVudW0gY2xhc3Mg
RXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCiBz
dHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhIGNvbnZlcnNpb25EYXRhOworICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKKyAg
ICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgfTsKICAgICBjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTk1LDExICs5
NiwxMSBAQCBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CiAKICAgICB2aXJ0dWFsIEV2YWx1YXRpb25S
ZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247IH0KIAotICAg
IEZlYXR1cmVTY2hlbWEoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBPcHRpb25T
ZXQ8VmFsdWVUeXBlPiB2YWx1ZVR5cGVzLCBWZWN0b3I8Q1NTVmFsdWVJRD4gdmFsdWVJZGVudGlm
aWVycykKKyAgICBGZWF0dXJlU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFR5cGUgdHlw
ZSwgT3B0aW9uU2V0PFZhbHVlVHlwZT4gdmFsdWVUeXBlcywgVmVjdG9yPENTU1ZhbHVlSUQ+JiYg
dmFsdWVJZGVudGlmaWVycyA9IHsgfSkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwg
dHlwZSh0eXBlKQogICAgICAgICAsIHZhbHVlVHlwZXModmFsdWVUeXBlcykKLSAgICAgICAgLCB2
YWx1ZUlkZW50aWZpZXJzKHZhbHVlSWRlbnRpZmllcnMpCisgICAgICAgICwgdmFsdWVJZGVudGlm
aWVycyhXVEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogICAgIHZpcnR1YWwgfkZl
YXR1cmVTY2hlbWEoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGI1NjNiYjI4ZWE5Mi4uY2M0NzNlNWI2
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0eWxl
Rm9udFNpemVGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1R
IHsKQEAgLTM2LDcgKzM3LDggQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6
Ok1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQog
ICAgIDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVk
aWFUeXBlKQotICAgICwgbV9ldmFsdWF0aW9uQ29udGV4dCh7IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEgeyAqcm9vdEVsZW1lbnRTdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgZG9jdW1lbnQucmVu
ZGVyVmlldygpIH0sIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9KQorICAgICwgbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZShyb290RWxlbWVudFN0eWxlKQogewog
fQogCkBAIC02NywxNyArNjksMjcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0
ZShjb25zdCBNZWRpYVF1ZXJ5JiBxdWVyeSkgY29uc3QKICAgICBhdXRvIGNvbmRpdGlvbk1hdGNo
ZXMgPSBbJl0gewogICAgICAgICBpZiAoIXF1ZXJ5LmNvbmRpdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKCpxdWVyeS5jb25k
aXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisK
KyAgICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAoIW1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0
eWxlLmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNp
emVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgbV9kb2N1bWVudCk7CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOworICAgICAgICBkZWZhdWx0U3R5bGUuc2V0
Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CisgICAgICAgIGRlZmF1
bHRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgpOworCisgICAgICAgIEZlYXR1cmVFdmFsdWF0
aW9uQ29udGV4dCBjb250ZXh0IHsgbV9kb2N1bWVudCwgeyAqbV9yb290RWxlbWVudFN0eWxlLCAm
ZGVmYXVsdFN0eWxlLCBudWxscHRyLCBtX2RvY3VtZW50LnJlbmRlclZpZXcoKSB9LCBudWxscHRy
IH07CisgICAgICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbigqcXVlcnkuY29uZGl0aW9uLCBj
b250ZXh0KSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogICAgIH0oKTsKIAogICAgIHJldHVy
biBjb25kaXRpb25NYXRjaGVzICE9IGlzTmVnYXRlZDsKIH0KIAotRXZhbHVhdGlvblJlc3VsdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGNvbnN0
IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd247Ci19Ci0KLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzJiMmYwMWNmYTg2Li4wZDFjYjM4ODgz
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3Iu
aApAQCAtNDAsMTEgKzQwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5
JikgY29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7Ci0KIHByaXZh
dGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJl
RXZhbHVhdGlvbkNvbnRleHQgbV9ldmFsdWF0aW9uQ29udGV4dDsKKyAgICBjb25zdCBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1
cmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJiMjIxMzQy
OTZlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1
ZXJ5RmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVy
ZXMuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlF1aXJr
cy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJUaGVtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZTo6TVE6OkZlYXR1cmVzIHsKKworc3RydWN0IEJvb2xlYW5TY2hlbWEg
OiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVGdW5jdGlvbiA9IEZ1bmN0
aW9uPGJvb2woY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgQm9vbGVh
blNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5j
dGlvbikKKyAgICAgICAgOiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6
OkRpc2NyZXRlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAg
ICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAg
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3Qg
RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGV2YWx1YXRlQm9vbGVhbkZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5j
dGlvbihjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFs
dWVGdW5jdGlvbjsKK307CisKK3N0cnVjdCBJbnRlZ2VyU2NoZW1hIDogcHVibGljIEZlYXR1cmVT
Y2hlbWEgeworICAgIHVzaW5nIFZhbHVlRnVuY3Rpb24gPSBGdW5jdGlvbjxpbnQoY29uc3QgRmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgSW50ZWdlclNjaGVtYShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlvbikKKyAgICAgICAgOiBG
ZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVT
Y2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RG
TW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZh
bHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1
YXRlSW50ZWdlckZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisKK3N0
cnVjdCBMZW5ndGhTY2hlbWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFs
dWVGdW5jdGlvbiA9IEZ1bmN0aW9uPExheW91dFVuaXQoY29uc3QgRmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0Jik+OworCisgICAgTGVuZ3RoU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpMZW5ndGggfSkKKyAgICAgICAgLCB2YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlv
bikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1
cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUo
ZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307
CisKK3N0cnVjdCBSYXRpb1NjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2lu
ZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248ZG91YmxlKGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9u
Q29udGV4dCYpPjsKKworICAgIFJhdGlvU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpSYXRpbyB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9u
KSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlUmF0aW9GZWF0dXJlKGZl
YXR1cmUsIHZhbHVlRnVuY3Rpb24oY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBW
YWx1ZUZ1bmN0aW9uIHZhbHVlRnVuY3Rpb247Cit9OworCit1c2luZyBNYXRjaGluZ0lkZW50aWZp
ZXJzID0gVmVjdG9yPENTU1ZhbHVlSUQsIDE+OworCitzdHJ1Y3QgSWRlbnRpZmllclNjaGVtYSA6
IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rp
b248TWF0Y2hpbmdJZGVudGlmaWVycyhjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQmKT47
CisKKyAgICBJZGVudGlmaWVyU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxD
U1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMsIFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0
aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6
RGlzY3JldGUsIHsgfSwgV1RGTW92ZSh2YWx1ZUlkZW50aWZpZXJzKSkKKyAgICAgICAgLCB2YWx1
ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVF
dmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGF1dG8gdmFsdWVJRHMgPSB2YWx1ZUZ1bmN0aW9uKGNvbnRleHQpOworICAgICAgICBmb3IgKGF1
dG8gdmFsdWVJRCA6IHZhbHVlSURzKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWVJZGVudGlm
aWVycy5jb250YWlucyh2YWx1ZUlEKSk7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVJZGVudGlm
aWVyRmVhdHVyZShmZWF0dXJlLCB2YWx1ZUlEKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgVmFsdWVGdW5jdGlvbiB2YWx1ZUZ1bmN0aW9uOworfTsKKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgYW5pbWF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LWFuaW1hdGlvbiJf
cywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJldHVy
biBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCkKK3sKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7
CisgICAgICAgICJhbnktaG92ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVIb3ZlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAgICAg
ICAgICBib29sIGlzU3VwcG9ydGVkID0gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5o
b3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaXNTdXBwb3J0ZWQgPyBDU1NWYWx1ZUhvdmVy
IDogQ1NTVmFsdWVOb25lIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueVBvaW50ZXIoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgImFueS1wb2ludGVyIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1Zh
bHVlRmluZSwgQ1NTVmFsdWVDb2Fyc2UgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byogcGFnZSA9IGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgp
OworICAgICAgICAgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzID0gcGFnZSA/IHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBv
aW50aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CisK
KyAgICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CisgICAgICAgICAg
ICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzOjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVG
aW5lKTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmll
cnMuYXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlTm9u
ZSk7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKworICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgYXNwZWN0UmF0
aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8UmF0aW9TY2hlbWE+
IHNjaGVtYSB7CisgICAgICAgICJhc3BlY3QtcmF0aW8iX3MsCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqY29udGV4dC5kb2N1bWVudC52aWV3
KCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2aWV3LmxheW91dFdp
ZHRoKCkpIC8gdmlldy5sYXlvdXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0
dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKQoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsKKyAg
ICAgICAgImNvbG9yIl9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICByZXR1cm4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgp
LT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2No
ZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckdhbXV0KCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7Cisg
ICAgICAgICJjb2xvci1nYW11dCJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVTUkdCLCBD
U1NWYWx1ZVAzLCBDU1NWYWx1ZVJlYzIwMjAgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0
ZWN0aW5nIGRpc3BsYXlzIHRoYXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KKyAgICAgICAgICAgIE1h
dGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnMgeyBDU1NWYWx1ZVNSR0IgfTsKKyAgICAgICAg
ICAgIGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoZnJhbWUubWFpbkZyYW1lKCkudmll
dygpKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVQMyk7Cisg
ICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKyAgICB9OworICAgIHJl
dHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1h
IHsKKyAgICAgICAgImNvbG9yLWluZGV4Il9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4g
MDsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVt
YSYgZGV2aWNlQXNwZWN0UmF0aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8UmF0aW9TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJkZXZpY2UtYXNwZWN0LXJhdGlv
Il9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIHNjcmVl
blNpemUgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUo
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHNjcmVlblNpemUud2lk
dGgoKSkgLyBzY3JlZW5TaXplLmhlaWdodCgpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VIZWlnaHQoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1hPiBzY2hlbWEg
eworICAgICAgICAiZGV2aWNlLWhlaWdodCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS5oZWlnaHQoKSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VQ
aXhlbFJhdGlvKCk7CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2NoZW1hIHsK
KyAgICAgICAgImRldmljZS13aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCkt
Pm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS53aWR0aCgpIH07CisgICAgICAgIH0KKyAgICB9Owor
ICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGR5bmFtaWNSYW5n
ZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2No
ZW1hPiBzY2hlbWEgeworICAgICAgICAiZHluYW1pYy1yYW5nZSJfcywKKyAgICAgICAgVmVjdG9y
IHsgQ1NTVmFsdWVTdGFuZGFyZCwgQ1NTVmFsdWVIaWdoIH0sCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmhkck1lZGlhQ2FwYWJp
bGl0aWVzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1p
Y1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShmcmFt
ZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBN
YXRjaGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzIHsgQ1NTVmFsdWVTdGFuZGFyZCB9OworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVIaWdoKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVu
dGlmaWVyczsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZm9yY2VkQ29sb3JzKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJmb3Jj
ZWQtY29sb3JzIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWN0
aXZlIH0sCisgICAgICAgIFtdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJ
ZGVudGlmaWVycyB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBncmlkKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAg
ICAgICJncmlkIl9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB9
OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhlaWdodCgp
Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJoZWlnaHQiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LnZpZXcoKS0+bGF5b3V0SGVpZ2h0
KCk7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIGhvdmVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJob3ZlciJfcywKKyAgICAg
ICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUhvdmVyIH0sCisgICAgICAgIFtdKGF1
dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50
LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSAgcGFnZSAm
JiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5n
RGV2aWNlKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlzU3Vw
cG9ydGVkID8gQ1NTVmFsdWVIb3ZlciA6IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBpbnZlcnRl
ZENvbG9ycygpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlm
aWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiaW52ZXJ0ZWQtY29sb3JzIl9zLAorICAgICAg
ICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW52ZXJ0ZWQgfSwKKyAgICAgICAgW10o
YXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc0ludmVydGVkID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0
ZWRBY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSgp
ID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzKCk7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lk
ZW50aWZpZXJzIHsgaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUg
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgbW9ub2Nocm9tZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxJbnRlZ2VyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAibW9ub2Nocm9tZSJfcywK
KyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc01vbm9jaHJv
bWUgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1l
bnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRE
aXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkRGlzcGxheUlzTW9ub2Nocm9tZUFj
Y2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNj
cmVlbklzTW9ub2Nocm9tZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICByZXR1cm4gaXNNb25vY2hyb21lID8gc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpIDog
MDsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgb3JpZW50YXRpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIm9yaWVudGF0aW9u
Il9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZUxhbmRzY2FwZSwgQ1NTVmFsdWVQb3J0cmFp
dCB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiB2aWV3
ID0gKmNvbnRleHQuZG9jdW1lbnQudmlldygpOworICAgICAgICAgICAgLy8gU3F1YXJlIHZpZXdw
b3J0IGlzIHBvcnRyYWl0LgorICAgICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gdmlldy5sYXlv
dXRIZWlnaHQoKSA+PSB2aWV3LmxheW91dFdpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0
Y2hpbmdJZGVudGlmaWVycyB7IGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0IDogQ1NTVmFs
dWVMYW5kc2NhcGUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30K
KworY29uc3QgRmVhdHVyZVNjaGVtYSYgcG9pbnRlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicG9p
bnRlciJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUZpbmUsIENT
U1ZhbHVlQ29hcnNlIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAg
IGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAg
ICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljcyA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6
IE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPigpOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQuZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZFByZXZlbnRQb2ludGVyTWVkaWFRdWVyeUZy
b21FdmFsdWF0aW5nVG9Db2Fyc2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcG9pbnRlckNoYXJh
Y3RlcmlzdGljcyA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7CisgICAgICAgICAgICB9
CisjZW5kaWYKKyAgICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7Cisg
ICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVyQ2hh
cmFjdGVyaXN0aWNzOjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQo
Q1NTVmFsdWVGaW5lKTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNv
bnRhaW5zKFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAgICAg
aWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChpZGVu
dGlmaWVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENT
U1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0K
KworICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYg
cHJlZmVyc0NvbnRyYXN0KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJwcmVmZXJzLWNvbnRyYXN0Il9z
LAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vUHJlZmVyZW5jZSwgQ1NTVmFsdWVNb3JlLCBD
U1NWYWx1ZUxlc3MgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAg
Ym9vbCB1c2VyUHJlZmVyc0NvbnRyYXN0ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBm
cmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgc3dpdGNo
IChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNDb250cmFzdEFjY2Vzc2liaWxpdHlWYWx1
ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9u
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYXNl
IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
OlN5c3RlbToKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBUaGVtZTo6c2luZ2xldG9uKCkudXNlclByZWZlcnNDb250
cmFzdCgpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmllcnMgeyB1
c2VyUHJlZmVyc0NvbnRyYXN0ID8gQ1NTVmFsdWVNb3JlIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2Ug
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgcHJlZmVyc0RhcmtJbnRlcmZhY2UoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInBy
ZWZlcnMtZGFyay1pbnRlcmZhY2UiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVm
ZXJlbmNlLCBDU1NWYWx1ZVByZWZlcnMgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAg
ICAgICAgICAgYm9vbCBwcmVmZXJzRGFya0ludGVyZmFjZSA9IGZyYW1lLnBhZ2UoKS0+dXNlU3lz
dGVtQXBwZWFyYW5jZSgpICYmIGZyYW1lLnBhZ2UoKS0+dXNlRGFya0FwcGVhcmFuY2UoKTsKKwor
ICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmllcnMgeyBwcmVmZXJzRGFya0ludGVy
ZmFjZSA/IENTU1ZhbHVlUHJlZmVycyA6IENTU1ZhbHVlTm9QcmVmZXJlbmNlIH07CisgICAgICAg
IH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEm
IHByZWZlcnNSZWR1Y2VkTW90aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJwcmVmZXJzLWNvbnRy
YXN0Il9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vUHJlZmVyZW5jZSwgQ1NTVmFsdWVS
ZWR1Y2UgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCB1
c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZy
YW1lID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5
VmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVl
OjpPbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
Y2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZh
bHVlOjpTeXN0ZW06CisjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVy
c1JlZHVjZWRNb3Rpb24oKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50
aWZpZXJzIHsgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID8gQ1NTVmFsdWVSZWR1Y2UgOiBDU1NW
YWx1ZU5vUHJlZmVyZW5jZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1h
OworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiByZXNvbHV0aW9uKCk7CisKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIHNjYW4oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInNjYW4iX3MsCisgICAgICAgIFZl
Y3RvciB7IENTU1ZhbHVlSW50ZXJsYWNlLCBDU1NWYWx1ZVByb2dyZXNzaXZlIH0sCisgICAgICAg
IFtdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IENT
U1ZhbHVlUHJvZ3Jlc3NpdmUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVt
YTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNmb3JtMmQoKQoreworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Qm9vbGVhblNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgIi13ZWJraXQtdHJhbnNmb3JtLTJkIl9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNj
aGVtYSYgdHJhbnNmb3JtM2QoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Qm9vbGVhblNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIi13ZWJraXQtdHJhbnNmb3JtLTJk
Il9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisjaWYgRU5BQkxFKDNEX1RSQU5TRk9S
TVMpCisgICAgICAgICAgICBhdXRvKiB2aWV3ID0gY29udGV4dC5kb2N1bWVudC5yZW5kZXJWaWV3
KCk7CisgICAgICAgICAgICByZXR1cm4gdmlldyAmJiB2aWV3LT5jb21wb3NpdG9yKCkuY2FuUmVu
ZGVyM0RUcmFuc2Zvcm1zKCk7CisjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9
OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHRyYW5zaXRp
b24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Qm9vbGVhblNjaGVt
YT4gc2NoZW1hIHsKKyAgICAgICAgIi13ZWJraXQtdHJhbnNpdGlvbiJfcywKKyAgICAgICAgW10o
YXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisK
K2NvbnN0IEZlYXR1cmVTY2hlbWEmIHZpZGVvUGxheWFibGVJbmxpbmUoKQoreworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Qm9vbGVhblNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgIi13ZWJraXQtdmlkZW8tcGxheWFibGUtaW5saW5lIl9zLAorICAgICAgICBbXShhdXRvJiBj
b250ZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5z
ZXR0aW5ncygpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKTsKKyAgICAgICAgfQorICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgd2lkdGgoKQor
eworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1hPiBzY2hl
bWEgeworICAgICAgICAid2lkdGgiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LnZpZXcoKS0+bGF5b3V0V2lkdGgoKTsK
KyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRpc3BsYXlNb2RlKCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+
IHNjaGVtYSB7CisgICAgICAgICJkaXNwbGF5LW1vZGUiX3MsCisgICAgICAgIFZlY3RvciB7IENT
U1ZhbHVlRnVsbHNjcmVlbiwgQ1NTVmFsdWVTdGFuZGFsb25lLCBDU1NWYWx1ZU1pbmltYWxVaSwg
Q1NTVmFsdWVCcm93c2VyIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAg
ICAgIGJvb2wgaWRlbnRpZmllciA9IFsmXSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUg
PSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAgICAgICAgICAgICAgIGF1dG8gbWFuaWZl
c3QgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmFwcGxpY2F0aW9uTWFuaWZlc3QoKSA6
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBpZiAoIW1hbmlmZXN0KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVCcm93c2VyOworCisgICAgICAgICAgICAgICAgc3dp
dGNoIChtYW5pZmVzdC0+ZGlzcGxheSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRp
b25NYW5pZmVzdDo6RGlzcGxheTo6RnVsbHNjcmVlbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ZhbHVlRnVsbHNjcmVlbjsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OkRpc3BsYXk6OlN0YW5kYWxvbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVN0YW5kYWxvbmU7CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1h
bmlmZXN0OjpEaXNwbGF5OjpNaW5pbWFsVUk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NWYWx1ZU1pbmltYWxVaTsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OkRpc3BsYXk6OkJyb3dzZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1
ZUJyb3dzZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSgpOworCisgICAgICAg
ICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlkZW50aWZpZXIgfTsKKyAgICAgICAg
fQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKERB
UktfTU9ERV9DU1MpCitjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVmZXJzQ29sb3JTY2hlbWUoKQor
eworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4g
c2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29sb3Itc2NoZW1lIl9zLAorICAgICAgICBWZWN0
b3IgeyBDU1NWYWx1ZUxpZ2h0LCBDU1NWYWx1ZURhcmsgfSwKKyAgICAgICAgW10oYXV0byYgY29u
dGV4dCkgeworICAgICAgICAgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAg
ICAgICAgICAgICAgIGlmIChmcmFtZS5kb2N1bWVudCgpLT5sb2FkZXIoKSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGNvbG9yU2NoZW1lUHJlZmVyZW5jZSA9IGZyYW1lLmRvY3VtZW50KCkt
PmxvYWRlcigpLT5jb2xvclNjaGVtZVByZWZlcmVuY2UoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNvbG9yU2NoZW1lUHJlZmVyZW5jZSAhPSBDb2xvclNjaGVtZVByZWZlcmVuY2U6Ok5vUHJl
ZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xvclNjaGVtZVByZWZl
cmVuY2UgPT0gQ29sb3JTY2hlbWVQcmVmZXJlbmNlOjpEYXJrOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZS5wYWdlKCktPnVzZURhcmtBcHBlYXJhbmNl
KCk7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50
aWZpZXJzIHsgdXNlRGFya0FwcGVhcmFuY2UgPyBDU1NWYWx1ZURhcmsgOiBDU1NWYWx1ZUxpZ2h0
IH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisjZW5kaWYKKwor
VmVjdG9yPGNvbnN0IEZlYXR1cmVTY2hlbWEqPiBhbGxTY2hlbWFzKCkKK3sKKyAgICByZXR1cm4g
eworICAgICAgICAmYW5pbWF0aW9uKCksCisgICAgICAgICZhbnlIb3ZlcigpLAorICAgICAgICAm
YW55UG9pbnRlcigpLAorICAgICAgICAmYXNwZWN0UmF0aW8oKSwKKyAgICAgICAgJmNvbG9yKCks
CisgICAgICAgICZjb2xvckdhbXV0KCksCisgICAgICAgICZjb2xvckluZGV4KCksCisgICAgICAg
ICZkZXZpY2VBc3BlY3RSYXRpbygpLAorICAgICAgICAmZGV2aWNlSGVpZ2h0KCksCisvLyBGSVhN
RTogJmRldmljZVBpeGVsUmF0aW8oKSwKKyAgICAgICAgJmRldmljZVdpZHRoKCksCisgICAgICAg
ICZkeW5hbWljUmFuZ2UoKSwKKyAgICAgICAgJmZvcmNlZENvbG9ycygpLAorICAgICAgICAmZ3Jp
ZCgpLAorICAgICAgICAmaGVpZ2h0KCksCisgICAgICAgICZob3ZlcigpLAorICAgICAgICAmaW52
ZXJ0ZWRDb2xvcnMoKSwKKyAgICAgICAgJm1vbm9jaHJvbWUoKSwKKyAgICAgICAgJm9yaWVudGF0
aW9uKCksCisgICAgICAgICZwb2ludGVyKCksCisgICAgICAgICZwcmVmZXJzQ29udHJhc3QoKSwK
KyAgICAgICAgJnByZWZlcnNEYXJrSW50ZXJmYWNlKCksCisgICAgICAgICZwcmVmZXJzUmVkdWNl
ZE1vdGlvbigpLAorLy8gRklYTUU6ICZyZXNvbHV0aW9uKCksCisgICAgICAgICZzY2FuKCksCisg
ICAgICAgICZ0cmFuc2Zvcm0yZCgpLAorICAgICAgICAmdHJhbnNmb3JtM2QoKSwKKyAgICAgICAg
JnRyYW5zaXRpb24oKSwKKyAgICAgICAgJnZpZGVvUGxheWFibGVJbmxpbmUoKSwKKyAgICAgICAg
JndpZHRoKCksCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgICAgICAmZGlz
cGxheU1vZGUoKSwKKyNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICAm
cHJlZmVyc0NvbG9yU2NoZW1lKCksCisjZW5kaWYKKyAgICB9OworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNGVjZGU4MzRlNTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmgKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmU6Ok1R
IHsKKworbmFtZXNwYWNlIEZlYXR1cmVzIHsKKworY29uc3QgRmVhdHVyZVNjaGVtYSYgYW5pbWF0
aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBhbnlIb3ZlcigpOworY29uc3QgRmVhdHVyZVNj
aGVtYSYgYW55UG9pbnRlcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgYXNwZWN0UmF0aW8oKTsK
K2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9yKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xv
ckdhbXV0KCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckluZGV4KCk7Citjb25zdCBGZWF0
dXJlU2NoZW1hJiBkZXZpY2VBc3BlY3RSYXRpbygpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgZGV2
aWNlSGVpZ2h0KCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VQaXhlbFJhdGlvKCk7Citj
b25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VXaWR0aCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYg
ZHluYW1pY1JhbmdlKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBmb3JjZWRDb2xvcnMoKTsKK2Nv
bnN0IEZlYXR1cmVTY2hlbWEmIGdyaWQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhlaWdodCgp
OworY29uc3QgRmVhdHVyZVNjaGVtYSYgaG92ZXIoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGlu
dmVydGVkQ29sb3JzKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBtb25vY2hyb21lKCk7Citjb25z
dCBGZWF0dXJlU2NoZW1hJiBvcmllbnRhdGlvbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgcG9p
bnRlcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgcHJlZmVyc0NvbnRyYXN0KCk7Citjb25zdCBG
ZWF0dXJlU2NoZW1hJiBwcmVmZXJzRGFya0ludGVyZmFjZSgpOworY29uc3QgRmVhdHVyZVNjaGVt
YSYgcHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHJlc29sdXRp
b24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHNjYW4oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEm
IHRyYW5zZm9ybTJkKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB0cmFuc2Zvcm0zZCgpOworY29u
c3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNpdGlvbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgdmlk
ZW9QbGF5YWJsZUlubGluZSgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgd2lkdGgoKTsKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkaXNwbGF5
TW9kZSgpOworI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitjb25zdCBGZWF0dXJl
U2NoZW1hJiBwcmVmZXJzQ29sb3JTY2hlbWUoKTsKKyNlbmRpZgorCitWZWN0b3I8Y29uc3QgRmVh
dHVyZVNjaGVtYSo+IGFsbFNjaGVtYXMoKTsKKworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggY2JmMWI2YmE4MDlmLi4wYjg0
NGJlOTA5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNl
ci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDU1NNYXJrdXAuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlTZXJpYWxp
emF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUZlYXR1cmVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBNUSB7CkBAIC0zOSwxMSArNDAsNyBAQCBNZWRpYVF1ZXJ5UGFy
c2VyOjpNZWRpYVF1ZXJ5UGFyc2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAK
IFZlY3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1hKj4gTWVkaWFRdWVyeVBhcnNlcjo6ZmVhdHVyZVNj
aGVtYXMoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNj
aGVtYT4gd2lkdGhTY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgIndpZHRoIl9zLCBGZWF0dXJlU2No
ZW1hOjpUeXBlOjpSYW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7
IH0gfSB9OwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVt
YT4gaGVpZ2h0U2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJoZWlnaHQiX3MsIEZlYXR1cmVTY2hl
bWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6TGVuZ3RoIH0sIHsg
fSB9IH07Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1h
PiBvcmllbnRhdGlvblNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAib3JpZW50YXRpb24iX3MsIEZl
YXR1cmVTY2hlbWE6OlR5cGU6OkRpc2NyZXRlLCB7IH0sIHsgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NT
VmFsdWVMYW5kc2NhcGUgfSB9IH07Ci0KLSAgICByZXR1cm4geyAmd2lkdGhTY2hlbWEuZ2V0KCks
ICZoZWlnaHRTY2hlbWEuZ2V0KCksICZvcmllbnRhdGlvblNjaGVtYS5nZXQoKSB9OworICAgIHJl
dHVybiBGZWF0dXJlczo6YWxsU2NoZW1hcygpOwogfQogCiBNZWRpYVF1ZXJ5TGlzdCBNZWRpYVF1
ZXJ5UGFyc2VyOjpjb25zdW1lTWVkaWFRdWVyeUxpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDAyOTRiZTFjZDVj
Yy4uYjRmMTQxZjMwYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApA
QCAtMzYxLDYgKzM2MSw3IEBAIHB1YmxpYzoKICAgICBNb2RhbENvbnRhaW5lck9ic2VydmF0aW9u
UG9saWN5IG1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X21vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3k7IH0KICAgICB2b2lkIHNldE1vZGFsQ29u
dGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3koTW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeSBw
b2xpY3kpIHsgbV9tb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5ID0gcG9saWN5OyB9CiAK
KyAgICAvLyBGWElNRTogV2h5IGlzIHRoaXMgaW4gYSBMb2FkZXI/CiAgICAgV0VCQ09SRV9FWFBP
UlQgQ29sb3JTY2hlbWVQcmVmZXJlbmNlIGNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29sb3JTY2hlbWVQcmVmZXJlbmNlKENvbG9yU2NoZW1lUHJlZmVyZW5jZSBw
cmVmZXJlbmNlKSB7IG1fY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gcHJlZmVyZW5jZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5k
ZXggYzBkNGFlZGY2ZjBmLi42ZjA2OWExYjIxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTcyLDExICs3MiwxMiBAQCBhdXRv
IENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNvbnRleHRGb3JRdWVy
eShjb25zdCBDUTo6Q29udGFpbgogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFjb250
YWluZXItPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBNUTo6RmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0IHsgfTsKKyAgICAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQg
eyBtX2VsZW1lbnQtPmRvY3VtZW50KCkgfTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRh
aW5lci0+cmVuZGVyZXIoKTsKIAogICAgIHJldHVybiBNUTo6RmVhdHVyZUV2YWx1YXRpb25Db250
ZXh0IHsKKyAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLAogICAgICAgICBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhIHsgcmVuZGVyZXIuc3R5bGUoKSwgbV9lbGVtZW50LT5kb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCAmcmVuZGVyZXIudmll
dygpIH0sCiAgICAgICAgICZyZW5kZXJlcgogICAgIH07Cg==
</data>
<flag name="commit-queue"
          id="491776"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463251</attachid>
            <date>2022-10-26 07:47:58 -0700</date>
            <delta_ts>2022-10-26 07:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247061-20221026174756.patch</filename>
            <type>text/plain</type>
            <size>49509</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAxZDU5MDU2YjM3YTg3NGIyZjRhZmIzM2ExMGEwN2ZiNGIyODlmNTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI2IE9jdCAyMDIyIDE1OjQ2OjQ1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
QWRkIEZlYXR1cmVTY2hlbWFzIGZvciBtb3N0IG1lZGlhIHF1ZXJ5IGZlYXR1cmVzCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MDYxIDxyZGFyOi8vcHJvYmxlbS8x
MDE1ODYyODU+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFkZCBzY2hlbWFzIHdpdGgg
ZXZhbHVhdGlvbiBmdW5jdGlvbnMgZm9yIG1vc3QgbWVkaWEgcXVlcnkgZmVhdHVyZXMgKGV2ZXJ5
dGhpbmcgZXhjZXB0IHRoZSByZXNvbHV0aW9uIHF1ZXJpZXMpLgpFdmFsdWF0aW9uIGZ1bmN0aW9u
cyBhcmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nIG9uZXMgaW4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAuCgpUaGVzZSBhcmUgbm90IHVzZWQgeWV0LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3Bw
OgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpTaXplRmVhdHVyZVNjaGVtYTo6U2l6ZUZlYXR1cmVT
Y2hlbWEpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpvcmllbnRhdGlvbik6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
OmV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2Vy
Q29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVCb29sZWFuRmVhdHVyZSk6CihXZWJD
b3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2VyRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVO
dW1iZXJGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZUlkZW50aWZpZXJGZWF0dXJlKToK
KFdlYkNvcmU6Ok1ROjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6
Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OnZhbGlkYXRlRmVhdHVyZUFnYWluc3RT
Y2hlbWEpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVz
Lmg6CihXZWJDb3JlOjpNUTo6RmVhdHVyZVNjaGVtYTo6RmVhdHVyZVNjaGVtYSk6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6Ok1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHA6IEFkZGVkLgooV2ViQ29yZTo6TVE6
OkZlYXR1cmVzOjpCb29sZWFuU2NoZW1hOjpCb29sZWFuU2NoZW1hKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6Qm9vbGVhblNjaGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVh
dHVyZXM6OkludGVnZXJTY2hlbWE6OkludGVnZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjpJbnRlZ2VyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJl
czo6TGVuZ3RoU2NoZW1hOjpMZW5ndGhTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpM
ZW5ndGhTY2hlbWE6OnZhbHVlRnVuY3Rpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRp
b1NjaGVtYTo6UmF0aW9TY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1NjaGVt
YTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OklkZW50aWZpZXJTY2hl
bWE6OklkZW50aWZpZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpJZGVudGlmaWVy
U2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW5pbWF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW55SG92ZXIpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjphbnlQb2ludGVyKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YXNwZWN0UmF0aW8pOgoo
V2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmNv
bG9yR2FtdXQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvckluZGV4KToKKFdlYkNvcmU6
Ok1ROjpGZWF0dXJlczo6ZGV2aWNlQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjpkZXZpY2VIZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkZXZpY2VXaWR0aCk6CihX
ZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmR5bmFtaWNSYW5nZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OmZvcmNlZENvbG9ycyk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmdyaWQpOgooV2ViQ29y
ZTo6TVE6OkZlYXR1cmVzOjpoZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpob3Zlcik6
CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmludmVydGVkQ29sb3JzKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6bW9ub2Nocm9tZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6Om9yaWVudGF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cG9pbnRlcik6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OnByZWZlcnNDb250cmFzdCk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnByZWZlcnNEYXJr
SW50ZXJmYWNlKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24p
OgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpzY2FuKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6
dHJhbnNmb3JtMmQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp0cmFuc2Zvcm0zZCk6CihXZWJD
b3JlOjpNUTo6RmVhdHVyZXM6OnRyYW5zaXRpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp2
aWRlb1BsYXlhYmxlSW5saW5lKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6d2lkdGgpOgooV2Vi
Q29yZTo6TVE6OkZlYXR1cmVzOjpkaXNwbGF5TW9kZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OnByZWZlcnNDb2xvclNjaGVtZSk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6Ciog
U291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29y
ZTo6U3R5bGU6OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHRGb3JRdWVyeSBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAg
ICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8ICAgNiArCiAuLi4vY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMu
Y3BwICAgICAgfCAgIDcgKy0KIC4uLi9jc3MvcXVlcnkvQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5o
ICAgICAgICB8ICAgMyArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAgIHwgIDY3ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggICAgfCAgIDUgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3Bw
ICAgICB8ICAgMiArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggICAg
ICAgIHwgICA3ICstCiAuLi4vV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgfCAgMjggKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
ICB8ICAgNSArLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAg
IHwgNjY4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlGZWF0dXJlcy5oIHwgIDc1ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFR
dWVyeVBhcnNlci5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5jcHAgfCAgIDMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCsp
LCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTMyYzExMzExZGY4Li5kMTZmZGUwZjY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04ODcsNiArODg3
LDcgQEAgY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAogY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
U2VyaWFsaXphdGlvbi5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcAogY3NzL3R5cGVkb20vQ29tcHV0ZWRTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCiBj
c3MvdHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJjMTMyYmI4MGY0
Li4yZjk3OTFmNWVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjYsNiArNTUyNiw3IEBACiAJCUU0NTVBNTcxMjhGRDcz
RjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU3MDI4RkQ3M0YzMDBCNkVBNzYgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNDU1QTU4MjI4RkU4RDhEMDBCNkVBNzYgLyog
TWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAqLzsgfTsKIAkJRTQ1
NUE1OTQyOTAyODc4OTAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNTkzMjkwMjg3ODgw
MEI2RUE3NiAvKiBDb250YWluZXJRdWVyeUZlYXR1cmVzLmggKi87IH07CisJCUU0NTVBNUJBMjkw
N0E4OUEwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNUI5MjkwN0E4OTkwMEI2RUE3NiAvKiBN
ZWRpYVF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8q
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERG
QzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcg
LyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsg
fTsKQEAgLTE4MDUzLDYgKzE4MDU0LDggQEAKIAkJRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8q
IE1lZGlhUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDU1QTU5MTI5MDI4Nzc4MDBCNkVB
NzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb250YWluZXJRdWVyeUZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ1NUE1OTMyOTAyODc4ODAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyUXVl
cnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU1QTVCOTI5MDdB
ODk5MDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDU1QTVCQjI5MDdBOEEzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1NzUsNiArMzI1NzgsOCBAQAogCQkJ
CUU0NTVBNTgxMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5LmggKi8sCiAJCQkJRTQ1NUE1
NkYyOEZENzNFQjAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAogCQkJCUU0
NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJCQkJ
RTQ1NUE1QkIyOTA3QThBMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5jcHAgKi8sCisJ
CQkJRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oICovLAog
CQkJCUU0NEY0MjJGMjhGNkE2NTIwMDBGODdCQyAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywK
IAkJCQlFNDRGNDIyRDI4RjZBNjQ4MDAwRjg3QkMgLyogTWVkaWFRdWVyeVBhcnNlci5oICovLAog
CQkJKTsKQEAgLTM3NDcwLDYgKzM3NDc1LDcgQEAKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3
ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1NUE1
NzEyOEZENzNGMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlhUXVl
cnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJD
IC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdBRDdE
MDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNB
QTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1
cmVzLmNwcAppbmRleCAxNDVkMDhmMzQwM2UuLjQ4MGU4NTYwYjQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAg
LTMzLDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmU6OkNROjpGZWF0dXJlcyB7CiB1c2luZyBu
YW1lc3BhY2UgTVE7CiAKIHN0cnVjdCBTaXplRmVhdHVyZVNjaGVtYSA6IHB1YmxpYyBGZWF0dXJl
U2NoZW1hIHsKLSAgICBTaXplRmVhdHVyZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBU
eXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1
ZUlEPiB2YWx1ZUlkZW50aWZpZXJzID0geyB9KQotICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgdHlwZSwgdmFsdWVUeXBlcywgdmFsdWVJZGVudGlmaWVycykKKyAgICBTaXplRmVhdHVyZVNj
aGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5
cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMgPSB7
IH0pCisgICAgICAgIDogRmVhdHVyZVNjaGVtYShuYW1lLCB0eXBlLCB2YWx1ZVR5cGVzLCBXVEZN
b3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogCiAgICAgRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRp
b25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQpAQCAtMTY3LDcgKzE2OCw3IEBAIGNv
bnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKICAgICAgICAgRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0IG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHJlbmRlcmVyLmNvbnRl
bnRIZWlnaHQoKSA+PSByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKLSAgICAgICAgICAgIHJldHVy
biBldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShmZWF0dXJlLCBpc1BvcnRyYWl0ID8gQ1NTVmFsdWVQ
b3J0cmFpdCA6IENTU1ZhbHVlTGFuZHNjYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBldmFsdWF0
ZUlkZW50aWZpZXJGZWF0dXJlKGZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0
IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKaW5kZXggNDk3OThk
YjZlZDMxLi5iMmZlOGU2MTQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaApAQCAtMjQsOCArMjQsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZTo6Q1EgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZDY1ZjgxZmU2MjAuLmYy
M2QxZGY1MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2Vu
ZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC04Myw2ICs4MywzMiBAQCBzdGF0aWMgRXZh
bHVhdGlvblJlc3VsdCBldmFsdWF0ZUxlbmd0aENvbXBhcmlzb24oTGF5b3V0VW5pdCBzaXplLCBj
b25zdCBzdGQ6Om9wdAogICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21w
YXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKIH07CiAKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0
IGV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbihkb3VibGUgbnVtYmVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPENvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpCit7CisgICAgaWYgKCFjb21w
YXJpc29uKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKworICAgIGF1
dG8gZXhwcmVzc2lvbk51bWJlciA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
Y29tcGFyaXNvbi0+dmFsdWUuZ2V0KCkpLT5kb3VibGVWYWx1ZSgpOworCisgICAgYXV0byBsZWZ0
ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gZXhwcmVzc2lvbk51bWJlciA6IG51bWJlcjsKKyAgICBh
dXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gbnVtYmVyIDogZXhwcmVzc2lvbk51bWJl
cjsKKworICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5v
cCwgbGVmdCwgcmlnaHQpKTsKK307CisKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
SW50ZWdlckNvbXBhcmlzb24oaW50IG51bWJlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb21wYXJp
c29uPiYgY29tcGFyaXNvbiwgU2lkZSBzaWRlKQoreworICAgIGlmICghY29tcGFyaXNvbikKKyAg
ICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAgICBhdXRvIGV4cHJlc3Np
b25OdW1iZXIgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlzb24t
PnZhbHVlLmdldCgpKS0+aW50VmFsdWUoKTsKKworICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lk
ZTo6TGVmdCA/IGV4cHJlc3Npb25OdW1iZXIgOiBudW1iZXI7CisgICAgYXV0byByaWdodCA9IHNp
ZGUgPT0gU2lkZTo6TGVmdCA/IG51bWJlciA6IGV4cHJlc3Npb25OdW1iZXI7CisKKyAgICByZXR1
cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0
KSk7Cit9OworCiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21w
YXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKQEAgLTEzMSwxOCArMTU3LDQ5IEBA
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgZG91YmxlIHJhdGlvKQogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmlnaHRSZXN1bHQ7
CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgQ1NTVmFsdWVJRCBleHBlY3RlZFZhbHVlKQorRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZUJvb2xlYW5GZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGJvb2wgY3Vy
cmVudFZhbHVlKQogewogICAgIGlmICghZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAg
IHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KGN1cnJlbnRWYWx1ZSk7CiAKLSAgICBhdXRvJiBjb21wYXJpc29uID0gKmZl
YXR1cmUucmlnaHRDb21wYXJpc29uOworICAgIGF1dG8mIHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCpmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbi0+dmFsdWUpOworICAgIGF1dG8g
ZXhwZWN0ZWRWYWx1ZSA9IHZhbHVlLmludFZhbHVlKCk7CiAKLSAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPihjb21wYXJpc29uLnZhbHVlKSB8fCBjb21wYXJpc29uLm9wICE9IENvbXBhcmlz
b25PcGVyYXRvcjo6RXF1YWwpCisgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgZXhwZWN0ZWRWYWx1
ZSAhPSAxKQogICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAorICAg
IHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoZXhwZWN0ZWRWYWx1ZSA9PSBjdXJyZW50VmFsdWUp
OworfQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgaW50IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICBpZiAoIWZlYXR1cmUubGVm
dENvbXBhcmlzb24gJiYgIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQorICAgICAgICByZXR1cm4g
dG9FdmFsdWF0aW9uUmVzdWx0KCEhY3VycmVudFZhbHVlKTsKKworICAgIGF1dG8gbGVmdFJlc3Vs
dCA9IGV2YWx1YXRlSW50ZWdlckNvbXBhcmlzb24oY3VycmVudFZhbHVlLCBmZWF0dXJlLmxlZnRD
b21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKKyAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVhdGVJ
bnRlZ2VyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBT
aWRlOjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQor
CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiBm
ZWF0dXJlLCBkb3VibGUgY3VycmVudFZhbHVlKQoreworICAgIGlmICghZmVhdHVyZS5sZWZ0Q29t
cGFyaXNvbiAmJiAhZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCisgICAgICAgIHJldHVybiB0b0V2
YWx1YXRpb25SZXN1bHQoISFjdXJyZW50VmFsdWUpOworCisgICAgYXV0byBsZWZ0UmVzdWx0ID0g
ZXZhbHVhdGVOdW1iZXJDb21wYXJpc29uKGN1cnJlbnRWYWx1ZSwgZmVhdHVyZS5sZWZ0Q29tcGFy
aXNvbiwgU2lkZTo6TGVmdCk7CisgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1YXRlTnVtYmVy
Q29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpS
aWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlSWRlbnRpZmllckZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgQ1NTVmFsdWVJRCBjdXJyZW50VmFsdWUpCit7CisgICAgaWYgKCFmZWF0dXJlLnJpZ2h0
Q29tcGFyaXNvbikKKyAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjdXJyZW50VmFs
dWUgIT0gQ1NTVmFsdWVOb25lICYmIGN1cnJlbnRWYWx1ZSAhPSBDU1NWYWx1ZU5vUHJlZmVyZW5j
ZSk7CisKICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZmVh
dHVyZS5yaWdodENvbXBhcmlzb24tPnZhbHVlKTsKLSAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVz
dWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBjdXJyZW50VmFsdWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFs
dWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1
YXRvci5oCmluZGV4IDZmYTA4NWY3YzE3ZC4uMDU2ZWViYjhkODljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAt
MzcsNyArMzcsMTAgQEAgbmFtZXNwYWNlIE1RIHsKIAogRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0
ZUxlbmd0aEZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIExheW91dFVuaXQsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmKTsKIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1
cmUoY29uc3QgRmVhdHVyZSYsIGRvdWJsZSk7Ci1FdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRGlz
Y3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKTsKK0V2YWx1YXRpb25SZXN1
bHQgZXZhbHVhdGVCb29sZWFuRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgYm9vbCk7CitFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGludCk7CitF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91
YmxlKTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVJZGVudGlmaWVyRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgQ1NTVmFsdWVJRCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZhbHVh
dG9yPgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggMTM0
ZGRjYTJmZmEzLi4wMGY4MThmZGQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIGJv
b2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0U2No
ZW1hKEZlYXR1cmUmIGZlYXR1cmUsCiAKICAgICBhdXRvIGlzVmFsaWQgPSBbJl0gewogICAgICAg
ICBpZiAoc2NoZW1hLnR5cGUgPT0gRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUpIHsKLSAg
ICAgICAgICAgIGlmIChmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmIGZlYXR1cmUubGVmdENvbXBh
cmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgICAgICAgICBpZiAo
ZmVhdHVyZS5zeW50YXggPT0gU3ludGF4OjpSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5yaWdodENvbXBhcmlzb24gJiYgZmVhdHVy
ZS5yaWdodENvbXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKaW5kZXggYTNiZTMwZjg2MDdjLi41MWYwYzhhYzhk
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
VHlwZXMuaApAQCAtNzIsNyArNzIsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uIHsKIGVudW0gY2xhc3Mg
RXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCiBz
dHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhIGNvbnZlcnNpb25EYXRhOworICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKKyAg
ICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgfTsKICAgICBjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTk1LDExICs5
NiwxMSBAQCBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CiAKICAgICB2aXJ0dWFsIEV2YWx1YXRpb25S
ZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247IH0KIAotICAg
IEZlYXR1cmVTY2hlbWEoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBPcHRpb25T
ZXQ8VmFsdWVUeXBlPiB2YWx1ZVR5cGVzLCBWZWN0b3I8Q1NTVmFsdWVJRD4gdmFsdWVJZGVudGlm
aWVycykKKyAgICBGZWF0dXJlU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFR5cGUgdHlw
ZSwgT3B0aW9uU2V0PFZhbHVlVHlwZT4gdmFsdWVUeXBlcywgVmVjdG9yPENTU1ZhbHVlSUQ+JiYg
dmFsdWVJZGVudGlmaWVycyA9IHsgfSkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwg
dHlwZSh0eXBlKQogICAgICAgICAsIHZhbHVlVHlwZXModmFsdWVUeXBlcykKLSAgICAgICAgLCB2
YWx1ZUlkZW50aWZpZXJzKHZhbHVlSWRlbnRpZmllcnMpCisgICAgICAgICwgdmFsdWVJZGVudGlm
aWVycyhXVEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogICAgIHZpcnR1YWwgfkZl
YXR1cmVTY2hlbWEoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGI1NjNiYjI4ZWE5Mi4uY2M0NzNlNWI2
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0eWxl
Rm9udFNpemVGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1R
IHsKQEAgLTM2LDcgKzM3LDggQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6
Ok1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQog
ICAgIDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVk
aWFUeXBlKQotICAgICwgbV9ldmFsdWF0aW9uQ29udGV4dCh7IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEgeyAqcm9vdEVsZW1lbnRTdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgZG9jdW1lbnQucmVu
ZGVyVmlldygpIH0sIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9KQorICAgICwgbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZShyb290RWxlbWVudFN0eWxlKQogewog
fQogCkBAIC02NywxNyArNjksMjcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0
ZShjb25zdCBNZWRpYVF1ZXJ5JiBxdWVyeSkgY29uc3QKICAgICBhdXRvIGNvbmRpdGlvbk1hdGNo
ZXMgPSBbJl0gewogICAgICAgICBpZiAoIXF1ZXJ5LmNvbmRpdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKCpxdWVyeS5jb25k
aXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisK
KyAgICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAoIW1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0
eWxlLmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNp
emVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgbV9kb2N1bWVudCk7CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOworICAgICAgICBkZWZhdWx0U3R5bGUuc2V0
Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CisgICAgICAgIGRlZmF1
bHRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgpOworCisgICAgICAgIEZlYXR1cmVFdmFsdWF0
aW9uQ29udGV4dCBjb250ZXh0IHsgbV9kb2N1bWVudCwgeyAqbV9yb290RWxlbWVudFN0eWxlLCAm
ZGVmYXVsdFN0eWxlLCBudWxscHRyLCBtX2RvY3VtZW50LnJlbmRlclZpZXcoKSB9LCBudWxscHRy
IH07CisgICAgICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbigqcXVlcnkuY29uZGl0aW9uLCBj
b250ZXh0KSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogICAgIH0oKTsKIAogICAgIHJldHVy
biBjb25kaXRpb25NYXRjaGVzICE9IGlzTmVnYXRlZDsKIH0KIAotRXZhbHVhdGlvblJlc3VsdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGNvbnN0
IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd247Ci19Ci0KLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzJiMmYwMWNmYTg2Li4wZDFjYjM4ODgz
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3Iu
aApAQCAtNDAsMTEgKzQwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5
JikgY29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7Ci0KIHByaXZh
dGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJl
RXZhbHVhdGlvbkNvbnRleHQgbV9ldmFsdWF0aW9uQ29udGV4dDsKKyAgICBjb25zdCBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1
cmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhNGVlNDM4
M2VmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1
ZXJ5RmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVy
ZXMuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlF1aXJr
cy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJUaGVtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZTo6TVE6OkZlYXR1cmVzIHsKKworc3RydWN0IEJvb2xlYW5TY2hlbWEg
OiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVGdW5jdGlvbiA9IEZ1bmN0
aW9uPGJvb2woY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgQm9vbGVh
blNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5j
dGlvbikKKyAgICAgICAgOiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6
OkRpc2NyZXRlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAg
ICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAg
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3Qg
RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGV2YWx1YXRlQm9vbGVhbkZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5j
dGlvbihjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFs
dWVGdW5jdGlvbjsKK307CisKK3N0cnVjdCBJbnRlZ2VyU2NoZW1hIDogcHVibGljIEZlYXR1cmVT
Y2hlbWEgeworICAgIHVzaW5nIFZhbHVlRnVuY3Rpb24gPSBGdW5jdGlvbjxpbnQoY29uc3QgRmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgSW50ZWdlclNjaGVtYShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlvbikKKyAgICAgICAgOiBG
ZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVT
Y2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RG
TW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZh
bHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1
YXRlSW50ZWdlckZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisKK3N0
cnVjdCBMZW5ndGhTY2hlbWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFs
dWVGdW5jdGlvbiA9IEZ1bmN0aW9uPExheW91dFVuaXQoY29uc3QgRmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0Jik+OworCisgICAgTGVuZ3RoU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpMZW5ndGggfSkKKyAgICAgICAgLCB2YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlv
bikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1
cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUo
ZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307
CisKK3N0cnVjdCBSYXRpb1NjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2lu
ZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248ZG91YmxlKGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9u
Q29udGV4dCYpPjsKKworICAgIFJhdGlvU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpSYXRpbyB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9u
KSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlUmF0aW9GZWF0dXJlKGZl
YXR1cmUsIHZhbHVlRnVuY3Rpb24oY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBW
YWx1ZUZ1bmN0aW9uIHZhbHVlRnVuY3Rpb247Cit9OworCit1c2luZyBNYXRjaGluZ0lkZW50aWZp
ZXJzID0gVmVjdG9yPENTU1ZhbHVlSUQsIDE+OworCitzdHJ1Y3QgSWRlbnRpZmllclNjaGVtYSA6
IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rp
b248TWF0Y2hpbmdJZGVudGlmaWVycyhjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQmKT47
CisKKyAgICBJZGVudGlmaWVyU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxD
U1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMsIFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0
aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6
RGlzY3JldGUsIHsgfSwgV1RGTW92ZSh2YWx1ZUlkZW50aWZpZXJzKSkKKyAgICAgICAgLCB2YWx1
ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVF
dmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGF1dG8gdmFsdWVJRHMgPSB2YWx1ZUZ1bmN0aW9uKGNvbnRleHQpOworICAgICAgICBmb3IgKGF1
dG8gdmFsdWVJRCA6IHZhbHVlSURzKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWVJZGVudGlm
aWVycy5jb250YWlucyh2YWx1ZUlEKSk7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVJZGVudGlm
aWVyRmVhdHVyZShmZWF0dXJlLCB2YWx1ZUlEKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgVmFsdWVGdW5jdGlvbiB2YWx1ZUZ1bmN0aW9uOworfTsKKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgYW5pbWF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LWFuaW1hdGlvbiJf
cywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJldHVy
biBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCkKK3sKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7
CisgICAgICAgICJhbnktaG92ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVIb3ZlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAgICAg
ICAgICBib29sIGlzU3VwcG9ydGVkID0gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5o
b3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaXNTdXBwb3J0ZWQgPyBDU1NWYWx1ZUhvdmVy
IDogQ1NTVmFsdWVOb25lIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueVBvaW50ZXIoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgImFueS1wb2ludGVyIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1Zh
bHVlRmluZSwgQ1NTVmFsdWVDb2Fyc2UgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byogcGFnZSA9IGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgp
OworICAgICAgICAgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzID0gcGFnZSA/IHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBv
aW50aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CisK
KyAgICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CisgICAgICAgICAg
ICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzOjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVG
aW5lKTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmll
cnMuYXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlTm9u
ZSk7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKworICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgYXNwZWN0UmF0
aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8UmF0aW9TY2hlbWE+
IHNjaGVtYSB7CisgICAgICAgICJhc3BlY3QtcmF0aW8iX3MsCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqY29udGV4dC5kb2N1bWVudC52aWV3
KCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2aWV3LmxheW91dFdp
ZHRoKCkpIC8gdmlldy5sYXlvdXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0
dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKQoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsKKyAg
ICAgICAgImNvbG9yIl9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICByZXR1cm4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgp
LT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2No
ZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckdhbXV0KCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7Cisg
ICAgICAgICJjb2xvci1nYW11dCJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVTUkdCLCBD
U1NWYWx1ZVAzLCBDU1NWYWx1ZVJlYzIwMjAgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0
ZWN0aW5nIGRpc3BsYXlzIHRoYXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KKyAgICAgICAgICAgIE1h
dGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnMgeyBDU1NWYWx1ZVNSR0IgfTsKKyAgICAgICAg
ICAgIGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoZnJhbWUubWFpbkZyYW1lKCkudmll
dygpKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVQMyk7Cisg
ICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKyAgICB9OworICAgIHJl
dHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1h
IHsKKyAgICAgICAgImNvbG9yLWluZGV4Il9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4g
MDsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVt
YSYgZGV2aWNlQXNwZWN0UmF0aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8UmF0aW9TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJkZXZpY2UtYXNwZWN0LXJhdGlv
Il9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIHNjcmVl
blNpemUgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUo
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHNjcmVlblNpemUud2lk
dGgoKSkgLyBzY3JlZW5TaXplLmhlaWdodCgpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VIZWlnaHQoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1hPiBzY2hlbWEg
eworICAgICAgICAiZGV2aWNlLWhlaWdodCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS5oZWlnaHQoKSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VQ
aXhlbFJhdGlvKCk7CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2NoZW1hIHsK
KyAgICAgICAgImRldmljZS13aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCkt
Pm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS53aWR0aCgpIH07CisgICAgICAgIH0KKyAgICB9Owor
ICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGR5bmFtaWNSYW5n
ZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2No
ZW1hPiBzY2hlbWEgeworICAgICAgICAiZHluYW1pYy1yYW5nZSJfcywKKyAgICAgICAgVmVjdG9y
IHsgQ1NTVmFsdWVTdGFuZGFyZCwgQ1NTVmFsdWVIaWdoIH0sCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmhkck1lZGlhQ2FwYWJp
bGl0aWVzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1p
Y1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShmcmFt
ZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBN
YXRjaGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzIHsgQ1NTVmFsdWVTdGFuZGFyZCB9OworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVIaWdoKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVu
dGlmaWVyczsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZm9yY2VkQ29sb3JzKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJmb3Jj
ZWQtY29sb3JzIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWN0
aXZlIH0sCisgICAgICAgIFtdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJ
ZGVudGlmaWVycyB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBncmlkKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAg
ICAgICJncmlkIl9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB9
OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhlaWdodCgp
Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJoZWlnaHQiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LnZpZXcoKS0+bGF5b3V0SGVpZ2h0
KCk7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIGhvdmVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJob3ZlciJfcywKKyAgICAg
ICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUhvdmVyIH0sCisgICAgICAgIFtdKGF1
dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50
LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSAgcGFnZSAm
JiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5n
RGV2aWNlKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlzU3Vw
cG9ydGVkID8gQ1NTVmFsdWVIb3ZlciA6IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBpbnZlcnRl
ZENvbG9ycygpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlm
aWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiaW52ZXJ0ZWQtY29sb3JzIl9zLAorICAgICAg
ICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW52ZXJ0ZWQgfSwKKyAgICAgICAgW10o
YXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc0ludmVydGVkID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0
ZWRBY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSgp
ID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzKCk7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lk
ZW50aWZpZXJzIHsgaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUg
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgbW9ub2Nocm9tZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxJbnRlZ2VyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAibW9ub2Nocm9tZSJfcywK
KyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc01vbm9jaHJv
bWUgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1l
bnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRE
aXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkRGlzcGxheUlzTW9ub2Nocm9tZUFj
Y2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNj
cmVlbklzTW9ub2Nocm9tZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICByZXR1cm4gaXNNb25vY2hyb21lID8gc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpIDog
MDsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgb3JpZW50YXRpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIm9yaWVudGF0aW9u
Il9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZUxhbmRzY2FwZSwgQ1NTVmFsdWVQb3J0cmFp
dCB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiB2aWV3
ID0gKmNvbnRleHQuZG9jdW1lbnQudmlldygpOworICAgICAgICAgICAgLy8gU3F1YXJlIHZpZXdw
b3J0IGlzIHBvcnRyYWl0LgorICAgICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gdmlldy5sYXlv
dXRIZWlnaHQoKSA+PSB2aWV3LmxheW91dFdpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0
Y2hpbmdJZGVudGlmaWVycyB7IGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0IDogQ1NTVmFs
dWVMYW5kc2NhcGUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30K
KworY29uc3QgRmVhdHVyZVNjaGVtYSYgcG9pbnRlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicG9p
bnRlciJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUZpbmUsIENT
U1ZhbHVlQ29hcnNlIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAg
IGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAg
ICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljcyA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6
IE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPigpOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQuZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkUHJldmVudFBvaW50ZXJNZWRpYVF1ZXJ5RnJv
bUV2YWx1YXRpbmdUb0NvYXJzZSgpKQorICAgICAgICAgICAgICAgICAgICBwb2ludGVyQ2hhcmFj
dGVyaXN0aWNzID0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKKyAgICAgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICAgICAgTWF0Y2hpbmdJZGVudGlmaWVycyBpZGVudGlmaWVyczsKKyAg
ICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M6OkZpbmUpKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChD
U1NWYWx1ZUZpbmUpOworICAgICAgICAgICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuY29u
dGFpbnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSkKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVDb2Fyc2UpOworICAgICAgICAgICAgaWYgKGlkZW50
aWZpZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NT
VmFsdWVOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICAgICAgfQor
CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBw
cmVmZXJzQ29udHJhc3QoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJhc3QiX3Ms
CisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZU1vcmUsIENT
U1ZhbHVlTGVzcyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBi
b29sIHVzZXJQcmVmZXJzQ29udHJhc3QgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZy
YW1lID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc0NvbnRyYXN0QWNjZXNzaWJpbGl0eVZhbHVl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6
U3lzdGVtOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVyc0NvbnRy
YXN0KCk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHVz
ZXJQcmVmZXJzQ29udHJhc3QgPyBDU1NWYWx1ZU1vcmUgOiBDU1NWYWx1ZU5vUHJlZmVyZW5jZSB9
OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0
dXJlU2NoZW1hJiBwcmVmZXJzRGFya0ludGVyZmFjZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicHJl
ZmVycy1kYXJrLWludGVyZmFjZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb1ByZWZl
cmVuY2UsIENTU1ZhbHVlUHJlZmVycyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAg
ICAgICAgICBib29sIHByZWZlcnNEYXJrSW50ZXJmYWNlID0gZnJhbWUucGFnZSgpLT51c2VTeXN0
ZW1BcHBlYXJhbmNlKCkgJiYgZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpOworCisg
ICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHByZWZlcnNEYXJrSW50ZXJm
YWNlID8gQ1NTVmFsdWVQcmVmZXJzIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UgfTsKKyAgICAgICAg
fQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYg
cHJlZmVyc1JlZHVjZWRNb3Rpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJh
c3QiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZVJl
ZHVjZSB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBib29sIHVz
ZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IFsmXSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJh
bWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAgICAgICAgICAgICAgIHN3aXRjaCAo
ZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlW
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
Ok9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBj
YXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWU6OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbigpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRp
ZmllcnMgeyB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1ZVJlZHVjZSA6IENTU1Zh
bHVlTm9QcmVmZXJlbmNlIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHJlc29sdXRpb24oKTsKKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgc2NhbigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJ
ZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAic2NhbiJfcywKKyAgICAgICAgVmVj
dG9yIHsgQ1NTVmFsdWVJbnRlcmxhY2UsIENTU1ZhbHVlUHJvZ3Jlc3NpdmUgfSwKKyAgICAgICAg
W10oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgQ1NT
VmFsdWVQcm9ncmVzc2l2ZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1h
OworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB0cmFuc2Zvcm0yZCgpCit7CisgICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAg
ICAiLXdlYmtpdC10cmFuc2Zvcm0tMmQiX3MsCisgICAgICAgIFtdKGF1dG8mKSB7IHJldHVybiB0
cnVlOyB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2No
ZW1hJiB0cmFuc2Zvcm0zZCgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2Zvcm0tMmQi
X3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyNpZiBFTkFCTEUoM0RfVFJBTlNGT1JN
UykKKyAgICAgICAgICAgIGF1dG8qIHZpZXcgPSBjb250ZXh0LmRvY3VtZW50LnJlbmRlclZpZXco
KTsKKyAgICAgICAgICAgIHJldHVybiB2aWV3ICYmIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5SZW5k
ZXIzRFRyYW5zZm9ybXMoKTsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNpdGlv
bigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1h
PiBzY2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2l0aW9uIl9zLAorICAgICAgICBbXShh
dXRvJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKwor
Y29uc3QgRmVhdHVyZVNjaGVtYSYgdmlkZW9QbGF5YWJsZUlubGluZSgpCit7CisgICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAg
ICAiLXdlYmtpdC12aWRlby1wbGF5YWJsZS1pbmxpbmUiX3MsCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnNl
dHRpbmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygpOworICAgICAgICB9CisgICAgfTsK
KyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNjaGVt
YSB7CisgICAgICAgICJ3aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuZG9jdW1lbnQudmlldygpLT5sYXlvdXRXaWR0aCgpOwor
ICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgZGlzcGxheU1vZGUoKQor
eworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4g
c2NoZW1hIHsKKyAgICAgICAgImRpc3BsYXktbW9kZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NT
VmFsdWVGdWxsc2NyZWVuLCBDU1NWYWx1ZVN0YW5kYWxvbmUsIENTU1ZhbHVlTWluaW1hbFVpLCBD
U1NWYWx1ZUJyb3dzZXIgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAg
ICAgYm9vbCBpZGVudGlmaWVyID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9
ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5pZmVz
dCA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpIDog
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgICAgIGlmICghbWFuaWZlc3QpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUJyb3dzZXI7CisKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1hbmlmZXN0LT5kaXNwbGF5KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bk1hbmlmZXN0OjpEaXNwbGF5OjpGdWxsc2NyZWVuOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTVmFsdWVGdWxsc2NyZWVuOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25N
YW5pZmVzdDo6RGlzcGxheTo6U3RhbmRhbG9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlU3RhbmRhbG9uZTsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkRpc3BsYXk6Ok1pbmltYWxVSToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlTWluaW1hbFVpOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVz
dDo6RGlzcGxheTo6QnJvd3NlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
QnJvd3NlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAg
ICAgIHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaWRlbnRpZmllciB9OworICAgICAgICB9
CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHByZWZlcnNDb2xvclNjaGVtZSgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBz
Y2hlbWEgeworICAgICAgICAicHJlZmVycy1jb2xvci1zY2hlbWUiX3MsCisgICAgICAgIFZlY3Rv
ciB7IENTU1ZhbHVlTGlnaHQsIENTU1ZhbHVlRGFyayB9LAorICAgICAgICBbXShhdXRvJiBjb250
ZXh0KSB7CisgICAgICAgICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gWyZdIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLmRvY3VtZW50KCktPmxvYWRlcigpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gZnJhbWUuZG9jdW1lbnQoKS0+
bG9hZGVyKCktPmNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29sb3JTY2hlbWVQcmVmZXJlbmNlICE9IENvbG9yU2NoZW1lUHJlZmVyZW5jZTo6Tm9QcmVm
ZXJlbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lUHJlZmVy
ZW5jZSA9PSBDb2xvclNjaGVtZVByZWZlcmVuY2U6OkRhcms7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBhZ2UoKS0+dXNlRGFya0FwcGVhcmFuY2Uo
KTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRp
ZmllcnMgeyB1c2VEYXJrQXBwZWFyYW5jZSA/IENTU1ZhbHVlRGFyayA6IENTU1ZhbHVlTGlnaHQg
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKyNlbmRpZgorCitW
ZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IGFsbFNjaGVtYXMoKQoreworICAgIHJldHVybiB7
CisgICAgICAgICZhbmltYXRpb24oKSwKKyAgICAgICAgJmFueUhvdmVyKCksCisgICAgICAgICZh
bnlQb2ludGVyKCksCisgICAgICAgICZhc3BlY3RSYXRpbygpLAorICAgICAgICAmY29sb3IoKSwK
KyAgICAgICAgJmNvbG9yR2FtdXQoKSwKKyAgICAgICAgJmNvbG9ySW5kZXgoKSwKKyAgICAgICAg
JmRldmljZUFzcGVjdFJhdGlvKCksCisgICAgICAgICZkZXZpY2VIZWlnaHQoKSwKKy8vIEZJWE1F
OiAmZGV2aWNlUGl4ZWxSYXRpbygpLAorICAgICAgICAmZGV2aWNlV2lkdGgoKSwKKyAgICAgICAg
JmR5bmFtaWNSYW5nZSgpLAorICAgICAgICAmZm9yY2VkQ29sb3JzKCksCisgICAgICAgICZncmlk
KCksCisgICAgICAgICZoZWlnaHQoKSwKKyAgICAgICAgJmhvdmVyKCksCisgICAgICAgICZpbnZl
cnRlZENvbG9ycygpLAorICAgICAgICAmbW9ub2Nocm9tZSgpLAorICAgICAgICAmb3JpZW50YXRp
b24oKSwKKyAgICAgICAgJnBvaW50ZXIoKSwKKyAgICAgICAgJnByZWZlcnNDb250cmFzdCgpLAor
ICAgICAgICAmcHJlZmVyc0RhcmtJbnRlcmZhY2UoKSwKKyAgICAgICAgJnByZWZlcnNSZWR1Y2Vk
TW90aW9uKCksCisvLyBGSVhNRTogJnJlc29sdXRpb24oKSwKKyAgICAgICAgJnNjYW4oKSwKKyAg
ICAgICAgJnRyYW5zZm9ybTJkKCksCisgICAgICAgICZ0cmFuc2Zvcm0zZCgpLAorICAgICAgICAm
dHJhbnNpdGlvbigpLAorICAgICAgICAmdmlkZW9QbGF5YWJsZUlubGluZSgpLAorICAgICAgICAm
d2lkdGgoKSwKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICZkaXNw
bGF5TW9kZSgpLAorI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgICAgICZw
cmVmZXJzQ29sb3JTY2hlbWUoKSwKKyNlbmRpZgorICAgIH07Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjA0ZWNkZTgzNGU1MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6TVEg
eworCituYW1lc3BhY2UgRmVhdHVyZXMgeworCitjb25zdCBGZWF0dXJlU2NoZW1hJiBhbmltYXRp
b24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCk7Citjb25zdCBGZWF0dXJlU2No
ZW1hJiBhbnlQb2ludGVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBhc3BlY3RSYXRpbygpOwor
Y29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9y
R2FtdXQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKTsKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIGRldmljZUFzcGVjdFJhdGlvKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZp
Y2VIZWlnaHQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVBpeGVsUmF0aW8oKTsKK2Nv
bnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBk
eW5hbWljUmFuZ2UoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGZvcmNlZENvbG9ycygpOworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZ3JpZCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaGVpZ2h0KCk7
Citjb25zdCBGZWF0dXJlU2NoZW1hJiBob3ZlcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaW52
ZXJ0ZWRDb2xvcnMoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIG1vbm9jaHJvbWUoKTsKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwb2lu
dGVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVmZXJzQ29udHJhc3QoKTsKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIHByZWZlcnNEYXJrSW50ZXJmYWNlKCk7Citjb25zdCBGZWF0dXJlU2NoZW1h
JiBwcmVmZXJzUmVkdWNlZE1vdGlvbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgcmVzb2x1dGlv
bigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgc2NhbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYg
dHJhbnNmb3JtMmQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHRyYW5zZm9ybTNkKCk7Citjb25z
dCBGZWF0dXJlU2NoZW1hJiB0cmFuc2l0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB2aWRl
b1BsYXlhYmxlSW5saW5lKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpOworI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRpc3BsYXlN
b2RlKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2NvbnN0IEZlYXR1cmVT
Y2hlbWEmIHByZWZlcnNDb2xvclNjaGVtZSgpOworI2VuZGlmCisKK1ZlY3Rvcjxjb25zdCBGZWF0
dXJlU2NoZW1hKj4gYWxsU2NoZW1hcygpOworCit9OworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAppbmRleCBjYmYxYjZiYTgwOWYuLjBiODQ0
YmU5MDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVyeVNlcmlhbGl6
YXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIE1RIHsKQEAgLTM5LDExICs0MCw3IEBAIE1lZGlhUXVlcnlQYXJz
ZXI6Ok1lZGlhUXVlcnlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIAog
VmVjdG9yPGNvbnN0IEZlYXR1cmVTY2hlbWEqPiBNZWRpYVF1ZXJ5UGFyc2VyOjpmZWF0dXJlU2No
ZW1hcygpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2No
ZW1hPiB3aWR0aFNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAid2lkdGgiX3MsIEZlYXR1cmVTY2hl
bWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6TGVuZ3RoIH0sIHsg
fSB9IH07Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1h
PiBoZWlnaHRTY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImhlaWdodCJfcywgRmVhdHVyZVNjaGVt
YTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9
IH0gfTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+
IG9yaWVudGF0aW9uU2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJvcmllbnRhdGlvbiJfcywgRmVh
dHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUsIHsgfSwgeyBDU1NWYWx1ZVBvcnRyYWl0LCBDU1NW
YWx1ZUxhbmRzY2FwZSB9IH0gfTsKLQotICAgIHJldHVybiB7ICZ3aWR0aFNjaGVtYS5nZXQoKSwg
JmhlaWdodFNjaGVtYS5nZXQoKSwgJm9yaWVudGF0aW9uU2NoZW1hLmdldCgpIH07CisgICAgcmV0
dXJuIEZlYXR1cmVzOjphbGxTY2hlbWFzKCk7CiB9CiAKIE1lZGlhUXVlcnlMaXN0IE1lZGlhUXVl
cnlQYXJzZXI6OmNvbnN1bWVNZWRpYVF1ZXJ5TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMDI5NGJlMWNkNWNj
Li5iNGYxNDFmMzBiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC0zNjEsNiArMzYxLDcgQEAgcHVibGljOgogICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Q
b2xpY3kgbW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeTsgfQogICAgIHZvaWQgc2V0TW9kYWxDb250
YWluZXJPYnNlcnZhdGlvblBvbGljeShNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5IHBv
bGljeSkgeyBtX21vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3kgPSBwb2xpY3k7IH0KIAor
ICAgIC8vIEZYSU1FOiBXaHkgaXMgdGhpcyBpbiBhIExvYWRlcj8KICAgICBXRUJDT1JFX0VYUE9S
VCBDb2xvclNjaGVtZVByZWZlcmVuY2UgY29sb3JTY2hlbWVQcmVmZXJlbmNlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRDb2xvclNjaGVtZVByZWZlcmVuY2UoQ29sb3JTY2hlbWVQcmVmZXJlbmNlIHBy
ZWZlcmVuY2UpIHsgbV9jb2xvclNjaGVtZVByZWZlcmVuY2UgPSBwcmVmZXJlbmNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRl
eCBjMGQ0YWVkZjZmMGYuLjZmMDY5YTFiMjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNzIsMTEgKzcyLDEyIEBAIGF1dG8g
Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dEZvclF1ZXJ5
KGNvbnN0IENROjpDb250YWluCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWNvbnRh
aW5lci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNv
bnRleHQgeyB9OworICAgICAgICByZXR1cm4gTVE6OkZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCB7
IG1fZWxlbWVudC0+ZG9jdW1lbnQoKSB9OwogCiAgICAgYXV0byYgcmVuZGVyZXIgPSAqY29udGFp
bmVyLT5yZW5kZXJlcigpOwogCiAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHQgeworICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCksCiAgICAgICAgIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEgeyByZW5kZXJlci5zdHlsZSgpLCBtX2VsZW1lbnQtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsICZyZW5kZXJlci52aWV3
KCkgfSwKICAgICAgICAgJnJlbmRlcmVyCiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463252</attachid>
            <date>2022-10-26 07:48:37 -0700</date>
            <delta_ts>2022-10-26 10:03:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247061-20221026174836.patch</filename>
            <type>text/plain</type>
            <size>49509</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAxZDU5MDU2YjM3YTg3NGIyZjRhZmIzM2ExMGEwN2ZiNGIyODlmNTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI2IE9jdCAyMDIyIDE1OjQ2OjQ1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
QWRkIEZlYXR1cmVTY2hlbWFzIGZvciBtb3N0IG1lZGlhIHF1ZXJ5IGZlYXR1cmVzCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MDYxIDxyZGFyOi8vcHJvYmxlbS8x
MDE1ODYyODU+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFkZCBzY2hlbWFzIHdpdGgg
ZXZhbHVhdGlvbiBmdW5jdGlvbnMgZm9yIG1vc3QgbWVkaWEgcXVlcnkgZmVhdHVyZXMgKGV2ZXJ5
dGhpbmcgZXhjZXB0IHRoZSByZXNvbHV0aW9uIHF1ZXJpZXMpLgpFdmFsdWF0aW9uIGZ1bmN0aW9u
cyBhcmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nIG9uZXMgaW4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAuCgpUaGVzZSBhcmUgbm90IHVzZWQgeWV0LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3Bw
OgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpTaXplRmVhdHVyZVNjaGVtYTo6U2l6ZUZlYXR1cmVT
Y2hlbWEpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpvcmllbnRhdGlvbik6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
OmV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2Vy
Q29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVCb29sZWFuRmVhdHVyZSk6CihXZWJD
b3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2VyRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVO
dW1iZXJGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZUlkZW50aWZpZXJGZWF0dXJlKToK
KFdlYkNvcmU6Ok1ROjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6
Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OnZhbGlkYXRlRmVhdHVyZUFnYWluc3RT
Y2hlbWEpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVz
Lmg6CihXZWJDb3JlOjpNUTo6RmVhdHVyZVNjaGVtYTo6RmVhdHVyZVNjaGVtYSk6CiogU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgooV2ViQ29yZTo6TVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6Ok1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHA6IEFkZGVkLgooV2ViQ29yZTo6TVE6
OkZlYXR1cmVzOjpCb29sZWFuU2NoZW1hOjpCb29sZWFuU2NoZW1hKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6Qm9vbGVhblNjaGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVh
dHVyZXM6OkludGVnZXJTY2hlbWE6OkludGVnZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjpJbnRlZ2VyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJl
czo6TGVuZ3RoU2NoZW1hOjpMZW5ndGhTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpM
ZW5ndGhTY2hlbWE6OnZhbHVlRnVuY3Rpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRp
b1NjaGVtYTo6UmF0aW9TY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1NjaGVt
YTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OklkZW50aWZpZXJTY2hl
bWE6OklkZW50aWZpZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpJZGVudGlmaWVy
U2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW5pbWF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW55SG92ZXIpOgooV2ViQ29yZTo6TVE6OkZlYXR1
cmVzOjphbnlQb2ludGVyKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YXNwZWN0UmF0aW8pOgoo
V2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmNv
bG9yR2FtdXQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvckluZGV4KToKKFdlYkNvcmU6
Ok1ROjpGZWF0dXJlczo6ZGV2aWNlQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjpkZXZpY2VIZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkZXZpY2VXaWR0aCk6CihX
ZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmR5bmFtaWNSYW5nZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OmZvcmNlZENvbG9ycyk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmdyaWQpOgooV2ViQ29y
ZTo6TVE6OkZlYXR1cmVzOjpoZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpob3Zlcik6
CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmludmVydGVkQ29sb3JzKToKKFdlYkNvcmU6Ok1ROjpG
ZWF0dXJlczo6bW9ub2Nocm9tZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6Om9yaWVudGF0aW9u
KToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cG9pbnRlcik6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OnByZWZlcnNDb250cmFzdCk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnByZWZlcnNEYXJr
SW50ZXJmYWNlKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24p
OgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpzY2FuKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6
dHJhbnNmb3JtMmQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp0cmFuc2Zvcm0zZCk6CihXZWJD
b3JlOjpNUTo6RmVhdHVyZXM6OnRyYW5zaXRpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp2
aWRlb1BsYXlhYmxlSW5saW5lKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6d2lkdGgpOgooV2Vi
Q29yZTo6TVE6OkZlYXR1cmVzOjpkaXNwbGF5TW9kZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OnByZWZlcnNDb2xvclNjaGVtZSk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6Ciog
U291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29y
ZTo6U3R5bGU6OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHRGb3JRdWVyeSBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAg
ICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8ICAgNiArCiAuLi4vY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMu
Y3BwICAgICAgfCAgIDcgKy0KIC4uLi9jc3MvcXVlcnkvQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5o
ICAgICAgICB8ICAgMyArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAgIHwgIDY3ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggICAgfCAgIDUgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3Bw
ICAgICB8ICAgMiArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggICAg
ICAgIHwgICA3ICstCiAuLi4vV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgfCAgMjggKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
ICB8ICAgNSArLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAg
IHwgNjY4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlGZWF0dXJlcy5oIHwgIDc1ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFR
dWVyeVBhcnNlci5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5jcHAgfCAgIDMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCsp
LCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTMyYzExMzExZGY4Li5kMTZmZGUwZjY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04ODcsNiArODg3
LDcgQEAgY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAogY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
U2VyaWFsaXphdGlvbi5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcAogY3NzL3R5cGVkb20vQ29tcHV0ZWRTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCiBj
c3MvdHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJjMTMyYmI4MGY0
Li4yZjk3OTFmNWVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjYsNiArNTUyNiw3IEBACiAJCUU0NTVBNTcxMjhGRDcz
RjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU3MDI4RkQ3M0YzMDBCNkVBNzYgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNDU1QTU4MjI4RkU4RDhEMDBCNkVBNzYgLyog
TWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAqLzsgfTsKIAkJRTQ1
NUE1OTQyOTAyODc4OTAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNTkzMjkwMjg3ODgw
MEI2RUE3NiAvKiBDb250YWluZXJRdWVyeUZlYXR1cmVzLmggKi87IH07CisJCUU0NTVBNUJBMjkw
N0E4OUEwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNUI5MjkwN0E4OTkwMEI2RUE3NiAvKiBN
ZWRpYVF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8q
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERG
QzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcg
LyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsg
fTsKQEAgLTE4MDUzLDYgKzE4MDU0LDggQEAKIAkJRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8q
IE1lZGlhUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDU1QTU5MTI5MDI4Nzc4MDBCNkVB
NzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb250YWluZXJRdWVyeUZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ1NUE1OTMyOTAyODc4ODAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyUXVl
cnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU1QTVCOTI5MDdB
ODk5MDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDU1QTVCQjI5MDdBOEEzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1NzUsNiArMzI1NzgsOCBAQAogCQkJ
CUU0NTVBNTgxMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5LmggKi8sCiAJCQkJRTQ1NUE1
NkYyOEZENzNFQjAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAogCQkJCUU0
NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJCQkJ
RTQ1NUE1QkIyOTA3QThBMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5jcHAgKi8sCisJ
CQkJRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oICovLAog
CQkJCUU0NEY0MjJGMjhGNkE2NTIwMDBGODdCQyAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywK
IAkJCQlFNDRGNDIyRDI4RjZBNjQ4MDAwRjg3QkMgLyogTWVkaWFRdWVyeVBhcnNlci5oICovLAog
CQkJKTsKQEAgLTM3NDcwLDYgKzM3NDc1LDcgQEAKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3
ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1NUE1
NzEyOEZENzNGMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlhUXVl
cnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJD
IC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdBRDdE
MDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNB
QTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1
cmVzLmNwcAppbmRleCAxNDVkMDhmMzQwM2UuLjQ4MGU4NTYwYjQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5
RmVhdHVyZXMuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAg
LTMzLDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmU6OkNROjpGZWF0dXJlcyB7CiB1c2luZyBu
YW1lc3BhY2UgTVE7CiAKIHN0cnVjdCBTaXplRmVhdHVyZVNjaGVtYSA6IHB1YmxpYyBGZWF0dXJl
U2NoZW1hIHsKLSAgICBTaXplRmVhdHVyZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBU
eXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1
ZUlEPiB2YWx1ZUlkZW50aWZpZXJzID0geyB9KQotICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgdHlwZSwgdmFsdWVUeXBlcywgdmFsdWVJZGVudGlmaWVycykKKyAgICBTaXplRmVhdHVyZVNj
aGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5
cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMgPSB7
IH0pCisgICAgICAgIDogRmVhdHVyZVNjaGVtYShuYW1lLCB0eXBlLCB2YWx1ZVR5cGVzLCBXVEZN
b3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogCiAgICAgRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRp
b25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQpAQCAtMTY3LDcgKzE2OCw3IEBAIGNv
bnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKICAgICAgICAgRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0IG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHJlbmRlcmVyLmNvbnRl
bnRIZWlnaHQoKSA+PSByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKLSAgICAgICAgICAgIHJldHVy
biBldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShmZWF0dXJlLCBpc1BvcnRyYWl0ID8gQ1NTVmFsdWVQ
b3J0cmFpdCA6IENTU1ZhbHVlTGFuZHNjYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBldmFsdWF0
ZUlkZW50aWZpZXJGZWF0dXJlKGZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0
IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKaW5kZXggNDk3OThk
YjZlZDMxLi5iMmZlOGU2MTQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaApAQCAtMjQsOCArMjQsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZTo6Q1EgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZDY1ZjgxZmU2MjAuLmYy
M2QxZGY1MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2Vu
ZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC04Myw2ICs4MywzMiBAQCBzdGF0aWMgRXZh
bHVhdGlvblJlc3VsdCBldmFsdWF0ZUxlbmd0aENvbXBhcmlzb24oTGF5b3V0VW5pdCBzaXplLCBj
b25zdCBzdGQ6Om9wdAogICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21w
YXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKIH07CiAKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0
IGV2YWx1YXRlTnVtYmVyQ29tcGFyaXNvbihkb3VibGUgbnVtYmVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPENvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpCit7CisgICAgaWYgKCFjb21w
YXJpc29uKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKworICAgIGF1
dG8gZXhwcmVzc2lvbk51bWJlciA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
Y29tcGFyaXNvbi0+dmFsdWUuZ2V0KCkpLT5kb3VibGVWYWx1ZSgpOworCisgICAgYXV0byBsZWZ0
ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gZXhwcmVzc2lvbk51bWJlciA6IG51bWJlcjsKKyAgICBh
dXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gbnVtYmVyIDogZXhwcmVzc2lvbk51bWJl
cjsKKworICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5v
cCwgbGVmdCwgcmlnaHQpKTsKK307CisKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
SW50ZWdlckNvbXBhcmlzb24oaW50IG51bWJlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb21wYXJp
c29uPiYgY29tcGFyaXNvbiwgU2lkZSBzaWRlKQoreworICAgIGlmICghY29tcGFyaXNvbikKKyAg
ICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAgICBhdXRvIGV4cHJlc3Np
b25OdW1iZXIgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlzb24t
PnZhbHVlLmdldCgpKS0+aW50VmFsdWUoKTsKKworICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lk
ZTo6TGVmdCA/IGV4cHJlc3Npb25OdW1iZXIgOiBudW1iZXI7CisgICAgYXV0byByaWdodCA9IHNp
ZGUgPT0gU2lkZTo6TGVmdCA/IG51bWJlciA6IGV4cHJlc3Npb25OdW1iZXI7CisKKyAgICByZXR1
cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0
KSk7Cit9OworCiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21w
YXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKQEAgLTEzMSwxOCArMTU3LDQ5IEBA
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgZG91YmxlIHJhdGlvKQogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmlnaHRSZXN1bHQ7
CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgQ1NTVmFsdWVJRCBleHBlY3RlZFZhbHVlKQorRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZUJvb2xlYW5GZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGJvb2wgY3Vy
cmVudFZhbHVlKQogewogICAgIGlmICghZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAg
IHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KGN1cnJlbnRWYWx1ZSk7CiAKLSAgICBhdXRvJiBjb21wYXJpc29uID0gKmZl
YXR1cmUucmlnaHRDb21wYXJpc29uOworICAgIGF1dG8mIHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCpmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbi0+dmFsdWUpOworICAgIGF1dG8g
ZXhwZWN0ZWRWYWx1ZSA9IHZhbHVlLmludFZhbHVlKCk7CiAKLSAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPihjb21wYXJpc29uLnZhbHVlKSB8fCBjb21wYXJpc29uLm9wICE9IENvbXBhcmlz
b25PcGVyYXRvcjo6RXF1YWwpCisgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgZXhwZWN0ZWRWYWx1
ZSAhPSAxKQogICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAorICAg
IHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoZXhwZWN0ZWRWYWx1ZSA9PSBjdXJyZW50VmFsdWUp
OworfQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVh
dHVyZSYgZmVhdHVyZSwgaW50IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICBpZiAoIWZlYXR1cmUubGVm
dENvbXBhcmlzb24gJiYgIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQorICAgICAgICByZXR1cm4g
dG9FdmFsdWF0aW9uUmVzdWx0KCEhY3VycmVudFZhbHVlKTsKKworICAgIGF1dG8gbGVmdFJlc3Vs
dCA9IGV2YWx1YXRlSW50ZWdlckNvbXBhcmlzb24oY3VycmVudFZhbHVlLCBmZWF0dXJlLmxlZnRD
b21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKKyAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVhdGVJ
bnRlZ2VyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBT
aWRlOjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQor
CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiBm
ZWF0dXJlLCBkb3VibGUgY3VycmVudFZhbHVlKQoreworICAgIGlmICghZmVhdHVyZS5sZWZ0Q29t
cGFyaXNvbiAmJiAhZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCisgICAgICAgIHJldHVybiB0b0V2
YWx1YXRpb25SZXN1bHQoISFjdXJyZW50VmFsdWUpOworCisgICAgYXV0byBsZWZ0UmVzdWx0ID0g
ZXZhbHVhdGVOdW1iZXJDb21wYXJpc29uKGN1cnJlbnRWYWx1ZSwgZmVhdHVyZS5sZWZ0Q29tcGFy
aXNvbiwgU2lkZTo6TGVmdCk7CisgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1YXRlTnVtYmVy
Q29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpS
aWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlSWRlbnRpZmllckZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgQ1NTVmFsdWVJRCBjdXJyZW50VmFsdWUpCit7CisgICAgaWYgKCFmZWF0dXJlLnJpZ2h0
Q29tcGFyaXNvbikKKyAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjdXJyZW50VmFs
dWUgIT0gQ1NTVmFsdWVOb25lICYmIGN1cnJlbnRWYWx1ZSAhPSBDU1NWYWx1ZU5vUHJlZmVyZW5j
ZSk7CisKICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZmVh
dHVyZS5yaWdodENvbXBhcmlzb24tPnZhbHVlKTsKLSAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVz
dWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBjdXJyZW50VmFsdWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFs
dWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1
YXRvci5oCmluZGV4IDZmYTA4NWY3YzE3ZC4uMDU2ZWViYjhkODljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAt
MzcsNyArMzcsMTAgQEAgbmFtZXNwYWNlIE1RIHsKIAogRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0
ZUxlbmd0aEZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIExheW91dFVuaXQsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmKTsKIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1
cmUoY29uc3QgRmVhdHVyZSYsIGRvdWJsZSk7Ci1FdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRGlz
Y3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKTsKK0V2YWx1YXRpb25SZXN1
bHQgZXZhbHVhdGVCb29sZWFuRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgYm9vbCk7CitFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGludCk7CitF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91
YmxlKTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVJZGVudGlmaWVyRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgQ1NTVmFsdWVJRCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZhbHVh
dG9yPgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggMTM0
ZGRjYTJmZmEzLi4wMGY4MThmZGQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIGJv
b2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0U2No
ZW1hKEZlYXR1cmUmIGZlYXR1cmUsCiAKICAgICBhdXRvIGlzVmFsaWQgPSBbJl0gewogICAgICAg
ICBpZiAoc2NoZW1hLnR5cGUgPT0gRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUpIHsKLSAg
ICAgICAgICAgIGlmIChmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmIGZlYXR1cmUubGVmdENvbXBh
cmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgICAgICAgICBpZiAo
ZmVhdHVyZS5zeW50YXggPT0gU3ludGF4OjpSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5yaWdodENvbXBhcmlzb24gJiYgZmVhdHVy
ZS5yaWdodENvbXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKaW5kZXggYTNiZTMwZjg2MDdjLi41MWYwYzhhYzhk
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
VHlwZXMuaApAQCAtNzIsNyArNzIsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uIHsKIGVudW0gY2xhc3Mg
RXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCiBz
dHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhIGNvbnZlcnNpb25EYXRhOworICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKKyAg
ICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgfTsKICAgICBjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTk1LDExICs5
NiwxMSBAQCBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CiAKICAgICB2aXJ0dWFsIEV2YWx1YXRpb25S
ZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247IH0KIAotICAg
IEZlYXR1cmVTY2hlbWEoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBPcHRpb25T
ZXQ8VmFsdWVUeXBlPiB2YWx1ZVR5cGVzLCBWZWN0b3I8Q1NTVmFsdWVJRD4gdmFsdWVJZGVudGlm
aWVycykKKyAgICBGZWF0dXJlU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFR5cGUgdHlw
ZSwgT3B0aW9uU2V0PFZhbHVlVHlwZT4gdmFsdWVUeXBlcywgVmVjdG9yPENTU1ZhbHVlSUQ+JiYg
dmFsdWVJZGVudGlmaWVycyA9IHsgfSkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwg
dHlwZSh0eXBlKQogICAgICAgICAsIHZhbHVlVHlwZXModmFsdWVUeXBlcykKLSAgICAgICAgLCB2
YWx1ZUlkZW50aWZpZXJzKHZhbHVlSWRlbnRpZmllcnMpCisgICAgICAgICwgdmFsdWVJZGVudGlm
aWVycyhXVEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogICAgIHZpcnR1YWwgfkZl
YXR1cmVTY2hlbWEoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGI1NjNiYjI4ZWE5Mi4uY2M0NzNlNWI2
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0eWxl
Rm9udFNpemVGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1R
IHsKQEAgLTM2LDcgKzM3LDggQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6
Ok1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQog
ICAgIDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVk
aWFUeXBlKQotICAgICwgbV9ldmFsdWF0aW9uQ29udGV4dCh7IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEgeyAqcm9vdEVsZW1lbnRTdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgZG9jdW1lbnQucmVu
ZGVyVmlldygpIH0sIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9KQorICAgICwgbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZShyb290RWxlbWVudFN0eWxlKQogewog
fQogCkBAIC02NywxNyArNjksMjcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0
ZShjb25zdCBNZWRpYVF1ZXJ5JiBxdWVyeSkgY29uc3QKICAgICBhdXRvIGNvbmRpdGlvbk1hdGNo
ZXMgPSBbJl0gewogICAgICAgICBpZiAoIXF1ZXJ5LmNvbmRpdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKCpxdWVyeS5jb25k
aXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisK
KyAgICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAoIW1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0
eWxlLmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNp
emVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgbV9kb2N1bWVudCk7CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOworICAgICAgICBkZWZhdWx0U3R5bGUuc2V0
Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CisgICAgICAgIGRlZmF1
bHRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgpOworCisgICAgICAgIEZlYXR1cmVFdmFsdWF0
aW9uQ29udGV4dCBjb250ZXh0IHsgbV9kb2N1bWVudCwgeyAqbV9yb290RWxlbWVudFN0eWxlLCAm
ZGVmYXVsdFN0eWxlLCBudWxscHRyLCBtX2RvY3VtZW50LnJlbmRlclZpZXcoKSB9LCBudWxscHRy
IH07CisgICAgICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbigqcXVlcnkuY29uZGl0aW9uLCBj
b250ZXh0KSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogICAgIH0oKTsKIAogICAgIHJldHVy
biBjb25kaXRpb25NYXRjaGVzICE9IGlzTmVnYXRlZDsKIH0KIAotRXZhbHVhdGlvblJlc3VsdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGNvbnN0
IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd247Ci19Ci0KLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzJiMmYwMWNmYTg2Li4wZDFjYjM4ODgz
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3Iu
aApAQCAtNDAsMTEgKzQwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5
JikgY29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7Ci0KIHByaXZh
dGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJl
RXZhbHVhdGlvbkNvbnRleHQgbV9ldmFsdWF0aW9uQ29udGV4dDsKKyAgICBjb25zdCBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1
cmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhNGVlNDM4
M2VmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1
ZXJ5RmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVy
ZXMuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlF1aXJr
cy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJUaGVtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZTo6TVE6OkZlYXR1cmVzIHsKKworc3RydWN0IEJvb2xlYW5TY2hlbWEg
OiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVGdW5jdGlvbiA9IEZ1bmN0
aW9uPGJvb2woY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgQm9vbGVh
blNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5j
dGlvbikKKyAgICAgICAgOiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6
OkRpc2NyZXRlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAg
ICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAg
IEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3Qg
RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGV2YWx1YXRlQm9vbGVhbkZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5j
dGlvbihjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFs
dWVGdW5jdGlvbjsKK307CisKK3N0cnVjdCBJbnRlZ2VyU2NoZW1hIDogcHVibGljIEZlYXR1cmVT
Y2hlbWEgeworICAgIHVzaW5nIFZhbHVlRnVuY3Rpb24gPSBGdW5jdGlvbjxpbnQoY29uc3QgRmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgSW50ZWdlclNjaGVtYShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlvbikKKyAgICAgICAgOiBG
ZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVT
Y2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RG
TW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZh
bHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250
ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1
YXRlSW50ZWdlckZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisKK3N0
cnVjdCBMZW5ndGhTY2hlbWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFs
dWVGdW5jdGlvbiA9IEZ1bmN0aW9uPExheW91dFVuaXQoY29uc3QgRmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0Jik+OworCisgICAgTGVuZ3RoU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpMZW5ndGggfSkKKyAgICAgICAgLCB2YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlv
bikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1
cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUo
ZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307
CisKK3N0cnVjdCBSYXRpb1NjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2lu
ZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248ZG91YmxlKGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9u
Q29udGV4dCYpPjsKKworICAgIFJhdGlvU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZh
bHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFt
ZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpSYXRpbyB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9u
KSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlUmF0aW9GZWF0dXJlKGZl
YXR1cmUsIHZhbHVlRnVuY3Rpb24oY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBW
YWx1ZUZ1bmN0aW9uIHZhbHVlRnVuY3Rpb247Cit9OworCit1c2luZyBNYXRjaGluZ0lkZW50aWZp
ZXJzID0gVmVjdG9yPENTU1ZhbHVlSUQsIDE+OworCitzdHJ1Y3QgSWRlbnRpZmllclNjaGVtYSA6
IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rp
b248TWF0Y2hpbmdJZGVudGlmaWVycyhjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQmKT47
CisKKyAgICBJZGVudGlmaWVyU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxD
U1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMsIFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0
aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6
RGlzY3JldGUsIHsgfSwgV1RGTW92ZSh2YWx1ZUlkZW50aWZpZXJzKSkKKyAgICAgICAgLCB2YWx1
ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVF
dmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGF1dG8gdmFsdWVJRHMgPSB2YWx1ZUZ1bmN0aW9uKGNvbnRleHQpOworICAgICAgICBmb3IgKGF1
dG8gdmFsdWVJRCA6IHZhbHVlSURzKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWVJZGVudGlm
aWVycy5jb250YWlucyh2YWx1ZUlEKSk7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVJZGVudGlm
aWVyRmVhdHVyZShmZWF0dXJlLCB2YWx1ZUlEKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgVmFsdWVGdW5jdGlvbiB2YWx1ZUZ1bmN0aW9uOworfTsKKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgYW5pbWF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LWFuaW1hdGlvbiJf
cywKKyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJldHVy
biBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCkKK3sKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7
CisgICAgICAgICJhbnktaG92ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVIb3ZlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAgICAg
ICAgICBib29sIGlzU3VwcG9ydGVkID0gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5o
b3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaXNTdXBwb3J0ZWQgPyBDU1NWYWx1ZUhvdmVy
IDogQ1NTVmFsdWVOb25lIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueVBvaW50ZXIoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgImFueS1wb2ludGVyIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1Zh
bHVlRmluZSwgQ1NTVmFsdWVDb2Fyc2UgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byogcGFnZSA9IGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgp
OworICAgICAgICAgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzID0gcGFnZSA/IHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBv
aW50aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CisK
KyAgICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CisgICAgICAgICAg
ICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzOjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVG
aW5lKTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmll
cnMuYXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlTm9u
ZSk7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKworICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgYXNwZWN0UmF0
aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8UmF0aW9TY2hlbWE+
IHNjaGVtYSB7CisgICAgICAgICJhc3BlY3QtcmF0aW8iX3MsCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqY29udGV4dC5kb2N1bWVudC52aWV3
KCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2aWV3LmxheW91dFdp
ZHRoKCkpIC8gdmlldy5sYXlvdXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0
dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKQoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsKKyAg
ICAgICAgImNvbG9yIl9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAg
ICByZXR1cm4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgp
LT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2No
ZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckdhbXV0KCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7Cisg
ICAgICAgICJjb2xvci1nYW11dCJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVTUkdCLCBD
U1NWYWx1ZVAzLCBDU1NWYWx1ZVJlYzIwMjAgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0
ZWN0aW5nIGRpc3BsYXlzIHRoYXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KKyAgICAgICAgICAgIE1h
dGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnMgeyBDU1NWYWx1ZVNSR0IgfTsKKyAgICAgICAg
ICAgIGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoZnJhbWUubWFpbkZyYW1lKCkudmll
dygpKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVQMyk7Cisg
ICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKyAgICB9OworICAgIHJl
dHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1h
IHsKKyAgICAgICAgImNvbG9yLWluZGV4Il9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4g
MDsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVt
YSYgZGV2aWNlQXNwZWN0UmF0aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8UmF0aW9TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJkZXZpY2UtYXNwZWN0LXJhdGlv
Il9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIHNjcmVl
blNpemUgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUo
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHNjcmVlblNpemUud2lk
dGgoKSkgLyBzY3JlZW5TaXplLmhlaWdodCgpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VIZWlnaHQoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1hPiBzY2hlbWEg
eworICAgICAgICAiZGV2aWNlLWhlaWdodCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS5oZWlnaHQoKSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VQ
aXhlbFJhdGlvKCk7CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2NoZW1hIHsK
KyAgICAgICAgImRldmljZS13aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCkt
Pm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS53aWR0aCgpIH07CisgICAgICAgIH0KKyAgICB9Owor
ICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGR5bmFtaWNSYW5n
ZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2No
ZW1hPiBzY2hlbWEgeworICAgICAgICAiZHluYW1pYy1yYW5nZSJfcywKKyAgICAgICAgVmVjdG9y
IHsgQ1NTVmFsdWVTdGFuZGFyZCwgQ1NTVmFsdWVIaWdoIH0sCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1l
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmhkck1lZGlhQ2FwYWJp
bGl0aWVzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1p
Y1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShmcmFt
ZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBN
YXRjaGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzIHsgQ1NTVmFsdWVTdGFuZGFyZCB9OworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVIaWdoKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVu
dGlmaWVyczsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZm9yY2VkQ29sb3JzKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJmb3Jj
ZWQtY29sb3JzIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWN0
aXZlIH0sCisgICAgICAgIFtdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJ
ZGVudGlmaWVycyB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1
cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBncmlkKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAg
ICAgICJncmlkIl9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB9
OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhlaWdodCgp
Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJoZWlnaHQiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LnZpZXcoKS0+bGF5b3V0SGVpZ2h0
KCk7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIGhvdmVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJob3ZlciJfcywKKyAgICAg
ICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUhvdmVyIH0sCisgICAgICAgIFtdKGF1
dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50
LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSAgcGFnZSAm
JiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5n
RGV2aWNlKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlzU3Vw
cG9ydGVkID8gQ1NTVmFsdWVIb3ZlciA6IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAg
fTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBpbnZlcnRl
ZENvbG9ycygpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlm
aWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiaW52ZXJ0ZWQtY29sb3JzIl9zLAorICAgICAg
ICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW52ZXJ0ZWQgfSwKKyAgICAgICAgW10o
YXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc0ludmVydGVkID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0
ZWRBY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSgp
ID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzKCk7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lk
ZW50aWZpZXJzIHsgaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUg
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgbW9ub2Nocm9tZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxJbnRlZ2VyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAibW9ub2Nocm9tZSJfcywK
KyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc01vbm9jaHJv
bWUgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1l
bnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRE
aXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkRGlzcGxheUlzTW9ub2Nocm9tZUFj
Y2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNj
cmVlbklzTW9ub2Nocm9tZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICByZXR1cm4gaXNNb25vY2hyb21lID8gc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpIDog
MDsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVh
dHVyZVNjaGVtYSYgb3JpZW50YXRpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIm9yaWVudGF0aW9u
Il9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZUxhbmRzY2FwZSwgQ1NTVmFsdWVQb3J0cmFp
dCB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiB2aWV3
ID0gKmNvbnRleHQuZG9jdW1lbnQudmlldygpOworICAgICAgICAgICAgLy8gU3F1YXJlIHZpZXdw
b3J0IGlzIHBvcnRyYWl0LgorICAgICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gdmlldy5sYXlv
dXRIZWlnaHQoKSA+PSB2aWV3LmxheW91dFdpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0
Y2hpbmdJZGVudGlmaWVycyB7IGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0IDogQ1NTVmFs
dWVMYW5kc2NhcGUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30K
KworY29uc3QgRmVhdHVyZVNjaGVtYSYgcG9pbnRlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicG9p
bnRlciJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUZpbmUsIENT
U1ZhbHVlQ29hcnNlIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAg
IGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAg
ICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljcyA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6
IE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPigpOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQuZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkUHJldmVudFBvaW50ZXJNZWRpYVF1ZXJ5RnJv
bUV2YWx1YXRpbmdUb0NvYXJzZSgpKQorICAgICAgICAgICAgICAgICAgICBwb2ludGVyQ2hhcmFj
dGVyaXN0aWNzID0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKKyAgICAgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICAgICAgTWF0Y2hpbmdJZGVudGlmaWVycyBpZGVudGlmaWVyczsKKyAg
ICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M6OkZpbmUpKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChD
U1NWYWx1ZUZpbmUpOworICAgICAgICAgICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuY29u
dGFpbnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSkKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVDb2Fyc2UpOworICAgICAgICAgICAgaWYgKGlkZW50
aWZpZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NT
VmFsdWVOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICAgICAgfQor
CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBw
cmVmZXJzQ29udHJhc3QoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJhc3QiX3Ms
CisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZU1vcmUsIENT
U1ZhbHVlTGVzcyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBi
b29sIHVzZXJQcmVmZXJzQ29udHJhc3QgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZy
YW1lID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc0NvbnRyYXN0QWNjZXNzaWJpbGl0eVZhbHVl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6
U3lzdGVtOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVyc0NvbnRy
YXN0KCk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHVz
ZXJQcmVmZXJzQ29udHJhc3QgPyBDU1NWYWx1ZU1vcmUgOiBDU1NWYWx1ZU5vUHJlZmVyZW5jZSB9
OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0
dXJlU2NoZW1hJiBwcmVmZXJzRGFya0ludGVyZmFjZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicHJl
ZmVycy1kYXJrLWludGVyZmFjZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb1ByZWZl
cmVuY2UsIENTU1ZhbHVlUHJlZmVycyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAg
ICAgICAgICBib29sIHByZWZlcnNEYXJrSW50ZXJmYWNlID0gZnJhbWUucGFnZSgpLT51c2VTeXN0
ZW1BcHBlYXJhbmNlKCkgJiYgZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpOworCisg
ICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHByZWZlcnNEYXJrSW50ZXJm
YWNlID8gQ1NTVmFsdWVQcmVmZXJzIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UgfTsKKyAgICAgICAg
fQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYg
cHJlZmVyc1JlZHVjZWRNb3Rpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJh
c3QiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZVJl
ZHVjZSB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBib29sIHVz
ZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IFsmXSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJh
bWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAgICAgICAgICAgICAgIHN3aXRjaCAo
ZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlW
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
Ok9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBj
YXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWU6OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbigpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRp
ZmllcnMgeyB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1ZVJlZHVjZSA6IENTU1Zh
bHVlTm9QcmVmZXJlbmNlIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7
Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHJlc29sdXRpb24oKTsKKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgc2NhbigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJ
ZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAic2NhbiJfcywKKyAgICAgICAgVmVj
dG9yIHsgQ1NTVmFsdWVJbnRlcmxhY2UsIENTU1ZhbHVlUHJvZ3Jlc3NpdmUgfSwKKyAgICAgICAg
W10oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgQ1NT
VmFsdWVQcm9ncmVzc2l2ZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1h
OworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB0cmFuc2Zvcm0yZCgpCit7CisgICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAg
ICAiLXdlYmtpdC10cmFuc2Zvcm0tMmQiX3MsCisgICAgICAgIFtdKGF1dG8mKSB7IHJldHVybiB0
cnVlOyB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2No
ZW1hJiB0cmFuc2Zvcm0zZCgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2Zvcm0tMmQi
X3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyNpZiBFTkFCTEUoM0RfVFJBTlNGT1JN
UykKKyAgICAgICAgICAgIGF1dG8qIHZpZXcgPSBjb250ZXh0LmRvY3VtZW50LnJlbmRlclZpZXco
KTsKKyAgICAgICAgICAgIHJldHVybiB2aWV3ICYmIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5SZW5k
ZXIzRFRyYW5zZm9ybXMoKTsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07
CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNpdGlv
bigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1h
PiBzY2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2l0aW9uIl9zLAorICAgICAgICBbXShh
dXRvJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKwor
Y29uc3QgRmVhdHVyZVNjaGVtYSYgdmlkZW9QbGF5YWJsZUlubGluZSgpCit7CisgICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAg
ICAiLXdlYmtpdC12aWRlby1wbGF5YWJsZS1pbmxpbmUiX3MsCisgICAgICAgIFtdKGF1dG8mIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnNl
dHRpbmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygpOworICAgICAgICB9CisgICAgfTsK
KyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNjaGVt
YSB7CisgICAgICAgICJ3aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuZG9jdW1lbnQudmlldygpLT5sYXlvdXRXaWR0aCgpOwor
ICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgZGlzcGxheU1vZGUoKQor
eworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4g
c2NoZW1hIHsKKyAgICAgICAgImRpc3BsYXktbW9kZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NT
VmFsdWVGdWxsc2NyZWVuLCBDU1NWYWx1ZVN0YW5kYWxvbmUsIENTU1ZhbHVlTWluaW1hbFVpLCBD
U1NWYWx1ZUJyb3dzZXIgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAg
ICAgYm9vbCBpZGVudGlmaWVyID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9
ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5pZmVz
dCA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpIDog
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgICAgIGlmICghbWFuaWZlc3QpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUJyb3dzZXI7CisKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1hbmlmZXN0LT5kaXNwbGF5KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bk1hbmlmZXN0OjpEaXNwbGF5OjpGdWxsc2NyZWVuOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTVmFsdWVGdWxsc2NyZWVuOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25N
YW5pZmVzdDo6RGlzcGxheTo6U3RhbmRhbG9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlU3RhbmRhbG9uZTsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkRpc3BsYXk6Ok1pbmltYWxVSToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlTWluaW1hbFVpOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVz
dDo6RGlzcGxheTo6QnJvd3NlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
QnJvd3NlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAg
ICAgIHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaWRlbnRpZmllciB9OworICAgICAgICB9
CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHByZWZlcnNDb2xvclNjaGVtZSgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBz
Y2hlbWEgeworICAgICAgICAicHJlZmVycy1jb2xvci1zY2hlbWUiX3MsCisgICAgICAgIFZlY3Rv
ciB7IENTU1ZhbHVlTGlnaHQsIENTU1ZhbHVlRGFyayB9LAorICAgICAgICBbXShhdXRvJiBjb250
ZXh0KSB7CisgICAgICAgICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gWyZdIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLmRvY3VtZW50KCktPmxvYWRlcigpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gZnJhbWUuZG9jdW1lbnQoKS0+
bG9hZGVyKCktPmNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29sb3JTY2hlbWVQcmVmZXJlbmNlICE9IENvbG9yU2NoZW1lUHJlZmVyZW5jZTo6Tm9QcmVm
ZXJlbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lUHJlZmVy
ZW5jZSA9PSBDb2xvclNjaGVtZVByZWZlcmVuY2U6OkRhcms7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBhZ2UoKS0+dXNlRGFya0FwcGVhcmFuY2Uo
KTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRp
ZmllcnMgeyB1c2VEYXJrQXBwZWFyYW5jZSA/IENTU1ZhbHVlRGFyayA6IENTU1ZhbHVlTGlnaHQg
fTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKyNlbmRpZgorCitW
ZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IGFsbFNjaGVtYXMoKQoreworICAgIHJldHVybiB7
CisgICAgICAgICZhbmltYXRpb24oKSwKKyAgICAgICAgJmFueUhvdmVyKCksCisgICAgICAgICZh
bnlQb2ludGVyKCksCisgICAgICAgICZhc3BlY3RSYXRpbygpLAorICAgICAgICAmY29sb3IoKSwK
KyAgICAgICAgJmNvbG9yR2FtdXQoKSwKKyAgICAgICAgJmNvbG9ySW5kZXgoKSwKKyAgICAgICAg
JmRldmljZUFzcGVjdFJhdGlvKCksCisgICAgICAgICZkZXZpY2VIZWlnaHQoKSwKKy8vIEZJWE1F
OiAmZGV2aWNlUGl4ZWxSYXRpbygpLAorICAgICAgICAmZGV2aWNlV2lkdGgoKSwKKyAgICAgICAg
JmR5bmFtaWNSYW5nZSgpLAorICAgICAgICAmZm9yY2VkQ29sb3JzKCksCisgICAgICAgICZncmlk
KCksCisgICAgICAgICZoZWlnaHQoKSwKKyAgICAgICAgJmhvdmVyKCksCisgICAgICAgICZpbnZl
cnRlZENvbG9ycygpLAorICAgICAgICAmbW9ub2Nocm9tZSgpLAorICAgICAgICAmb3JpZW50YXRp
b24oKSwKKyAgICAgICAgJnBvaW50ZXIoKSwKKyAgICAgICAgJnByZWZlcnNDb250cmFzdCgpLAor
ICAgICAgICAmcHJlZmVyc0RhcmtJbnRlcmZhY2UoKSwKKyAgICAgICAgJnByZWZlcnNSZWR1Y2Vk
TW90aW9uKCksCisvLyBGSVhNRTogJnJlc29sdXRpb24oKSwKKyAgICAgICAgJnNjYW4oKSwKKyAg
ICAgICAgJnRyYW5zZm9ybTJkKCksCisgICAgICAgICZ0cmFuc2Zvcm0zZCgpLAorICAgICAgICAm
dHJhbnNpdGlvbigpLAorICAgICAgICAmdmlkZW9QbGF5YWJsZUlubGluZSgpLAorICAgICAgICAm
d2lkdGgoKSwKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICZkaXNw
bGF5TW9kZSgpLAorI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgICAgICZw
cmVmZXJzQ29sb3JTY2hlbWUoKSwKKyNlbmRpZgorICAgIH07Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjA0ZWNkZTgzNGU1MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6TVEg
eworCituYW1lc3BhY2UgRmVhdHVyZXMgeworCitjb25zdCBGZWF0dXJlU2NoZW1hJiBhbmltYXRp
b24oKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCk7Citjb25zdCBGZWF0dXJlU2No
ZW1hJiBhbnlQb2ludGVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBhc3BlY3RSYXRpbygpOwor
Y29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9y
R2FtdXQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKTsKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIGRldmljZUFzcGVjdFJhdGlvKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZp
Y2VIZWlnaHQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVBpeGVsUmF0aW8oKTsKK2Nv
bnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBk
eW5hbWljUmFuZ2UoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGZvcmNlZENvbG9ycygpOworY29u
c3QgRmVhdHVyZVNjaGVtYSYgZ3JpZCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaGVpZ2h0KCk7
Citjb25zdCBGZWF0dXJlU2NoZW1hJiBob3ZlcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaW52
ZXJ0ZWRDb2xvcnMoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIG1vbm9jaHJvbWUoKTsKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwb2lu
dGVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVmZXJzQ29udHJhc3QoKTsKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIHByZWZlcnNEYXJrSW50ZXJmYWNlKCk7Citjb25zdCBGZWF0dXJlU2NoZW1h
JiBwcmVmZXJzUmVkdWNlZE1vdGlvbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgcmVzb2x1dGlv
bigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgc2NhbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYg
dHJhbnNmb3JtMmQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHRyYW5zZm9ybTNkKCk7Citjb25z
dCBGZWF0dXJlU2NoZW1hJiB0cmFuc2l0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB2aWRl
b1BsYXlhYmxlSW5saW5lKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpOworI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRpc3BsYXlN
b2RlKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2NvbnN0IEZlYXR1cmVT
Y2hlbWEmIHByZWZlcnNDb2xvclNjaGVtZSgpOworI2VuZGlmCisKK1ZlY3Rvcjxjb25zdCBGZWF0
dXJlU2NoZW1hKj4gYWxsU2NoZW1hcygpOworCit9OworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAppbmRleCBjYmYxYjZiYTgwOWYuLjBiODQ0
YmU5MDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVyeVNlcmlhbGl6
YXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIE1RIHsKQEAgLTM5LDExICs0MCw3IEBAIE1lZGlhUXVlcnlQYXJz
ZXI6Ok1lZGlhUXVlcnlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIAog
VmVjdG9yPGNvbnN0IEZlYXR1cmVTY2hlbWEqPiBNZWRpYVF1ZXJ5UGFyc2VyOjpmZWF0dXJlU2No
ZW1hcygpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2No
ZW1hPiB3aWR0aFNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAid2lkdGgiX3MsIEZlYXR1cmVTY2hl
bWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6TGVuZ3RoIH0sIHsg
fSB9IH07Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1h
PiBoZWlnaHRTY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImhlaWdodCJfcywgRmVhdHVyZVNjaGVt
YTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9
IH0gfTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+
IG9yaWVudGF0aW9uU2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJvcmllbnRhdGlvbiJfcywgRmVh
dHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUsIHsgfSwgeyBDU1NWYWx1ZVBvcnRyYWl0LCBDU1NW
YWx1ZUxhbmRzY2FwZSB9IH0gfTsKLQotICAgIHJldHVybiB7ICZ3aWR0aFNjaGVtYS5nZXQoKSwg
JmhlaWdodFNjaGVtYS5nZXQoKSwgJm9yaWVudGF0aW9uU2NoZW1hLmdldCgpIH07CisgICAgcmV0
dXJuIEZlYXR1cmVzOjphbGxTY2hlbWFzKCk7CiB9CiAKIE1lZGlhUXVlcnlMaXN0IE1lZGlhUXVl
cnlQYXJzZXI6OmNvbnN1bWVNZWRpYVF1ZXJ5TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMDI5NGJlMWNkNWNj
Li5iNGYxNDFmMzBiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC0zNjEsNiArMzYxLDcgQEAgcHVibGljOgogICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Q
b2xpY3kgbW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeTsgfQogICAgIHZvaWQgc2V0TW9kYWxDb250
YWluZXJPYnNlcnZhdGlvblBvbGljeShNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5IHBv
bGljeSkgeyBtX21vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3kgPSBwb2xpY3k7IH0KIAor
ICAgIC8vIEZYSU1FOiBXaHkgaXMgdGhpcyBpbiBhIExvYWRlcj8KICAgICBXRUJDT1JFX0VYUE9S
VCBDb2xvclNjaGVtZVByZWZlcmVuY2UgY29sb3JTY2hlbWVQcmVmZXJlbmNlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRDb2xvclNjaGVtZVByZWZlcmVuY2UoQ29sb3JTY2hlbWVQcmVmZXJlbmNlIHBy
ZWZlcmVuY2UpIHsgbV9jb2xvclNjaGVtZVByZWZlcmVuY2UgPSBwcmVmZXJlbmNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRl
eCBjMGQ0YWVkZjZmMGYuLjZmMDY5YTFiMjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNzIsMTEgKzcyLDEyIEBAIGF1dG8g
Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dEZvclF1ZXJ5
KGNvbnN0IENROjpDb250YWluCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWNvbnRh
aW5lci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNv
bnRleHQgeyB9OworICAgICAgICByZXR1cm4gTVE6OkZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCB7
IG1fZWxlbWVudC0+ZG9jdW1lbnQoKSB9OwogCiAgICAgYXV0byYgcmVuZGVyZXIgPSAqY29udGFp
bmVyLT5yZW5kZXJlcigpOwogCiAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHQgeworICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCksCiAgICAgICAgIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEgeyByZW5kZXJlci5zdHlsZSgpLCBtX2VsZW1lbnQtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsICZyZW5kZXJlci52aWV3
KCkgfSwKICAgICAgICAgJnJlbmRlcmVyCiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463256</attachid>
            <date>2022-10-26 10:03:40 -0700</date>
            <delta_ts>2022-10-26 11:43:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-247061-20221026200339.patch</filename>
            <type>text/plain</type>
            <size>49506</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSA2MDM4ZjZkNDBkNDAyYzg4MzViYWQ4NzlkOGVlZWU5ZjkzYzRmM2JlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI2IE9jdCAyMDIyIDE1OjQ2OjQ1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
QWRkIEZlYXR1cmVTY2hlbWFzIGZvciBtb3N0IG1lZGlhIHF1ZXJ5IGZlYXR1cmVzCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3MDYxIDxyZGFyOi8vcHJvYmxlbS8x
MDE1ODYyODU+CgpSZXZpZXdlZCBieSBBbGFuIEJ1anRhcy4KCkFkZCBzY2hlbWFzIHdpdGggZXZh
bHVhdGlvbiBmdW5jdGlvbnMgZm9yIG1vc3QgbWVkaWEgcXVlcnkgZmVhdHVyZXMgKGV2ZXJ5dGhp
bmcgZXhjZXB0IHRoZSByZXNvbHV0aW9uIHF1ZXJpZXMpLgpFdmFsdWF0aW9uIGZ1bmN0aW9ucyBh
cmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nIG9uZXMgaW4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAuCgpUaGVzZSBhcmUgbm90IHVzZWQgeWV0LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwOgoo
V2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpTaXplRmVhdHVyZVNjaGVtYTo6U2l6ZUZlYXR1cmVTY2hl
bWEpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVzOjpvcmllbnRhdGlvbik6CiogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaDoKKiBTb3VyY2UvV2ViQ29yZS9j
c3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6OmV2
YWx1YXRlTnVtYmVyQ29tcGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVJbnRlZ2VyQ29t
cGFyaXNvbik6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVCb29sZWFuRmVhdHVyZSk6CihXZWJDb3Jl
OjpNUTo6ZXZhbHVhdGVJbnRlZ2VyRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVOdW1i
ZXJGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpldmFsdWF0ZUlkZW50aWZpZXJGZWF0dXJlKToKKFdl
YkNvcmU6Ok1ROjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6Ok1R
OjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OnZhbGlkYXRlRmVhdHVyZUFnYWluc3RTY2hl
bWEpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmg6
CihXZWJDb3JlOjpNUTo6RmVhdHVyZVNjaGVtYTo6RmVhdHVyZVNjaGVtYSk6CiogU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6Ok1l
ZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgooV2ViQ29yZTo6TVE6Ok1l
ZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1
ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CiogU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHA6IEFkZGVkLgooV2ViQ29yZTo6TVE6OkZl
YXR1cmVzOjpCb29sZWFuU2NoZW1hOjpCb29sZWFuU2NoZW1hKToKKFdlYkNvcmU6Ok1ROjpGZWF0
dXJlczo6Qm9vbGVhblNjaGVtYTo6dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVy
ZXM6OkludGVnZXJTY2hlbWE6OkludGVnZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjpJbnRlZ2VyU2NoZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6
TGVuZ3RoU2NoZW1hOjpMZW5ndGhTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpMZW5n
dGhTY2hlbWE6OnZhbHVlRnVuY3Rpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1Nj
aGVtYTo6UmF0aW9TY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpSYXRpb1NjaGVtYTo6
dmFsdWVGdW5jdGlvbik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OklkZW50aWZpZXJTY2hlbWE6
OklkZW50aWZpZXJTY2hlbWEpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpJZGVudGlmaWVyU2No
ZW1hOjp2YWx1ZUZ1bmN0aW9uKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW5pbWF0aW9uKToK
KFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YW55SG92ZXIpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVz
OjphbnlQb2ludGVyKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6YXNwZWN0UmF0aW8pOgooV2Vi
Q29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmNvbG9y
R2FtdXQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpjb2xvckluZGV4KToKKFdlYkNvcmU6Ok1R
OjpGZWF0dXJlczo6ZGV2aWNlQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpk
ZXZpY2VIZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpkZXZpY2VXaWR0aCk6CihXZWJD
b3JlOjpNUTo6RmVhdHVyZXM6OmR5bmFtaWNSYW5nZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OmZvcmNlZENvbG9ycyk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmdyaWQpOgooV2ViQ29yZTo6
TVE6OkZlYXR1cmVzOjpoZWlnaHQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpob3Zlcik6CihX
ZWJDb3JlOjpNUTo6RmVhdHVyZXM6OmludmVydGVkQ29sb3JzKToKKFdlYkNvcmU6Ok1ROjpGZWF0
dXJlczo6bW9ub2Nocm9tZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6Om9yaWVudGF0aW9uKToK
KFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cG9pbnRlcik6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6
OnByZWZlcnNDb250cmFzdCk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnByZWZlcnNEYXJrSW50
ZXJmYWNlKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24pOgoo
V2ViQ29yZTo6TVE6OkZlYXR1cmVzOjpzY2FuKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6dHJh
bnNmb3JtMmQpOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp0cmFuc2Zvcm0zZCk6CihXZWJDb3Jl
OjpNUTo6RmVhdHVyZXM6OnRyYW5zaXRpb24pOgooV2ViQ29yZTo6TVE6OkZlYXR1cmVzOjp2aWRl
b1BsYXlhYmxlSW5saW5lKToKKFdlYkNvcmU6Ok1ROjpGZWF0dXJlczo6d2lkdGgpOgooV2ViQ29y
ZTo6TVE6OkZlYXR1cmVzOjpkaXNwbGF5TW9kZSk6CihXZWJDb3JlOjpNUTo6RmVhdHVyZXM6OnBy
ZWZlcnNDb2xvclNjaGVtZSk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlG
ZWF0dXJlcy5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBh
cnNlci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CiogU291
cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6
U3R5bGU6OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpmZWF0dXJlRXZhbHVhdGlvbkNvbnRleHRG
b3JRdWVyeSBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAg
ICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiB8ICAgNiArCiAuLi4vY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3Bw
ICAgICAgfCAgIDcgKy0KIC4uLi9jc3MvcXVlcnkvQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5oICAg
ICAgICB8ICAgMyArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgIHwgIDY3ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
ICAgfCAgIDUgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3BwICAg
ICB8ICAgMiArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggICAgICAg
IHwgICA3ICstCiAuLi4vV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAg
fCAgMjggKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmggICB8
ICAgNSArLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAgIHwg
NjY4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlGZWF0dXJlcy5oIHwgIDc1ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1
YXRvci5jcHAgfCAgIDMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCspLCAz
MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeUZlYXR1cmVzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTMy
YzExMzExZGY4Li5kMTZmZGUwZjY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04ODcsNiArODg3LDcg
QEAgY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAogY3NzL3F1ZXJ5L0dl
bmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5U2Vy
aWFsaXphdGlvbi5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorY3NzL3F1
ZXJ5L01lZGlhUXVlcnlGZWF0dXJlcy5jcHAKIGNzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNw
cAogY3NzL3R5cGVkb20vQ29tcHV0ZWRTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCiBjc3Mv
dHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJjMTMyYmI4MGY0Li4y
Zjk3OTFmNWVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU1MjYsNiArNTUyNiw3IEBACiAJCUU0NTVBNTcxMjhGRDczRjMw
MEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU3MDI4RkQ3M0YzMDBCNkVBNzYgLyogTWVkaWFR
dWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNDU1QTU4MjI4RkU4RDhEMDBCNkVBNzYgLyogTWVk
aWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAqLzsgfTsKIAkJRTQ1NUE1
OTQyOTAyODc4OTAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNTkzMjkwMjg3ODgwMEI2
RUE3NiAvKiBDb250YWluZXJRdWVyeUZlYXR1cmVzLmggKi87IH07CisJCUU0NTVBNUJBMjkwN0E4
OUEwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTVBNUI5MjkwN0E4OTkwMEI2RUE3NiAvKiBNZWRp
YVF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERGQzA3
IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNoZWRE
ZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyog
U3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsgfTsK
QEAgLTE4MDUzLDYgKzE4MDU0LDggQEAKIAkJRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1l
ZGlhUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDU1QTU5MTI5MDI4Nzc4MDBCNkVBNzYg
LyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250YWluZXJRdWVyeUZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ1NUE1OTMyOTAyODc4ODAwQjZFQTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVh
dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyUXVlcnlG
ZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU1QTVCOTI5MDdBODk5
MDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDU1QTVCQjI5MDdBOEEzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUZlYXR1cmVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVC
QTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1NzUsNiArMzI1NzgsOCBAQAogCQkJCUU0
NTVBNTgxMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5LmggKi8sCiAJCQkJRTQ1NUE1NkYy
OEZENzNFQjAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAogCQkJCUU0NTVB
NTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJCQkJRTQ1
NUE1QkIyOTA3QThBMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5jcHAgKi8sCisJCQkJ
RTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oICovLAogCQkJ
CUU0NEY0MjJGMjhGNkE2NTIwMDBGODdCQyAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywKIAkJ
CQlFNDRGNDIyRDI4RjZBNjQ4MDAwRjg3QkMgLyogTWVkaWFRdWVyeVBhcnNlci5oICovLAogCQkJ
KTsKQEAgLTM3NDcwLDYgKzM3NDc1LDcgQEAKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3ODAg
LyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1NUE1NzEy
OEZENzNGMzAwQjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlG
ZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJDIC8q
IE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdBRDdEMDA2
MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBQTEw
RjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1
cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVz
LmNwcAppbmRleCAxNDVkMDhmMzQwM2UuLjQ4MGU4NTYwYjQzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RmVh
dHVyZXMuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTMz
LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmU6OkNROjpGZWF0dXJlcyB7CiB1c2luZyBuYW1l
c3BhY2UgTVE7CiAKIHN0cnVjdCBTaXplRmVhdHVyZVNjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2No
ZW1hIHsKLSAgICBTaXplRmVhdHVyZVNjaGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBl
IHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlE
PiB2YWx1ZUlkZW50aWZpZXJzID0geyB9KQotICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwg
dHlwZSwgdmFsdWVUeXBlcywgdmFsdWVJZGVudGlmaWVycykKKyAgICBTaXplRmVhdHVyZVNjaGVt
YShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIE9wdGlvblNldDxWYWx1ZVR5cGU+
IHZhbHVlVHlwZXMsIFZlY3RvcjxDU1NWYWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMgPSB7IH0p
CisgICAgICAgIDogRmVhdHVyZVNjaGVtYShuYW1lLCB0eXBlLCB2YWx1ZVR5cGVzLCBXVEZNb3Zl
KHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogCiAgICAgRXZhbHVhdGlvblJlc3VsdCBldmFs
dWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25D
b250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQpAQCAtMTY3LDcgKzE2OCw3IEBAIGNvbnN0
IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKICAgICAgICAgRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZShjb25zdCBNUTo6RmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgUmVuZGVyQm94JiByZW5k
ZXJlciwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgaXNQb3J0cmFpdCA9IHJlbmRlcmVyLmNvbnRlbnRI
ZWlnaHQoKSA+PSByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKLSAgICAgICAgICAgIHJldHVybiBl
dmFsdWF0ZURpc2NyZXRlRmVhdHVyZShmZWF0dXJlLCBpc1BvcnRyYWl0ID8gQ1NTVmFsdWVQb3J0
cmFpdCA6IENTU1ZhbHVlTGFuZHNjYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBldmFsdWF0ZUlk
ZW50aWZpZXJGZWF0dXJlKGZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0IDog
Q1NTVmFsdWVMYW5kc2NhcGUpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0NvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9Db250YWluZXJRdWVyeUZlYXR1cmVzLmgKaW5kZXggNDk3OThkYjZl
ZDMxLi5iMmZlOGU2MTQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9D
b250YWluZXJRdWVyeUZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0Nv
bnRhaW5lclF1ZXJ5RmVhdHVyZXMuaApAQCAtMjQsOCArMjQsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZTo6Q1EgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkv
R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZDY1ZjgxZmU2MjAuLmYyM2Qx
ZGY1MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJp
Y01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC04Myw2ICs4MywzMiBAQCBzdGF0aWMgRXZhbHVh
dGlvblJlc3VsdCBldmFsdWF0ZUxlbmd0aENvbXBhcmlzb24oTGF5b3V0VW5pdCBzaXplLCBjb25z
dCBzdGQ6Om9wdAogICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJp
c29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKIH07CiAKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2
YWx1YXRlTnVtYmVyQ29tcGFyaXNvbihkb3VibGUgbnVtYmVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PENvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpCit7CisgICAgaWYgKCFjb21wYXJp
c29uKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKworICAgIGF1dG8g
ZXhwcmVzc2lvbk51bWJlciA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY29t
cGFyaXNvbi0+dmFsdWUuZ2V0KCkpLT5kb3VibGVWYWx1ZSgpOworCisgICAgYXV0byBsZWZ0ID0g
c2lkZSA9PSBTaWRlOjpMZWZ0ID8gZXhwcmVzc2lvbk51bWJlciA6IG51bWJlcjsKKyAgICBhdXRv
IHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gbnVtYmVyIDogZXhwcmVzc2lvbk51bWJlcjsK
KworICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwg
bGVmdCwgcmlnaHQpKTsKK307CisKK3N0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50
ZWdlckNvbXBhcmlzb24oaW50IG51bWJlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb21wYXJpc29u
PiYgY29tcGFyaXNvbiwgU2lkZSBzaWRlKQoreworICAgIGlmICghY29tcGFyaXNvbikKKyAgICAg
ICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAgICBhdXRvIGV4cHJlc3Npb25O
dW1iZXIgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlzb24tPnZh
bHVlLmdldCgpKS0+aW50VmFsdWUoKTsKKworICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lkZTo6
TGVmdCA/IGV4cHJlc3Npb25OdW1iZXIgOiBudW1iZXI7CisgICAgYXV0byByaWdodCA9IHNpZGUg
PT0gU2lkZTo6TGVmdCA/IG51bWJlciA6IGV4cHJlc3Npb25OdW1iZXI7CisKKyAgICByZXR1cm4g
dG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0KSk7
Cit9OworCiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBGZWF0
dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21wYXJp
c29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKQEAgLTEzMSwxOCArMTU3LDQ5IEBAIEV2
YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVhdHVy
ZSwgZG91YmxlIHJhdGlvKQogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmlnaHRSZXN1bHQ7CiB9
CiAKLUV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgQ1NTVmFsdWVJRCBleHBlY3RlZFZhbHVlKQorRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZUJvb2xlYW5GZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGJvb2wgY3VycmVu
dFZhbHVlKQogewogICAgIGlmICghZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAgIHJl
dHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gdG9FdmFsdWF0
aW9uUmVzdWx0KGN1cnJlbnRWYWx1ZSk7CiAKLSAgICBhdXRvJiBjb21wYXJpc29uID0gKmZlYXR1
cmUucmlnaHRDb21wYXJpc29uOworICAgIGF1dG8mIHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbi0+dmFsdWUpOworICAgIGF1dG8gZXhw
ZWN0ZWRWYWx1ZSA9IHZhbHVlLmludFZhbHVlKCk7CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPihjb21wYXJpc29uLnZhbHVlKSB8fCBjb21wYXJpc29uLm9wICE9IENvbXBhcmlzb25P
cGVyYXRvcjo6RXF1YWwpCisgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgZXhwZWN0ZWRWYWx1ZSAh
PSAxKQogICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAorICAgIHJl
dHVybiB0b0V2YWx1YXRpb25SZXN1bHQoZXhwZWN0ZWRWYWx1ZSA9PSBjdXJyZW50VmFsdWUpOwor
fQorCitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgaW50IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICBpZiAoIWZlYXR1cmUubGVmdENv
bXBhcmlzb24gJiYgIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQorICAgICAgICByZXR1cm4gdG9F
dmFsdWF0aW9uUmVzdWx0KCEhY3VycmVudFZhbHVlKTsKKworICAgIGF1dG8gbGVmdFJlc3VsdCA9
IGV2YWx1YXRlSW50ZWdlckNvbXBhcmlzb24oY3VycmVudFZhbHVlLCBmZWF0dXJlLmxlZnRDb21w
YXJpc29uLCBTaWRlOjpMZWZ0KTsKKyAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVhdGVJbnRl
Z2VyQ29tcGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRl
OjpSaWdodCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0
dXJlLCBkb3VibGUgY3VycmVudFZhbHVlKQoreworICAgIGlmICghZmVhdHVyZS5sZWZ0Q29tcGFy
aXNvbiAmJiAhZmVhdHVyZS5yaWdodENvbXBhcmlzb24pCisgICAgICAgIHJldHVybiB0b0V2YWx1
YXRpb25SZXN1bHQoISFjdXJyZW50VmFsdWUpOworCisgICAgYXV0byBsZWZ0UmVzdWx0ID0gZXZh
bHVhdGVOdW1iZXJDb21wYXJpc29uKGN1cnJlbnRWYWx1ZSwgZmVhdHVyZS5sZWZ0Q29tcGFyaXNv
biwgU2lkZTo6TGVmdCk7CisgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1YXRlTnVtYmVyQ29t
cGFyaXNvbihjdXJyZW50VmFsdWUsIGZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpSaWdo
dCk7CisKKyAgICByZXR1cm4gbGVmdFJlc3VsdCAmIHJpZ2h0UmVzdWx0OworfQorCitFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlSWRlbnRpZmllckZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVhdHVy
ZSwgQ1NTVmFsdWVJRCBjdXJyZW50VmFsdWUpCit7CisgICAgaWYgKCFmZWF0dXJlLnJpZ2h0Q29t
cGFyaXNvbikKKyAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjdXJyZW50VmFsdWUg
IT0gQ1NTVmFsdWVOb25lICYmIGN1cnJlbnRWYWx1ZSAhPSBDU1NWYWx1ZU5vUHJlZmVyZW5jZSk7
CisKICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZmVhdHVy
ZS5yaWdodENvbXBhcmlzb24tPnZhbHVlKTsKLSAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0
KHZhbHVlLnZhbHVlSUQoKSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICByZXR1cm4gdG9FdmFsdWF0
aW9uUmVzdWx0KHZhbHVlLnZhbHVlSUQoKSA9PSBjdXJyZW50VmFsdWUpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRv
ci5oCmluZGV4IDZmYTA4NWY3YzE3ZC4uMDU2ZWViYjhkODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAtMzcs
NyArMzcsMTAgQEAgbmFtZXNwYWNlIE1RIHsKIAogRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUxl
bmd0aEZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIExheW91dFVuaXQsIGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmKTsKIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0ZlYXR1cmUo
Y29uc3QgRmVhdHVyZSYsIGRvdWJsZSk7Ci1FdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRGlzY3Jl
dGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKTsKK0V2YWx1YXRpb25SZXN1bHQg
ZXZhbHVhdGVCb29sZWFuRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgYm9vbCk7CitFdmFsdWF0aW9u
UmVzdWx0IGV2YWx1YXRlSW50ZWdlckZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGludCk7CitFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlTnVtYmVyRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91Ymxl
KTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVJZGVudGlmaWVyRmVhdHVyZShjb25zdCBGZWF0
dXJlJiwgQ1NTVmFsdWVJRCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZhbHVhdG9y
PgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggMTM0ZGRj
YTJmZmEzLi4wMGY4MThmZGQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIGJvb2wg
R2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0U2NoZW1h
KEZlYXR1cmUmIGZlYXR1cmUsCiAKICAgICBhdXRvIGlzVmFsaWQgPSBbJl0gewogICAgICAgICBp
ZiAoc2NoZW1hLnR5cGUgPT0gRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUpIHsKLSAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmIGZlYXR1cmUubGVmdENvbXBhcmlz
b24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCisgICAgICAgICAgICBpZiAoZmVh
dHVyZS5zeW50YXggPT0gU3ludGF4OjpSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5yaWdodENvbXBhcmlzb24gJiYgZmVhdHVyZS5y
aWdodENvbXBhcmlzb24tPm9wICE9IENvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9H
ZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKaW5kZXggYTNiZTMwZjg2MDdjLi41MWYwYzhhYzhkY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlw
ZXMuaApAQCAtNzIsNyArNzIsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uIHsKIGVudW0gY2xhc3MgRXZh
bHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCiBzdHJ1
Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhIGNvbnZlcnNpb25EYXRhOworICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKKyAgICBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgfTsKICAgICBjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTk1LDExICs5Niwx
MSBAQCBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CiAKICAgICB2aXJ0dWFsIEV2YWx1YXRpb25SZXN1
bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247IH0KIAotICAgIEZl
YXR1cmVTY2hlbWEoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBPcHRpb25TZXQ8
VmFsdWVUeXBlPiB2YWx1ZVR5cGVzLCBWZWN0b3I8Q1NTVmFsdWVJRD4gdmFsdWVJZGVudGlmaWVy
cykKKyAgICBGZWF0dXJlU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFR5cGUgdHlwZSwg
T3B0aW9uU2V0PFZhbHVlVHlwZT4gdmFsdWVUeXBlcywgVmVjdG9yPENTU1ZhbHVlSUQ+JiYgdmFs
dWVJZGVudGlmaWVycyA9IHsgfSkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwgdHlw
ZSh0eXBlKQogICAgICAgICAsIHZhbHVlVHlwZXModmFsdWVUeXBlcykKLSAgICAgICAgLCB2YWx1
ZUlkZW50aWZpZXJzKHZhbHVlSWRlbnRpZmllcnMpCisgICAgICAgICwgdmFsdWVJZGVudGlmaWVy
cyhXVEZNb3ZlKHZhbHVlSWRlbnRpZmllcnMpKQogICAgIHsgfQogICAgIHZpcnR1YWwgfkZlYXR1
cmVTY2hlbWEoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGI1NjNiYjI4ZWE5Mi4uY2M0NzNlNWI2NDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJN
ZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlN0eWxlRm9u
dFNpemVGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1RIHsK
QEAgLTM2LDcgKzM3LDggQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1l
ZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQogICAg
IDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVkaWFU
eXBlKQotICAgICwgbV9ldmFsdWF0aW9uQ29udGV4dCh7IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEgeyAqcm9vdEVsZW1lbnRTdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgZG9jdW1lbnQucmVuZGVy
VmlldygpIH0sIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9KQorICAgICwgbV9kb2N1bWVudChkb2N1
bWVudCkKKyAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZShyb290RWxlbWVudFN0eWxlKQogewogfQog
CkBAIC02NywxNyArNjksMjcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShj
b25zdCBNZWRpYVF1ZXJ5JiBxdWVyeSkgY29uc3QKICAgICBhdXRvIGNvbmRpdGlvbk1hdGNoZXMg
PSBbJl0gewogICAgICAgICBpZiAoIXF1ZXJ5LmNvbmRpdGlvbikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKCpxdWVyeS5jb25kaXRp
b24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisKKyAg
ICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZiAoIW1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0eWxl
LmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNpemVG
b3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgbV9kb2N1bWVudCk7CisgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOworICAgICAgICBkZWZhdWx0U3R5bGUuc2V0Rm9u
dERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CisgICAgICAgIGRlZmF1bHRT
dHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgpOworCisgICAgICAgIEZlYXR1cmVFdmFsdWF0aW9u
Q29udGV4dCBjb250ZXh0IHsgbV9kb2N1bWVudCwgeyAqbV9yb290RWxlbWVudFN0eWxlLCAmZGVm
YXVsdFN0eWxlLCBudWxscHRyLCBtX2RvY3VtZW50LnJlbmRlclZpZXcoKSB9LCBudWxscHRyIH07
CisgICAgICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbigqcXVlcnkuY29uZGl0aW9uLCBjb250
ZXh0KSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogICAgIH0oKTsKIAogICAgIHJldHVybiBj
b25kaXRpb25NYXRjaGVzICE9IGlzTmVnYXRlZDsKIH0KIAotRXZhbHVhdGlvblJlc3VsdCBNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZl
YXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEV2YWx1YXRpb25S
ZXN1bHQ6OlVua25vd247Ci19Ci0KLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzJiMmYwMWNmYTg2Li4wZDFjYjM4ODgzY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaApA
QCAtNDAsMTEgKzQwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1lZGlh
UXVlcnlMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5Jikg
Y29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0
dXJlJiwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7Ci0KIHByaXZhdGU6
CiAgICAgY29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJlRXZh
bHVhdGlvbkNvbnRleHQgbV9ldmFsdWF0aW9uQ29udGV4dDsKKyAgICBjb25zdCBEb2N1bWVudCYg
bV9kb2N1bWVudDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxlOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlG
ZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUZlYXR1cmVz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhNGVlNDM4M2Vm
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5
RmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMu
aCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlF1aXJrcy5o
IgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJUaGVtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZTo6TVE6OkZlYXR1cmVzIHsKKworc3RydWN0IEJvb2xlYW5TY2hlbWEgOiBw
dWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVGdW5jdGlvbiA9IEZ1bmN0aW9u
PGJvb2woY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgQm9vbGVhblNj
aGVtYShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlv
bikKKyAgICAgICAgOiBGZWF0dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRp
c2NyZXRlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAs
IHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2
YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGV2YWx1YXRlQm9vbGVhbkZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlv
bihjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVG
dW5jdGlvbjsKK307CisKK3N0cnVjdCBJbnRlZ2VyU2NoZW1hIDogcHVibGljIEZlYXR1cmVTY2hl
bWEgeworICAgIHVzaW5nIFZhbHVlRnVuY3Rpb24gPSBGdW5jdGlvbjxpbnQoY29uc3QgRmVhdHVy
ZUV2YWx1YXRpb25Db250ZXh0Jik+OworCisgICAgSW50ZWdlclNjaGVtYShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBWYWx1ZUZ1bmN0aW9uJiYgdmFsdWVGdW5jdGlvbikKKyAgICAgICAgOiBGZWF0
dXJlU2NoZW1hKG5hbWUsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVTY2hl
bWE6OlZhbHVlVHlwZTo6SW50ZWdlciB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92
ZSh2YWx1ZUZ1bmN0aW9uKSkKKyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVh
dGUoY29uc3QgRmVhdHVyZSYgZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0
JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRl
SW50ZWdlckZlYXR1cmUoZmVhdHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisKK3N0cnVj
dCBMZW5ndGhTY2hlbWEgOiBwdWJsaWMgRmVhdHVyZVNjaGVtYSB7CisgICAgdXNpbmcgVmFsdWVG
dW5jdGlvbiA9IEZ1bmN0aW9uPExheW91dFVuaXQoY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250
ZXh0Jik+OworCisgICAgTGVuZ3RoU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZhbHVl
RnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwg
RmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpM
ZW5ndGggfSkKKyAgICAgICAgLCB2YWx1ZUZ1bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikp
CisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUm
IGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUoZmVh
dHVyZSwgdmFsdWVGdW5jdGlvbihjb250ZXh0KSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRnVuY3Rpb24gdmFsdWVGdW5jdGlvbjsKK307CisK
K3N0cnVjdCBSYXRpb1NjaGVtYSA6IHB1YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBW
YWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248ZG91YmxlKGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29u
dGV4dCYpPjsKKworICAgIFJhdGlvU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZhbHVl
RnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9uKQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwg
RmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpS
YXRpbyB9KQorICAgICAgICAsIHZhbHVlRnVuY3Rpb24oV1RGTW92ZSh2YWx1ZUZ1bmN0aW9uKSkK
KyAgICB7IH0KKworICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGUoY29uc3QgRmVhdHVyZSYg
ZmVhdHVyZSwgY29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdCBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlUmF0aW9GZWF0dXJlKGZlYXR1
cmUsIHZhbHVlRnVuY3Rpb24oY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWYWx1
ZUZ1bmN0aW9uIHZhbHVlRnVuY3Rpb247Cit9OworCit1c2luZyBNYXRjaGluZ0lkZW50aWZpZXJz
ID0gVmVjdG9yPENTU1ZhbHVlSUQsIDE+OworCitzdHJ1Y3QgSWRlbnRpZmllclNjaGVtYSA6IHB1
YmxpYyBGZWF0dXJlU2NoZW1hIHsKKyAgICB1c2luZyBWYWx1ZUZ1bmN0aW9uID0gRnVuY3Rpb248
TWF0Y2hpbmdJZGVudGlmaWVycyhjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQmKT47CisK
KyAgICBJZGVudGlmaWVyU2NoZW1hKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxDU1NW
YWx1ZUlEPiYmIHZhbHVlSWRlbnRpZmllcnMsIFZhbHVlRnVuY3Rpb24mJiB2YWx1ZUZ1bmN0aW9u
KQorICAgICAgICA6IEZlYXR1cmVTY2hlbWEobmFtZSwgRmVhdHVyZVNjaGVtYTo6VHlwZTo6RGlz
Y3JldGUsIHsgfSwgV1RGTW92ZSh2YWx1ZUlkZW50aWZpZXJzKSkKKyAgICAgICAgLCB2YWx1ZUZ1
bmN0aW9uKFdURk1vdmUodmFsdWVGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBFdmFsdWF0aW9u
UmVzdWx0IGV2YWx1YXRlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIGNvbnN0IEZlYXR1cmVFdmFs
dWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1
dG8gdmFsdWVJRHMgPSB2YWx1ZUZ1bmN0aW9uKGNvbnRleHQpOworICAgICAgICBmb3IgKGF1dG8g
dmFsdWVJRCA6IHZhbHVlSURzKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWVJZGVudGlmaWVy
cy5jb250YWlucyh2YWx1ZUlEKSk7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVJZGVudGlmaWVy
RmVhdHVyZShmZWF0dXJlLCB2YWx1ZUlEKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmFsdWVGdW5jdGlvbiB2YWx1ZUZ1bmN0aW9uOworfTsKKworY29uc3QgRmVhdHVyZVNj
aGVtYSYgYW5pbWF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICItd2Via2l0LWFuaW1hdGlvbiJfcywK
KyAgICAgICAgW10oYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworICAgIHJldHVybiBz
Y2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7Cisg
ICAgICAgICJhbnktaG92ZXIiX3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9uZSwgQ1NT
VmFsdWVIb3ZlciB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBh
dXRvKiBwYWdlID0gY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCk7CisgICAgICAgICAg
ICBib29sIGlzU3VwcG9ydGVkID0gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3Zl
clN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaXNTdXBwb3J0ZWQgPyBDU1NWYWx1ZUhvdmVyIDog
Q1NTVmFsdWVOb25lIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9
CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueVBvaW50ZXIoKQoreworICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAg
ImFueS1wb2ludGVyIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVl
RmluZSwgQ1NTVmFsdWVDb2Fyc2UgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAg
ICAgICAgICAgYXV0byogcGFnZSA9IGNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpOwor
ICAgICAgICAgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzID0gcGFnZSA/IHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50
aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CisKKyAg
ICAgICAgICAgIE1hdGNoaW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CisgICAgICAgICAgICBp
ZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2ludGVyQ2hhcmFjdGVyaXN0aWNz
OjpGaW5lKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVGaW5l
KTsKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMu
YXBwZW5kKENTU1ZhbHVlQ29hcnNlKTsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVycy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKENTU1ZhbHVlTm9uZSk7
CisgICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKworICAgIH07Cisg
ICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgYXNwZWN0UmF0aW8o
KQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8UmF0aW9TY2hlbWE+IHNj
aGVtYSB7CisgICAgICAgICJhc3BlY3QtcmF0aW8iX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqY29udGV4dC5kb2N1bWVudC52aWV3KCk7
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2aWV3LmxheW91dFdpZHRo
KCkpIC8gdmlldy5sYXlvdXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJu
IHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKQoreworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsKKyAgICAg
ICAgImNvbG9yIl9zLAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5t
YWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1h
OworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBjb2xvckdhbXV0KCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAg
ICAgICJjb2xvci1nYW11dCJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVTUkdCLCBDU1NW
YWx1ZVAzLCBDU1NWYWx1ZVJlYzIwMjAgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byYgZnJhbWUgPSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworCisg
ICAgICAgICAgICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0ZWN0
aW5nIGRpc3BsYXlzIHRoYXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KKyAgICAgICAgICAgIE1hdGNo
aW5nSWRlbnRpZmllcnMgaWRlbnRpZmllcnMgeyBDU1NWYWx1ZVNSR0IgfTsKKyAgICAgICAgICAg
IGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoZnJhbWUubWFpbkZyYW1lKCkudmlldygp
KSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVQMyk7CisgICAg
ICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVy
biBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKQoreworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SW50ZWdlclNjaGVtYT4gc2NoZW1hIHsK
KyAgICAgICAgImNvbG9yLWluZGV4Il9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4gMDsg
fQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYg
ZGV2aWNlQXNwZWN0UmF0aW8oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8UmF0aW9TY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJkZXZpY2UtYXNwZWN0LXJhdGlvIl9z
LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIHNjcmVlblNp
emUgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPm1haW5GcmFtZSgpLnNjcmVlblNpemUoKTsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHNjcmVlblNpemUud2lkdGgo
KSkgLyBzY3JlZW5TaXplLmhlaWdodCgpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4g
c2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VIZWlnaHQoKQoreworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoU2NoZW1hPiBzY2hlbWEgewor
ICAgICAgICAiZGV2aWNlLWhlaWdodCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgewor
ICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCkt
Pm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS5oZWlnaHQoKSB9OworICAgICAgICB9CisgICAgfTsK
KyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VQaXhl
bFJhdGlvKCk7CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCkKK3sKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPExlbmd0aFNjaGVtYT4gc2NoZW1hIHsKKyAg
ICAgICAgImRldmljZS13aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAg
ICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPm1h
aW5GcmFtZSgpLnNjcmVlblNpemUoKS53aWR0aCgpIH07CisgICAgICAgIH0KKyAgICB9OworICAg
IHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGR5bmFtaWNSYW5nZSgp
Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1h
PiBzY2hlbWEgeworICAgICAgICAiZHluYW1pYy1yYW5nZSJfcywKKyAgICAgICAgVmVjdG9yIHsg
Q1NTVmFsdWVTdGFuZGFyZCwgQ1NTVmFsdWVIaWdoIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gWyZdIHsK
KyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7
CisgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLmhkck1lZGlhQ2FwYWJpbGl0
aWVzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1pY1Jh
bmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2li
aWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShmcmFtZS5t
YWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBNYXRj
aGluZ0lkZW50aWZpZXJzIGlkZW50aWZpZXJzIHsgQ1NTVmFsdWVTdGFuZGFyZCB9OworICAgICAg
ICAgICAgaWYgKHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVIaWdoKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlm
aWVyczsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3Qg
RmVhdHVyZVNjaGVtYSYgZm9yY2VkQ29sb3JzKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJmb3JjZWQt
Y29sb3JzIl9zLAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWN0aXZl
IH0sCisgICAgICAgIFtdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVu
dGlmaWVycyB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4g
c2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBncmlkKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEJvb2xlYW5TY2hlbWE+IHNjaGVtYSB7CisgICAgICAg
ICJncmlkIl9zLAorICAgICAgICBbXShhdXRvJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB9Owor
ICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGhlaWdodCgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNjaGVt
YSB7CisgICAgICAgICJoZWlnaHQiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LnZpZXcoKS0+bGF5b3V0SGVpZ2h0KCk7
CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9CisKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIGhvdmVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PElkZW50aWZpZXJTY2hlbWE+IHNjaGVtYSB7CisgICAgICAgICJob3ZlciJfcywKKyAgICAgICAg
VmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUhvdmVyIH0sCisgICAgICAgIFtdKGF1dG8m
IGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZy
YW1lKCktPnBhZ2UoKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSAgcGFnZSAmJiBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2
aWNlKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IGlzU3VwcG9y
dGVkID8gQ1NTVmFsdWVIb3ZlciA6IENTU1ZhbHVlTm9uZSB9OworICAgICAgICB9CisgICAgfTsK
KyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBpbnZlcnRlZENv
bG9ycygpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVy
U2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiaW52ZXJ0ZWQtY29sb3JzIl9zLAorICAgICAgICBW
ZWN0b3IgeyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW52ZXJ0ZWQgfSwKKyAgICAgICAgW10oYXV0
byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc0ludmVydGVkID0gWyZdIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRB
Y2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSgpID09
IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
KCk7CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50
aWZpZXJzIHsgaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUgfTsK
KyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgbW9ub2Nocm9tZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxJbnRlZ2VyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAibW9ub2Nocm9tZSJfcywKKyAg
ICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgYm9vbCBpc01vbm9jaHJvbWUg
PSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gKmNvbnRleHQuZG9jdW1lbnQu
ZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWREaXNw
bGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJpbGl0
eVZhbHVlOjpPbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkRGlzcGxheUlzTW9ub2Nocm9tZUFjY2Vz
c2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcmVl
bklzTW9ub2Nocm9tZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAgICAgfSgp
OworCisgICAgICAgICAgICByZXR1cm4gaXNNb25vY2hyb21lID8gc2NyZWVuRGVwdGhQZXJDb21w
b25lbnQoY29udGV4dC5kb2N1bWVudC5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpIDogMDsK
KyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVy
ZVNjaGVtYSYgb3JpZW50YXRpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgIm9yaWVudGF0aW9uIl9z
LAorICAgICAgICBWZWN0b3IgeyBDU1NWYWx1ZUxhbmRzY2FwZSwgQ1NTVmFsdWVQb3J0cmFpdCB9
LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiB2aWV3ID0g
KmNvbnRleHQuZG9jdW1lbnQudmlldygpOworICAgICAgICAgICAgLy8gU3F1YXJlIHZpZXdwb3J0
IGlzIHBvcnRyYWl0LgorICAgICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gdmlldy5sYXlvdXRI
ZWlnaHQoKSA+PSB2aWV3LmxheW91dFdpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gTWF0Y2hp
bmdJZGVudGlmaWVycyB7IGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0IDogQ1NTVmFsdWVM
YW5kc2NhcGUgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKwor
Y29uc3QgRmVhdHVyZVNjaGVtYSYgcG9pbnRlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicG9pbnRl
ciJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUZpbmUsIENTU1Zh
bHVlQ29hcnNlIH0sCisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1
dG8qIHBhZ2UgPSBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKTsKKyAgICAgICAgICAg
IGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljcyA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6IE9w
dGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPigpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgICAgICAgICBpZiAocG9pbnRlckNoYXJhY3RlcmlzdGljcy5jb250YWlucyhQb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkUHJldmVudFBvaW50ZXJNZWRpYVF1ZXJ5RnJvbUV2
YWx1YXRpbmdUb0NvYXJzZSgpKQorICAgICAgICAgICAgICAgICAgICBwb2ludGVyQ2hhcmFjdGVy
aXN0aWNzID0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKKyAgICAgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICAgICAgTWF0Y2hpbmdJZGVudGlmaWVycyBpZGVudGlmaWVyczsKKyAgICAg
ICAgICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmNvbnRhaW5zKFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3M6OkZpbmUpKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChDU1NW
YWx1ZUZpbmUpOworICAgICAgICAgICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuY29udGFp
bnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSkKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVycy5hcHBlbmQoQ1NTVmFsdWVDb2Fyc2UpOworICAgICAgICAgICAgaWYgKGlkZW50aWZp
ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoQ1NTVmFs
dWVOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICAgICAgfQorCisg
ICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVm
ZXJzQ29udHJhc3QoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRl
bnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJhc3QiX3MsCisg
ICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZU1vcmUsIENTU1Zh
bHVlTGVzcyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBib29s
IHVzZXJQcmVmZXJzQ29udHJhc3QgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1l
ID0gKmNvbnRleHQuZG9jdW1lbnQuZnJhbWUoKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGZy
YW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc0NvbnRyYXN0QWNjZXNzaWJpbGl0eVZhbHVlKCkp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhc2UgRm9y
Y2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6U3lz
dGVtOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVyc0NvbnRyYXN0
KCk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfSgpOworCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHVzZXJQ
cmVmZXJzQ29udHJhc3QgPyBDU1NWYWx1ZU1vcmUgOiBDU1NWYWx1ZU5vUHJlZmVyZW5jZSB9Owor
ICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJl
U2NoZW1hJiBwcmVmZXJzRGFya0ludGVyZmFjZSgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAicHJlZmVy
cy1kYXJrLWludGVyZmFjZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFsdWVOb1ByZWZlcmVu
Y2UsIENTU1ZhbHVlUHJlZmVycyB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAg
ICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAg
ICAgICBib29sIHByZWZlcnNEYXJrSW50ZXJmYWNlID0gZnJhbWUucGFnZSgpLT51c2VTeXN0ZW1B
cHBlYXJhbmNlKCkgJiYgZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpOworCisgICAg
ICAgICAgICByZXR1cm4gTWF0Y2hpbmdJZGVudGlmaWVycyB7IHByZWZlcnNEYXJrSW50ZXJmYWNl
ID8gQ1NTVmFsdWVQcmVmZXJzIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UgfTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgcHJl
ZmVyc1JlZHVjZWRNb3Rpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2NoZW1hIHsKKyAgICAgICAgInByZWZlcnMtY29udHJhc3Qi
X3MsCisgICAgICAgIFZlY3RvciB7IENTU1ZhbHVlTm9QcmVmZXJlbmNlLCBDU1NWYWx1ZVJlZHVj
ZSB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBib29sIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IFsmXSB7CisgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUg
PSAqY29udGV4dC5kb2N1bWVudC5mcmFtZSgpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoZnJh
bWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlWYWx1
ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9u
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYXNl
IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbigpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmll
cnMgeyB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1ZVJlZHVjZSA6IENTU1ZhbHVl
Tm9QcmVmZXJlbmNlIH07CisgICAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBzY2hlbWE7Cit9
CisKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHJlc29sdXRpb24oKTsKKworY29uc3QgRmVhdHVyZVNj
aGVtYSYgc2NhbigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVu
dGlmaWVyU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAic2NhbiJfcywKKyAgICAgICAgVmVjdG9y
IHsgQ1NTVmFsdWVJbnRlcmxhY2UsIENTU1ZhbHVlUHJvZ3Jlc3NpdmUgfSwKKyAgICAgICAgW10o
YXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgQ1NTVmFs
dWVQcm9ncmVzc2l2ZSB9OworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOwor
fQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB0cmFuc2Zvcm0yZCgpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAi
LXdlYmtpdC10cmFuc2Zvcm0tMmQiX3MsCisgICAgICAgIFtdKGF1dG8mKSB7IHJldHVybiB0cnVl
OyB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1h
JiB0cmFuc2Zvcm0zZCgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxC
b29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2Zvcm0tMmQiX3Ms
CisgICAgICAgIFtdKGF1dG8mIGNvbnRleHQpIHsKKyNpZiBFTkFCTEUoM0RfVFJBTlNGT1JNUykK
KyAgICAgICAgICAgIGF1dG8qIHZpZXcgPSBjb250ZXh0LmRvY3VtZW50LnJlbmRlclZpZXcoKTsK
KyAgICAgICAgICAgIHJldHVybiB2aWV3ICYmIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5SZW5kZXIz
RFRyYW5zZm9ybXMoKTsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07Cisg
ICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJhbnNpdGlvbigp
Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBz
Y2hlbWEgeworICAgICAgICAiLXdlYmtpdC10cmFuc2l0aW9uIl9zLAorICAgICAgICBbXShhdXRv
JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKworY29u
c3QgRmVhdHVyZVNjaGVtYSYgdmlkZW9QbGF5YWJsZUlubGluZSgpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxCb29sZWFuU2NoZW1hPiBzY2hlbWEgeworICAgICAgICAi
LXdlYmtpdC12aWRlby1wbGF5YWJsZS1pbmxpbmUiX3MsCisgICAgICAgIFtdKGF1dG8mIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRvY3VtZW50LmZyYW1lKCktPnNldHRp
bmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygpOworICAgICAgICB9CisgICAgfTsKKyAg
ICByZXR1cm4gc2NoZW1hOworfQorCitjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxMZW5ndGhTY2hlbWE+IHNjaGVtYSB7
CisgICAgICAgICJ3aWR0aCJfcywKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuZG9jdW1lbnQudmlldygpLT5sYXlvdXRXaWR0aCgpOworICAg
ICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorCisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgZGlzcGxheU1vZGUoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8SWRlbnRpZmllclNjaGVtYT4gc2No
ZW1hIHsKKyAgICAgICAgImRpc3BsYXktbW9kZSJfcywKKyAgICAgICAgVmVjdG9yIHsgQ1NTVmFs
dWVGdWxsc2NyZWVuLCBDU1NWYWx1ZVN0YW5kYWxvbmUsIENTU1ZhbHVlTWluaW1hbFVpLCBDU1NW
YWx1ZUJyb3dzZXIgfSwKKyAgICAgICAgW10oYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAg
Ym9vbCBpZGVudGlmaWVyID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9ICpj
b250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5pZmVzdCA9
IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpIDogc3Rk
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIGlmICghbWFuaWZlc3QpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUJyb3dzZXI7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KG1hbmlmZXN0LT5kaXNwbGF5KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1h
bmlmZXN0OjpEaXNwbGF5OjpGdWxsc2NyZWVuOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTVmFsdWVGdWxsc2NyZWVuOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25NYW5p
ZmVzdDo6RGlzcGxheTo6U3RhbmRhbG9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlU3RhbmRhbG9uZTsKKyAgICAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OkRpc3BsYXk6Ok1pbmltYWxVSToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlTWluaW1hbFVpOworICAgICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6
RGlzcGxheTo6QnJvd3NlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQnJv
d3NlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAg
IHJldHVybiBNYXRjaGluZ0lkZW50aWZpZXJzIHsgaWRlbnRpZmllciB9OworICAgICAgICB9Cisg
ICAgfTsKKyAgICByZXR1cm4gc2NoZW1hOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHByZWZlcnNDb2xvclNjaGVtZSgpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxJZGVudGlmaWVyU2NoZW1hPiBzY2hl
bWEgeworICAgICAgICAicHJlZmVycy1jb2xvci1zY2hlbWUiX3MsCisgICAgICAgIFZlY3RvciB7
IENTU1ZhbHVlTGlnaHQsIENTU1ZhbHVlRGFyayB9LAorICAgICAgICBbXShhdXRvJiBjb250ZXh0
KSB7CisgICAgICAgICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gWyZdIHsKKyAgICAgICAg
ICAgICAgICBhdXRvJiBmcmFtZSA9ICpjb250ZXh0LmRvY3VtZW50LmZyYW1lKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLmRvY3VtZW50KCktPmxvYWRlcigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gZnJhbWUuZG9jdW1lbnQoKS0+bG9h
ZGVyKCktPmNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Y29sb3JTY2hlbWVQcmVmZXJlbmNlICE9IENvbG9yU2NoZW1lUHJlZmVyZW5jZTo6Tm9QcmVmZXJl
bmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lUHJlZmVyZW5j
ZSA9PSBDb2xvclNjaGVtZVByZWZlcmVuY2U6OkRhcms7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBhZ2UoKS0+dXNlRGFya0FwcGVhcmFuY2UoKTsK
KyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgcmV0dXJuIE1hdGNoaW5nSWRlbnRpZmll
cnMgeyB1c2VEYXJrQXBwZWFyYW5jZSA/IENTU1ZhbHVlRGFyayA6IENTU1ZhbHVlTGlnaHQgfTsK
KyAgICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHNjaGVtYTsKK30KKyNlbmRpZgorCitWZWN0
b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IGFsbFNjaGVtYXMoKQoreworICAgIHJldHVybiB7Cisg
ICAgICAgICZhbmltYXRpb24oKSwKKyAgICAgICAgJmFueUhvdmVyKCksCisgICAgICAgICZhbnlQ
b2ludGVyKCksCisgICAgICAgICZhc3BlY3RSYXRpbygpLAorICAgICAgICAmY29sb3IoKSwKKyAg
ICAgICAgJmNvbG9yR2FtdXQoKSwKKyAgICAgICAgJmNvbG9ySW5kZXgoKSwKKyAgICAgICAgJmRl
dmljZUFzcGVjdFJhdGlvKCksCisgICAgICAgICZkZXZpY2VIZWlnaHQoKSwKKy8vIEZJWE1FOiAm
ZGV2aWNlUGl4ZWxSYXRpbygpLAorICAgICAgICAmZGV2aWNlV2lkdGgoKSwKKyAgICAgICAgJmR5
bmFtaWNSYW5nZSgpLAorICAgICAgICAmZm9yY2VkQ29sb3JzKCksCisgICAgICAgICZncmlkKCks
CisgICAgICAgICZoZWlnaHQoKSwKKyAgICAgICAgJmhvdmVyKCksCisgICAgICAgICZpbnZlcnRl
ZENvbG9ycygpLAorICAgICAgICAmbW9ub2Nocm9tZSgpLAorICAgICAgICAmb3JpZW50YXRpb24o
KSwKKyAgICAgICAgJnBvaW50ZXIoKSwKKyAgICAgICAgJnByZWZlcnNDb250cmFzdCgpLAorICAg
ICAgICAmcHJlZmVyc0RhcmtJbnRlcmZhY2UoKSwKKyAgICAgICAgJnByZWZlcnNSZWR1Y2VkTW90
aW9uKCksCisvLyBGSVhNRTogJnJlc29sdXRpb24oKSwKKyAgICAgICAgJnNjYW4oKSwKKyAgICAg
ICAgJnRyYW5zZm9ybTJkKCksCisgICAgICAgICZ0cmFuc2Zvcm0zZCgpLAorICAgICAgICAmdHJh
bnNpdGlvbigpLAorICAgICAgICAmdmlkZW9QbGF5YWJsZUlubGluZSgpLAorICAgICAgICAmd2lk
dGgoKSwKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICZkaXNwbGF5
TW9kZSgpLAorI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgICAgICZwcmVm
ZXJzQ29sb3JTY2hlbWUoKSwKKyNlbmRpZgorICAgIH07Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjA0ZWNkZTgzNGU1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RmVhdHVyZXMuaApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6TVEgewor
CituYW1lc3BhY2UgRmVhdHVyZXMgeworCitjb25zdCBGZWF0dXJlU2NoZW1hJiBhbmltYXRpb24o
KTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGFueUhvdmVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1h
JiBhbnlQb2ludGVyKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBhc3BlY3RSYXRpbygpOworY29u
c3QgRmVhdHVyZVNjaGVtYSYgY29sb3IoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9yR2Ft
dXQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGNvbG9ySW5kZXgoKTsKK2NvbnN0IEZlYXR1cmVT
Y2hlbWEmIGRldmljZUFzcGVjdFJhdGlvKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBkZXZpY2VI
ZWlnaHQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRldmljZVBpeGVsUmF0aW8oKTsKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIGRldmljZVdpZHRoKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBkeW5h
bWljUmFuZ2UoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGZvcmNlZENvbG9ycygpOworY29uc3Qg
RmVhdHVyZVNjaGVtYSYgZ3JpZCgpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaGVpZ2h0KCk7Citj
b25zdCBGZWF0dXJlU2NoZW1hJiBob3ZlcigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgaW52ZXJ0
ZWRDb2xvcnMoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIG1vbm9jaHJvbWUoKTsKK2NvbnN0IEZl
YXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwb2ludGVy
KCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBwcmVmZXJzQ29udHJhc3QoKTsKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIHByZWZlcnNEYXJrSW50ZXJmYWNlKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiBw
cmVmZXJzUmVkdWNlZE1vdGlvbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgcmVzb2x1dGlvbigp
OworY29uc3QgRmVhdHVyZVNjaGVtYSYgc2NhbigpOworY29uc3QgRmVhdHVyZVNjaGVtYSYgdHJh
bnNmb3JtMmQoKTsKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIHRyYW5zZm9ybTNkKCk7Citjb25zdCBG
ZWF0dXJlU2NoZW1hJiB0cmFuc2l0aW9uKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB2aWRlb1Bs
YXlhYmxlSW5saW5lKCk7Citjb25zdCBGZWF0dXJlU2NoZW1hJiB3aWR0aCgpOworI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGRpc3BsYXlNb2Rl
KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2NvbnN0IEZlYXR1cmVTY2hl
bWEmIHByZWZlcnNDb2xvclNjaGVtZSgpOworI2VuZGlmCisKK1ZlY3Rvcjxjb25zdCBGZWF0dXJl
U2NoZW1hKj4gYWxsU2NoZW1hcygpOworCit9OworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAppbmRleCBjYmYxYjZiYTgwOWYuLjBiODQ0YmU5
MDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVyeVNlcmlhbGl6YXRp
b24uaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIE1RIHsKQEAgLTM5LDExICs0MCw3IEBAIE1lZGlhUXVlcnlQYXJzZXI6
Ok1lZGlhUXVlcnlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIAogVmVj
dG9yPGNvbnN0IEZlYXR1cmVTY2hlbWEqPiBNZWRpYVF1ZXJ5UGFyc2VyOjpmZWF0dXJlU2NoZW1h
cygpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1h
PiB3aWR0aFNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAid2lkdGgiX3MsIEZlYXR1cmVTY2hlbWE6
OlR5cGU6OlJhbmdlLCB7IEZlYXR1cmVTY2hlbWE6OlZhbHVlVHlwZTo6TGVuZ3RoIH0sIHsgfSB9
IH07Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1hPiBo
ZWlnaHRTY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImhlaWdodCJfcywgRmVhdHVyZVNjaGVtYTo6
VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0g
fTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IG9y
aWVudGF0aW9uU2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJvcmllbnRhdGlvbiJfcywgRmVhdHVy
ZVNjaGVtYTo6VHlwZTo6RGlzY3JldGUsIHsgfSwgeyBDU1NWYWx1ZVBvcnRyYWl0LCBDU1NWYWx1
ZUxhbmRzY2FwZSB9IH0gfTsKLQotICAgIHJldHVybiB7ICZ3aWR0aFNjaGVtYS5nZXQoKSwgJmhl
aWdodFNjaGVtYS5nZXQoKSwgJm9yaWVudGF0aW9uU2NoZW1hLmdldCgpIH07CisgICAgcmV0dXJu
IEZlYXR1cmVzOjphbGxTY2hlbWFzKCk7CiB9CiAKIE1lZGlhUXVlcnlMaXN0IE1lZGlhUXVlcnlQ
YXJzZXI6OmNvbnN1bWVNZWRpYVF1ZXJ5TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMDI5NGJlMWNkNWNjLi42
MGVjYjlmNGUzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0z
NjEsNiArMzYxLDcgQEAgcHVibGljOgogICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xp
Y3kgbW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
YWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeTsgfQogICAgIHZvaWQgc2V0TW9kYWxDb250YWlu
ZXJPYnNlcnZhdGlvblBvbGljeShNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uUG9saWN5IHBvbGlj
eSkgeyBtX21vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3kgPSBwb2xpY3k7IH0KIAorICAg
IC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBpbiBhIExvYWRlcj8KICAgICBXRUJDT1JFX0VYUE9SVCBD
b2xvclNjaGVtZVByZWZlcmVuY2UgY29sb3JTY2hlbWVQcmVmZXJlbmNlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDb2xvclNjaGVtZVByZWZlcmVuY2UoQ29sb3JTY2hlbWVQcmVmZXJlbmNlIHByZWZl
cmVuY2UpIHsgbV9jb2xvclNjaGVtZVByZWZlcmVuY2UgPSBwcmVmZXJlbmNlOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBj
MGQ0YWVkZjZmMGYuLjZmMDY5YTFiMjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNzIsMTEgKzcyLDEyIEBAIGF1dG8gQ29u
dGFpbmVyUXVlcnlFdmFsdWF0b3I6OmZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dEZvclF1ZXJ5KGNv
bnN0IENROjpDb250YWluCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWNvbnRhaW5l
ci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHQgeyB9OworICAgICAgICByZXR1cm4gTVE6OkZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCB7IG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKSB9OwogCiAgICAgYXV0byYgcmVuZGVyZXIgPSAqY29udGFpbmVy
LT5yZW5kZXJlcigpOwogCiAgICAgcmV0dXJuIE1ROjpGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQg
eworICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCksCiAgICAgICAgIENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEgeyByZW5kZXJlci5zdHlsZSgpLCBtX2VsZW1lbnQtPmRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsICZyZW5kZXJlci52aWV3KCkg
fSwKICAgICAgICAgJnJlbmRlcmVyCiAgICAgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>