<?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>11436</bug_id>
          
          <creation_ts>2006-10-27 11:10:51 -0700</creation_ts>
          <short_desc>KCanvas rework - Part I</short_desc>
          <delta_ts>2006-10-31 04:41:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49285</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:10:51 -0700</bug_when>
    <thetext>There is no need for KCanvas in WebKit anymore. As long-term
solution it has to die, and the needed functionality should be merged
into platform/ code.

In this first patch chunk, I&apos;ll concentrate on moving resources from kcanvas/
into a new directory platform/graphics. Resources previously living in kcanvas/device/quartz
are moved to platform/graphics/quartz (same for the Qt device).

I tried to keep source-code differences low. For instance you&apos;ll notice the
virtual createResource() function in the KRenderingDevice (Qt/Quartz) is not
needed anymore, as in platform/graphics we don&apos;t have the class hierarchy
&quot;KCanvasMaskerQuartz inherits from KCanvasMasker&quot; anymore, but instead
have one single GraphicsResourceMasker file, which just leaves out implementations
of certain functions (ie. applyMask()) and leaves that to the platform specific code.
So this concept is identical to the rest of platform/ now.

In an upcoming patch, these creation stuff will be cleaned up:
- remove createResource() from KRenderingDevice, and just create the instances
   of the needed objects directly in the SVG* classes
- adapt the last resource(s): KCanvasFilter to the new concept
   - split the dozen of classes up into pieces (the general one-file-by-class rule)

The real aim is to kill KRenderingDevice/KRenderingDeviceContext and integrate
within GraphicsContext - that will make SVG much more &quot;integrated&quot; into WebKit.

Uploading patches soon, as it&apos;s quite large I&apos;ll split up into some parts. I am aware
the general rule is to split up large patches into several seperated bug reports, though
these chunks aren&apos;t meant to be commited so far. Once they are discussed/reviewed
I&apos;ll create a final patch concating all the chunk patches, including ChangeLogs, which
can be commited in one-shot. I hope this way is acceptable.

Cheers, Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49287</commentid>
    <comment_count>1</comment_count>
      <attachid>11245</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:28:42 -0700</bug_when>
    <thetext>Created attachment 11245
Chunk #1: kcanvas-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49288</commentid>
    <comment_count>2</comment_count>
      <attachid>11246</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:30:16 -0700</bug_when>
    <thetext>Created attachment 11246
Chunk #2: kcanvas-qt-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49289</commentid>
    <comment_count>3</comment_count>
      <attachid>11247</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:31:02 -0700</bug_when>
    <thetext>Created attachment 11247
Chunk #3: kcanvas-quartz-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49290</commentid>
    <comment_count>4</comment_count>
      <attachid>11248</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:31:50 -0700</bug_when>
    <thetext>Created attachment 11248
Chunk #4: platform-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49291</commentid>
    <comment_count>5</comment_count>
      <attachid>11249</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:32:39 -0700</bug_when>
    <thetext>Created attachment 11249
Chunk #5: platform-qt-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49292</commentid>
    <comment_count>6</comment_count>
      <attachid>11250</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:33:23 -0700</bug_when>
    <thetext>Created attachment 11250
Chunk #6: platform-quartz-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49293</commentid>
    <comment_count>7</comment_count>
      <attachid>11251</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:34:42 -0700</bug_when>
    <thetext>Created attachment 11251
Chunk #7: ksvg-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49294</commentid>
    <comment_count>8</comment_count>
      <attachid>11252</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:35:44 -0700</bug_when>
    <thetext>Created attachment 11252
Chunk #8: rendering-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49295</commentid>
    <comment_count>9</comment_count>
      <attachid>11253</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:37:19 -0700</bug_when>
    <thetext>Created attachment 11253
Chunk #9: build-system-changes.diff, Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49296</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-27 11:38:30 -0700</bug_when>
    <thetext>Sorry for the patch flood, though I used a consisten naming scheme:
Chunk #N - patch-name.diff, Initial Patch

any new chunk will be named &quot;Updated patch I&quot; / &quot;Updated patch II&quot; etc.. :-)
In case new patches are needed :-)

Thanks a lot for looking into this.
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48527</commentid>
    <comment_count>11</comment_count>
      <attachid>11277</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-29 14:17:13 -0800</bug_when>
    <thetext>Created attachment 11277
Final patch including ChangeLogs

No LayoutTests broken. No new leaks introduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48530</commentid>
    <comment_count>12</comment_count>
      <attachid>11253</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2006-10-29 14:51:24 -0800</bug_when>
    <thetext>Comment on attachment 11253
Chunk #9: build-system-changes.diff, Initial patch

If we&apos;re moving things out of platform and into graphics, we need to do it for all platforms. I&apos;d also want Darin and/or Maciej to take a look at it before this gets landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48509</commentid>
    <comment_count>13</comment_count>
      <attachid>11291</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-30 16:27:32 -0800</bug_when>
    <thetext>Created attachment 11291
Updated final patch

Incorporated Darin&apos;s comments from private mail exchange.
Location and file names changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48411</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-10-31 04:41:42 -0800</bug_when>
    <thetext>Landed by Oliver in r17647.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11245</attachid>
            <date>2006-10-27 11:28:42 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #1: kcanvas-changes.diff, Initial patch</desc>
            <filename>kcanvas-changes.diff</filename>
            <type>text/plain</type>
            <size>34689</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2Fu
dmFzSW1hZ2UuaAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL0tDYW52YXNJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICAgICAgICAgICAgICAg
ICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpYy5zZWlkZWxAa2RlbWFpbC5uZXQ+Ci0KLSAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2lmbmRlZiBLQ2FudmFzSW1hZ2VfSAot
I2RlZmluZSBLQ2FudmFzSW1hZ2VfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJL
Q2FudmFzUmVzb3VyY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2U7Ci0K
LWNsYXNzIEtDYW52YXNJbWFnZSA6IHB1YmxpYyBLQ2FudmFzUmVzb3VyY2UKLXsKLXB1YmxpYzoK
LSAgICBLQ2FudmFzSW1hZ2UoKSB7IH07Ci0gICAgdmlydHVhbCB+S0NhbnZhc0ltYWdlKCkgeyB9
OwotCi0gICAgdmlydHVhbCB2b2lkIGluaXQoY29uc3QgSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGluaXQoSW50U2l6ZSkgPSAwOwotCi0gICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSA9
IDA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCi0KSW5kZXg6IGtj
YW52YXMvS0NhbnZhc01hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc01hc2tl
ci5oCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvS0NhbnZhc01hc2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc01hc2tlcl9ICi0jZGVmaW5lIEtD
YW52YXNNYXNrZXJfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJLQ2FudmFzUmVz
b3VyY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUZXh0U3RyZWFtOwotY2xh
c3MgS0NhbnZhc0ltYWdlOwotCi1jbGFzcyBLQ2FudmFzTWFza2VyIDogcHVibGljIEtDYW52YXNS
ZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNNYXNrZXIoKTsKLSAgICB2aXJ0dWFsIH5L
Q2FudmFzTWFza2VyKCk7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzTWFza2VyKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0TWFzayhLQ2FudmFzSW1hZ2UqKTsKLSAgICBL
Q2FudmFzSW1hZ2UqIG1hc2soKSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlNYXNrKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0
ID0gMDsKLQotICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYpIGNvbnN0OyAKLXByb3RlY3RlZDoKLSAgICBLQ2FudmFzSW1hZ2UqIG1fbWFzazsKLX07Ci0K
LUtDYW52YXNNYXNrZXIqIGdldE1hc2tlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBrY2FudmFzL0tDYW52YXNSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9LQ2FudmFzUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMv
S0NhbnZhc1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNWR19TVVBQT1JUCi0jaW5jbHVkZSAiS0NhbnZhc1Jlc291
cmNlLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIktSZW5kZXJpbmdQYWlu
dFNlcnZlci5oIgotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBL
Q2FudmFzUmVzb3VyY2UmIHIpIAoteyAKLSAgICByZXR1cm4gci5leHRlcm5hbFJlcHJlc2VudGF0
aW9uKHRzKTsgCi19Ci0KLUtDYW52YXNSZXNvdXJjZTo6S0NhbnZhc1Jlc291cmNlKCkKLXsKLX0K
LQotS0NhbnZhc1Jlc291cmNlOjp+S0NhbnZhc1Jlc291cmNlKCkKLXsKLX0KLQotdm9pZCBLQ2Fu
dmFzUmVzb3VyY2U6OmFkZENsaWVudChjb25zdCBSZW5kZXJQYXRoICppdGVtKQotewotICAgIGlm
KG1fY2xpZW50cy5maW5kKGl0ZW0pICE9IG1fY2xpZW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jbGllbnRzLmFwcGVuZChpdGVtKTsKLX0KLQotY29uc3QgUmVuZGVyUGF0aExp
c3QgJktDYW52YXNSZXNvdXJjZTo6Y2xpZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xp
ZW50czsKLX0KLQotdm9pZCBLQ2FudmFzUmVzb3VyY2U6OmludmFsaWRhdGUoKQotewotICAgIFJl
bmRlclBhdGhMaXN0OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9jbGllbnRzLmJlZ2luKCk7Ci0gICAg
UmVuZGVyUGF0aExpc3Q6OkNvbnN0SXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVuZCgpOwotCi0g
ICAgZm9yKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBjb25zdF9jYXN0PFJlbmRlclBhdGgq
PigqaXQpLT5yZXBhaW50KCk7Ci19Ci0KLVN0cmluZyBLQ2FudmFzUmVzb3VyY2U6OmlkSW5SZWdp
c3RyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVnaXN0cnlJZDsKLX0KLQotdm9pZCBLQ2Fu
dmFzUmVzb3VyY2U6OnNldElkSW5SZWdpc3RyeShjb25zdCBTdHJpbmcmIG5ld0lkKQotewotICAg
IG1fcmVnaXN0cnlJZCA9IG5ld0lkOwotfSAKLQotVGV4dFN0cmVhbSYgS0NhbnZhc1Jlc291cmNl
OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHJl
dHVybiB0czsKLX0KLQotS0NhbnZhc1Jlc291cmNlKiBnZXRSZXNvdXJjZUJ5SWQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQotewotICAgIGlmIChpZC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEVsZW1lbnQgKmVsZW1lbnQgPSBkb2N1bWVudC0+
Z2V0RWxlbWVudEJ5SWQoaWQpOwotICAgIFNWR0VsZW1lbnQgKnN2Z0VsZW1lbnQgPSBzdmdfZHlu
YW1pY19jYXN0KGVsZW1lbnQpOwotICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQtPmlz
U3R5bGVkKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4o
c3ZnRWxlbWVudCktPmNhbnZhc1Jlc291cmNlKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUtSZW5k
ZXJpbmdQYWludFNlcnZlciogZ2V0UGFpbnRTZXJ2ZXJCeUlkKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCkKLXsKLSAgICBLQ2FudmFzUmVzb3VyY2UqIHJlc291cmNl
ID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7Ci0gICAgaWYgKHJlc291cmNlICYmIHJl
c291cmNlLT5pc1BhaW50U2VydmVyKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXIqPihyZXNvdXJjZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQot
Ly8gdmltOnRzPTQ6bm9ldAotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6IGtjYW52YXMv
S0NhbnZhc1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2Uu
aAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc1Jlc291cmNlX0gKLSNkZWZpbmUg
S0NhbnZhc1Jlc291cmNlX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiRGVwcmVj
YXRlZFZhbHVlTGlzdC5oIgotI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJSZW5kZXJQYXRo
LmgiCi0jaW5jbHVkZSAiS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi10eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Y29uc3QgUmVuZGVyUGF0aCo+
IFJlbmRlclBhdGhMaXN0OwotCi1jbGFzcyBUZXh0U3RyZWFtOwotCi10eXBlZGVmIGVudW0KLXsK
LSAgICAvLyBQYWludGluZyBtb2RlCi0gICAgUlNfQ0xJUFBFUiA9IDAsCi0gICAgUlNfTUFSS0VS
ID0gMSwKLSAgICBSU19JTUFHRSA9IDIsCi0gICAgUlNfRklMVEVSID0gMywKLSAgICBSU19NQVNL
RVIgPSA0Ci19IEtDUmVzb3VyY2VUeXBlOwotCi1jbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI7
Ci0KLWNsYXNzIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNSZXNvdXJj
ZSgpOwotICAgIHZpcnR1YWwgfktDYW52YXNSZXNvdXJjZSgpOwotCi0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKTsKLSAgICB2b2lkIGFkZENsaWVudChjb25zdCBSZW5kZXJQYXRoKik7Ci0K
LSAgICBjb25zdCBSZW5kZXJQYXRoTGlzdCAmY2xpZW50cygpIGNvbnN0OwotICAgIAotICAgIFN0
cmluZyBpZEluUmVnaXN0cnkoKSBjb25zdDsKLSAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25z
dCBTdHJpbmcmKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDbGlwcGVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01hc2tlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mKSBjb25zdDsgCi1wcml2YXRlOgotICAgIFJlbmRlclBhdGhMaXN0IG1fY2xp
ZW50czsKLSAgICBTdHJpbmcgbV9yZWdpc3RyeUlkOwotfTsKLQotS0NhbnZhc1Jlc291cmNlKiBn
ZXRSZXNvdXJjZUJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLUtSZW5kZXJp
bmdQYWludFNlcnZlciogZ2V0UGFpbnRTZXJ2ZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEtD
YW52YXNSZXNvdXJjZSYpOwotCi19Ci0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysr
IGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDk0ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52
YXNDbGlwcGVyLmgiCi0KLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSAiS0NhbnZh
c1RyZWVEZWJ1Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCi17Ci0gICAgc3dpdGNoIChydWxl
KSB7Ci0gICAgICAgIGNhc2UgUlVMRV9OT05aRVJPOgotICAgICAgICAgICAgdHMgPDwgIk5PTi1a
RVJPIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgUlVMRV9FVkVOT0REOgotICAgICAgICAgICAgdHMg
PDwgIkVWRU4tT0REIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgS0NDbGlwRGF0YSAmZCkKLXsK
LSAgICB0cyA8PCAiW3dpbmRpbmc9IiA8PCBkLndpbmRSdWxlKCkgPDwgIl0iOwotICAgIGlmIChk
LmJib3hVbml0cykKLSAgICAgICAgdHMgPDwgIiBbYm91bmRpbmcgYm94IG1vZGU9IiA8PCBkLmJi
b3hVbml0cyAgPDwgIl0iOyAgICAKLSAgICB0cyA8PCAiIFtwYXRoPSIgPDwgZC5wYXRoLmRlYnVn
U3RyaW5nKCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKLX0KLQotS0NhbnZhc0NsaXBwZXI6OktD
YW52YXNDbGlwcGVyKCkgOiBLQ2FudmFzUmVzb3VyY2UoKQotewotfQotCi1LQ2FudmFzQ2xpcHBl
cjo6fktDYW52YXNDbGlwcGVyKCkKLXsKLX0KLQotdm9pZCBLQ2FudmFzQ2xpcHBlcjo6cmVzZXRD
bGlwRGF0YSgpCi17Ci0gICAgbV9jbGlwRGF0YS5jbGVhcigpOwotfQotCi12b2lkIEtDYW52YXND
bGlwcGVyOjphZGRDbGlwRGF0YShjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBydWxlLCBib29s
IGJib3hVbml0cykKLXsKLSAgICBtX2NsaXBEYXRhLmFkZFBhdGgocGF0aCwgcnVsZSwgYmJveFVu
aXRzKTsKLX0KLQotS0NDbGlwRGF0YUxpc3QgS0NhbnZhc0NsaXBwZXI6OmNsaXBEYXRhKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9jbGlwRGF0YTsKLX0KLQotVGV4dFN0cmVhbSYgS0NhbnZhc0Ns
aXBwZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0g
ICAgdHMgPDwgIlt0eXBlPUNMSVBQRVJdIjsKLSAgICB0cyA8PCAiIFtjbGlwIGRhdGE9IiA8PCBj
bGlwRGF0YSgpIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLUtDYW52YXNDbGlwcGVyICpn
ZXRDbGlwcGVyQnlJZChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAmaWQp
Ci17Ci0gICAgS0NhbnZhc1Jlc291cmNlICpyZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1
bWVudCwgaWQpOwotICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNDbGlwcGVyKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxLQ2FudmFzQ2xpcHBlcio+KHJlc291cmNlKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0Ci0jZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKLQpJbmRleDoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaAkocmV2aXNpb24gMTczMzUp
CisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgotKi8KLQotI2lmbmRlZiBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lcl9ICi0jZGVmaW5lIEtD
YW52YXNSZXNvdXJjZUxpc3RlbmVyX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi1jbGFzcyBLQ2Fu
dmFzUmVzb3VyY2VMaXN0ZW5lcgotewotcHVibGljOgotICAgIEtDYW52YXNSZXNvdXJjZUxpc3Rl
bmVyKCkgeyB9Ci0gICAgdmlydHVhbCB+S0NhbnZhc1Jlc291cmNlTGlzdGVuZXIoKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZU5vdGlmaWNhdGlvbigpIGNvbnN0ID0gMDsKLX07Ci0K
LSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL0tDYW52YXND
bGlwcGVyLmgJKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9LQ2FudmFzQ2xpcHBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc0NsaXBwZXJfaAotI2Rl
ZmluZSBLQ2FudmFzQ2xpcHBlcl9oCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLQotI2luY2x1ZGUgIktD
YW52YXNSZXNvdXJjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgRGVwcmVj
YXRlZFZhbHVlTGlzdDxjb25zdCBSZW5kZXJQYXRoKj4gUmVuZGVyUGF0aExpc3Q7Ci0KLWNsYXNz
IFRleHRTdHJlYW07Ci0KLXN0cnVjdCBLQ0NsaXBEYXRhCi17Ci0gICAgV2luZFJ1bGUgd2luZFJ1
bGUoKSBjb25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9Ci0gICAgV2luZFJ1bGUgbV93aW5kUnVs
ZTsKLSAgICBib29sIGJib3hVbml0cyA6IDE7Ci0gICAgUGF0aCBwYXRoOwotfTsKLQotY2xhc3Mg
S0NDbGlwRGF0YUxpc3QgOiBwdWJsaWMgRGVwcmVjYXRlZFZhbHVlTGlzdDxLQ0NsaXBEYXRhPgot
ewotcHVibGljOgotICAgIEtDQ2xpcERhdGFMaXN0KCkgeyB9Ci0KLSAgICBpbmxpbmUgdm9pZCBh
ZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGhEYXRhLCBXaW5kUnVsZSB3aW5kUnVsZSwgYm9vbCBiYm94
VW5pdHMpCi0gICAgewotICAgICAgICBLQ0NsaXBEYXRhIGNsaXBEYXRhOwotICAgICAgICBjbGlw
RGF0YS5iYm94VW5pdHMgPSBiYm94VW5pdHM7Ci0gICAgICAgIGNsaXBEYXRhLm1fd2luZFJ1bGUg
PSB3aW5kUnVsZTsKLSAgICAgICAgY2xpcERhdGEucGF0aCA9IHBhdGhEYXRhOwotICAgICAgICBh
cHBlbmQoY2xpcERhdGEpOwotICAgIH0KLX07Ci0KLWNsYXNzIEtDYW52YXNDbGlwcGVyIDogcHVi
bGljIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNDbGlwcGVyKCk7Ci0g
ICAgdmlydHVhbCB+S0NhbnZhc0NsaXBwZXIoKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXND
bGlwcGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdm9pZCByZXNldENsaXBEYXRh
KCk7Ci0gICAgdm9pZCBhZGRDbGlwRGF0YShjb25zdCBQYXRoJiwgV2luZFJ1bGUsIGJvb2wgYmJv
eFVuaXRzKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gpIGNvbnN0ID0gMDsKLQotICAgIEtDQ2xpcERhdGFMaXN0IGNsaXBEYXRh
KCkgY29uc3Q7Ci0KLSAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsgCi1wcm90ZWN0ZWQ6Ci0gICAgS0NDbGlwRGF0YUxpc3QgbV9jbGlwRGF0
YTsKLX07Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEtDQ2xpcERhdGEmKTsK
LQotS0NhbnZhc0NsaXBwZXIqIGdldENsaXBwZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKLQotLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDoga2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtj
YW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwx
MSBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiS0NhbnZhc1RyZWVEZWJ1Zy5oIgog
CisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgotI2luY2x1ZGUgIktDYW52
YXNDbGlwcGVyLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50
U2VydmVyUGF0dGVybi5oIgpAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBTVkdTdHlsZWRFbGVtZW50ICpzdHlsZWQgPSBzdGF0aWNfY2FzdDxTVkdT
dHlsZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCk7Ci0gICAgICAgIEtDYW52YXNSZXNvdXJjZSAqcmVz
b3VyY2UgPSBzdHlsZWQtPmNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIEdyYXBoaWNzUmVzb3Vy
Y2UgKnJlc291cmNlID0gc3R5bGVkLT5jYW52YXNSZXNvdXJjZSgpOwogICAgICAgICBpZiAoIXJl
c291cmNlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApJbmRleDoga2NhbnZhcy9L
Q2FudmFzRmlsdGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5j
cHAJKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDExICs5MCwxMSBAQAogICAgIHJldHVybiB0czsKIH0KIAotS0NhbnZh
c0ZpbHRlciAqZ2V0RmlsdGVyQnlJZChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyAmaWQpCitQYXNzUmVmUHRyPEtDYW52YXNGaWx0ZXI+IGdldEZpbHRlckJ5SWQoRG9jdW1l
bnQgKmRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcgJmlkKQogewotICAgIEtDYW52YXNSZXNv
dXJjZSAqcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlkKTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQs
IGlkKTsKICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzRmlsdGVyKCkpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxLQ2FudmFzRmlsdGVyKj4ocmVzb3VyY2UpOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZpbHRlcio+KHJlc291cmNlLmdldCgpKTsKICAgICBy
ZXR1cm4gMDsKIH0KIApJbmRleDoga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDExIEBACiAjZGVm
aW5lIEtDYW52YXNGaWx0ZXJzX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiS0Nh
bnZhc1Jlc291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZS5oIgogCiAjaWZkZWYgX19PQkpDX18K
IEBjbGFzcyBDSUZpbHRlcjsKQEAgLTM1LDcgKzM5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisjaWYgUExBVEZPUk0oTUFDKQogY2xhc3MgS0NhbnZhc0ZpbHRlclF1YXJ0ejsKKyNlbmRp
ZgogCiAvLyBFbnVtZXJhdGlvbnMKIHR5cGVkZWYgZW51bSB7CkBAIC05Niw3ICsxMDIsNyBAQAog
Y2xhc3MgS0NhbnZhc0ZpbHRlckVmZmVjdDsKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2U7CiAKLWNs
YXNzIEtDYW52YXNGaWx0ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlIHsKK2NsYXNzIEtDYW52
YXNGaWx0ZXIgOiBwdWJsaWMgR3JhcGhpY3NSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgS0NhbnZh
c0ZpbHRlcigpIHsgfQogICAgIHZpcnR1YWwgfktDYW52YXNGaWx0ZXIoKSB7IH0KQEAgLTEyOSw3
ICsxMzUsNyBAQAogICAgIGJvb2wgbV9lZmZlY3RCQm94TW9kZTsKIH07CiAKLUtDYW52YXNGaWx0
ZXIqIGdldEZpbHRlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKK1Bhc3NS
ZWZQdHI8S0NhbnZhc0ZpbHRlcj4gZ2V0RmlsdGVyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogCiBjbGFzcyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKQEAgLTE0
OCw3ICsxNTQsNyBAQAogICAgIFN0cmluZyByZXN1bHQoKSBjb25zdDsKICAgICB2b2lkIHNldFJl
c3VsdChjb25zdCBTdHJpbmcmKTsKIAotI2lmIF9fQVBQTEVfXworI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6Kikg
Y29uc3QgPSAwOwogI2VuZGlmCiAKSW5kZXg6IGtjYW52YXMvS0NhbnZhc01hcmtlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzTWFya2VyLmNwcAkocmV2aXNpb24gMTczMzUpCisr
KyBrY2FudmFzL0tDYW52YXNNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1MyArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg
UGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJLQ2Fu
dmFzTWFya2VyLmgiCi0KLSNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotLy8gS0NhbnZhc01hcmtlcgotS0NhbnZhc01hcmtlcjo6S0NhbnZhc01h
cmtlcihSZW5kZXJTVkdDb250YWluZXIqIG1hcmtlcikKLSAgICA6IEtDYW52YXNSZXNvdXJjZSgp
Ci0gICAgLCBtX3JlZlgoMCkKLSAgICAsIG1fcmVmWSgwKQotICAgICwgbV9tYXJrZXIobWFya2Vy
KQotICAgICwgbV91c2VTdHJva2VXaWR0aCh0cnVlKQotewotICAgIHNldEF1dG9BbmdsZSgpOwot
fQotCi1LQ2FudmFzTWFya2VyOjp+S0NhbnZhc01hcmtlcigpCi17Ci19Ci0KLXZvaWQgS0NhbnZh
c01hcmtlcjo6c2V0TWFya2VyKFJlbmRlclNWR0NvbnRhaW5lciogbWFya2VyKQotewotICAgIG1f
bWFya2VyID0gbWFya2VyOwotfQotCi12b2lkIEtDYW52YXNNYXJrZXI6OnNldFJlZihkb3VibGUg
cmVmWCwgZG91YmxlIHJlZlkpCi17Ci0gICAgbV9yZWZYID0gcmVmWDsKLSAgICBtX3JlZlkgPSBy
ZWZZOwotfQotCi1kb3VibGUgS0NhbnZhc01hcmtlcjo6cmVmWCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcmVmWDsKLX0KLQotZG91YmxlIEtDYW52YXNNYXJrZXI6OnJlZlkoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3JlZlk7Ci19Ci0KLXZvaWQgS0NhbnZhc01hcmtlcjo6c2V0QW5nbGUoZmxv
YXQgYW5nbGUpCi17Ci0gICAgbV9hbmdsZSA9IGFuZ2xlOwotfQotCi1mbG9hdCBLQ2FudmFzTWFy
a2VyOjphbmdsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5nbGU7Ci19Ci0KLXZvaWQgS0Nh
bnZhc01hcmtlcjo6c2V0QXV0b0FuZ2xlKCkKLXsKLSAgICBtX2FuZ2xlID0gLTE7Ci19Ci0KLXZv
aWQgS0NhbnZhc01hcmtlcjo6c2V0VXNlU3Ryb2tlV2lkdGgoYm9vbCB1c2VTdHJva2VXaWR0aCkK
LXsKLSAgICBtX3VzZVN0cm9rZVdpZHRoID0gdXNlU3Ryb2tlV2lkdGg7Ci19Ci0KLWJvb2wgS0Nh
bnZhc01hcmtlcjo6dXNlU3Ryb2tlV2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZVN0
cm9rZVdpZHRoOwotfQotCi12b2lkIEtDYW52YXNNYXJrZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHN0cm9rZVdpZHRoLCBkb3VibGUgYW5nbGUpCi17Ci0gICAgaWYgKCFtX21hcmtlcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KTsKLSAgICB0cmFuc2Zvcm0ucm90YXRlKG1fYW5nbGUg
PiAtMSA/IG1fYW5nbGUgOiBhbmdsZSk7Ci0gICAgCi0gICAgLy8gcmVmWCBhbmQgcmVmWSBhcmUg
Z2l2ZW4gaW4gY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0IGVzdGFibGlzaGVk
IGJ5IHRoZSBtYXJrZXIsIHlldCB0aGV5IGFmZmVjdAotICAgIC8vIHRoZSB0cmFuc2xhdGlvbiBw
ZXJmb3JtZWQgb24gdGhlIHZpZXdwb3J0IGl0c2VsZi4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmll
d3BvcnRUcmFuc2Zvcm07Ci0gICAgaWYgKG1fdXNlU3Ryb2tlV2lkdGgpCi0gICAgICAgIHZpZXdw
b3J0VHJhbnNmb3JtLnNjYWxlKHN0cm9rZVdpZHRoLCBzdHJva2VXaWR0aCk7Ci0gICAgaWYgKCFt
X21hcmtlci0+dmlld0JveCgpLmlzRW1wdHkoKSkKLSAgICAgICAgdmlld3BvcnRUcmFuc2Zvcm0g
Kj0gbV9tYXJrZXItPnZpZXdwb3J0VHJhbnNmb3JtKCk7Ci0gICAgZG91YmxlIHJlZlgsIHJlZlk7
Ci0gICAgdmlld3BvcnRUcmFuc2Zvcm0ubWFwKG1fcmVmWCwgbV9yZWZZLCAmcmVmWCwgJnJlZlkp
OwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXJlZlgsIC1yZWZZKTsKLSAgICAKLSAgICBpZiAo
bV91c2VTdHJva2VXaWR0aCkKLSAgICAgICAgdHJhbnNmb3JtLnNjYWxlKHN0cm9rZVdpZHRoLCBz
dHJva2VXaWR0aCk7Ci0gICAgCi0gICAgLy8gRklYTUU6IFBhaW50SW5mbyBzaG91bGQgYmUgcGFz
c2VkIGludG8gdGhpcyBtZXRob2QgaW5zdGVhZCBvZiBiZWluZyBjcmVhdGVkIGhlcmUKLSAgICAv
LyBGSVhNRTogYm91bmRpbmcgYm94IGZyYWN0aW9ucyBhcmUgbG9zdAotICAgIFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvIGluZm8oY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSwgUGFpbnRQ
aGFzZUZvcmVncm91bmQsIDAsIDAsIDApOwotICAgIAotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAg
ICBjb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKLSAgICBtX21hcmtlci0+c2V0RHJhd3ND
b250ZW50cyh0cnVlKTsKLSAgICBtX21hcmtlci0+cGFpbnQoaW5mbywgMCwgMCk7Ci0gICAgbV9t
YXJrZXItPnNldERyYXdzQ29udGVudHMoZmFsc2UpOwotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
LX0KLQotVGV4dFN0cmVhbSYgS0NhbnZhc01hcmtlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9TUFSS0VSXSIKLSAgICAg
ICA8PCAiIFthbmdsZT0iOwotICAgIGlmIChhbmdsZSgpID09IC0xKSAKLSAgICAgICAgdHMgPDwg
ImF1dG8iIDw8ICJdIjsKLSAgICBlbHNlIAotICAgICAgICB0cyA8PCBhbmdsZSgpIDw8ICJdIjsg
ICAgICAgIAotICAgIHRzIDw8ICIgW3JlZiB4PSIgPDwgcmVmWCgpIDw8ICIgeT0iIDw8IHJlZlko
KSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1LQ2FudmFzTWFya2VyICpnZXRNYXJrZXJC
eUlkKERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZpZCkKLXsKLSAgICBL
Q2FudmFzUmVzb3VyY2UgKnJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7
Ci0gICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLT5pc01hcmtlcigpKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc01hcmtlcio+KHJlc291cmNlKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0Ci0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLQpJbmRl
eDoga2NhbnZhcy9LQ2FudmFzTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL0tDYW52
YXNNYXNrZXIuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvS0NhbnZhc01hc2tlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lm
ZGVmIFNWR19TVVBQT1JUCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgotCi0jaW5jbHVkZSAi
S0NhbnZhc0ltYWdlLmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUtDYW52YXNNYXNrZXI6OktDYW52YXNNYXNrZXIoKQotICAgIDogS0NhbnZhc1Jl
c291cmNlKCkKLSAgICAsIG1fbWFzaygwKQotewotfQotCi1LQ2FudmFzTWFza2VyOjp+S0NhbnZh
c01hc2tlcigpCi17Ci0gICAgZGVsZXRlIG1fbWFzazsKLX0KLQotdm9pZCBLQ2FudmFzTWFza2Vy
OjpzZXRNYXNrKEtDYW52YXNJbWFnZSogbWFzaykKLXsKLSAgICBpZiAobV9tYXNrICE9IG1hc2sp
IHsKLSAgICAgICAgZGVsZXRlIG1fbWFzazsKLSAgICAgICAgbV9tYXNrID0gbWFzazsKLSAgICB9
Ci19Ci0KLVRleHRTdHJlYW0mIEtDYW52YXNNYXNrZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMgPDwgIlt0eXBlPU1BU0tFUl0iOwotICAg
IHJldHVybiB0czsKLX0KLQotS0NhbnZhc01hc2tlciogZ2V0TWFza2VyQnlJZChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCi17Ci0gICAgS0NhbnZhc1Jlc291cmNl
KiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOwotICAgIGlmIChyZXNv
dXJjZSAmJiByZXNvdXJjZS0+aXNNYXNrZXIoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEtDYW52YXNNYXNrZXIqPihyZXNvdXJjZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQotLy8g
dmltOnRzPTQ6bm9ldAotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6IGtjYW52YXMvS0Nh
bnZhc01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc01hcmtlci5oCShyZXZp
c2lvbiAxNzMzNSkKKysrIGtjYW52YXMvS0NhbnZhc01hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc01hcmtlcl9ICi0jZGVmaW5lIEtDYW52YXNNYXJr
ZXJfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBLQ2FudmFzTWFya2VyIDogcHVibGljIEtD
YW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNNYXJrZXIoUmVuZGVyU1ZHQ29u
dGFpbmVyKiA9IDApOwotICAgIHZpcnR1YWwgfktDYW52YXNNYXJrZXIoKTsKLSAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2b2lk
IHNldE1hcmtlcihSZW5kZXJTVkdDb250YWluZXIqKTsKLSAgICAKLSAgICB2b2lkIHNldFJlZihk
b3VibGUgcmVmWCwgZG91YmxlIHJlZlkpOwotICAgIGRvdWJsZSByZWZYKCkgY29uc3Q7ICAgIAot
ICAgIGRvdWJsZSByZWZZKCkgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXRBbmdsZShmbG9hdCBh
bmdsZSk7Ci0gICAgdm9pZCBzZXRBdXRvQW5nbGUoKTsKLSAgICBmbG9hdCBhbmdsZSgpIGNvbnN0
OwotCi0gICAgdm9pZCBzZXRVc2VTdHJva2VXaWR0aChib29sIHVzZVN0cm9rZVdpZHRoID0gdHJ1
ZSk7Ci0gICAgYm9vbCB1c2VTdHJva2VXaWR0aCgpIGNvbnN0OwotCi0gICAgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHN0cm9rZVdpZHRoID0gMSwgZG91YmxlIGFuZ2xlID0gMCk7Ci0KLSAgICBUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsgCi0KLXByaXZhdGU6
Ci0gICAgZG91YmxlIG1fcmVmWCwgbV9yZWZZOwotICAgIGZsb2F0IG1fYW5nbGU7Ci0gICAgUmVu
ZGVyU1ZHQ29udGFpbmVyKiBtX21hcmtlcjsKLSAgICBib29sIG1fdXNlU3Ryb2tlV2lkdGg7Ci19
OwotCi1LQ2FudmFzTWFya2VyKiBnZXRNYXJrZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKLQotLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudC5oCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDkgQEAK
ICNkZWZpbmUgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRfSAogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsOCArNjYsOCBAQAogICAgIEFmZmluZVRy
YW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIHZvaWQgc2V0R3JhZGllbnRU
cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgCi0gICAgS0NhbnZhc1Jlc291
cmNlTGlzdGVuZXIqIGxpc3RlbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaXN0ZW5lcihLQ2Fu
dmFzUmVzb3VyY2VMaXN0ZW5lciopOworICAgIEdyYXBoaWNzUmVzb3VyY2VMaXN0ZW5lciogbGlz
dGVuZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldExpc3RlbmVyKEdyYXBoaWNzUmVzb3VyY2VMaXN0
ZW5lciopOwogCiAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJikgY29uc3Q7CiBwcml2YXRlOgpAQCAtNzIsNyArNzUsNyBAQAogICAgIEtDR3JhZGllbnRT
cHJlYWRNZXRob2QgbV9zcHJlYWRNZXRob2Q7CiAgICAgYm9vbCBtX2JvdW5kaW5nQm94TW9kZTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFRyYW5zZm9ybTsKLSAgICBLQ2FudmFzUmVz
b3VyY2VMaXN0ZW5lciogbV9saXN0ZW5lcjsKKyAgICBHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIq
IG1fbGlzdGVuZXI7CiB9OwogCiBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFk
aWVudCA6IHB1YmxpYyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudApJbmRleDoga2NhbnZh
cy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaAkocmV2aXNpb24gMTcz
MzUpCisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMyBAQAogI2RlZmluZSBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJQYXR0ZXJuX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCisjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1Bh
aW50U2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS0NhbnZhc0ltYWdl
OworY2xhc3MgR3JhcGhpY3NSZXNvdXJjZUltYWdlOwogCiBjbGFzcyBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJQYXR0ZXJuIDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlcgogewpAQCAtNDgsMjIg
KzUwLDIyIEBACiAgICAgdm9pZCBzZXRCb3VuZGluZ0JveE1vZGUoYm9vbCBtb2RlID0gdHJ1ZSk7
CiAgICAgCiAgICAgLy8gJ1BhdHRlcm4nIGludGVyZmFjZQotICAgIEtDYW52YXNJbWFnZSogdGls
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VGlsZShLQ2FudmFzSW1hZ2UqKTsKKyAgICBHcmFwaGlj
c1Jlc291cmNlSW1hZ2UqIHRpbGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbGUoR3JhcGhpY3NS
ZXNvdXJjZUltYWdlKik7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKTsKIAotICAgIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqKTsKKyAgICBHcmFw
aGljc1Jlc291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMaXN0
ZW5lcihHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIqKTsKICAgICBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBLQ2Fu
dmFzSW1hZ2UqIG1fdGlsZTsKKyAgICBHcmFwaGljc1Jlc291cmNlSW1hZ2UqIG1fdGlsZTsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX2Ji
b3g7CiAgICAgYm9vbCBtX3VzZUJvdW5kaW5nQm94TW9kZTsKLSAgICBLQ2FudmFzUmVzb3VyY2VM
aXN0ZW5lciogbV9saXN0ZW5lcjsKKyAgICBHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIqIG1fbGlz
dGVuZXI7CiAKIH07CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5o
CShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTIgQEAKICNkZWZpbmUgS1JlbmRlcmlu
Z1BhaW50U2VydmVyX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiS0NhbnZhc1Jl
c291cmNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OworY2xhc3MgUmVuZGVyT2Jq
ZWN0OwogY2xhc3MgUmVuZGVyUGF0aDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVGV4dFN0
cmVhbTsKQEAgLTQ5LDExICs1MCwxMSBAQAogICAgIEFQUExZX1RPX1NUUk9LRSA9IDIKIH07CiAK
LWNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlciA6IHB1YmxpYyBLQ2FudmFzUmVzb3VyY2UKK2Ns
YXNzIEtSZW5kZXJpbmdQYWludFNlcnZlciA6IHB1YmxpYyBHcmFwaGljc1Jlc291cmNlCiB7CiBw
dWJsaWM6CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKCkKLSAgICAgICAgOiBLQ2FudmFzUmVz
b3VyY2UoKQorICAgICAgICA6IEdyYXBoaWNzUmVzb3VyY2UoKQogICAgICAgICAsIG1fYWN0aXZl
Q2xpZW50KDApCiAgICAgICAgICwgbV9wYWludGluZ1RleHQoZmFsc2UpCiAgICAgeyB9CkluZGV4
OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAko
cmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQ
YXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIK
KyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJQYXR0ZXJuLmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKQEAg
LTY0LDEyICs2NCwxMiBAQAogICAgIG1fdXNlQm91bmRpbmdCb3hNb2RlID0gbW9kZTsKIH0KIAot
S0NhbnZhc0ltYWdlKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0aWxlKCkgY29uc3QK
K0dyYXBoaWNzUmVzb3VyY2VJbWFnZSogS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6dGls
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGlsZTsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJQYXR0ZXJuOjpzZXRUaWxlKEtDYW52YXNJbWFnZSogdGlsZSkKK3ZvaWQgS1JlbmRl
cmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0VGlsZShHcmFwaGljc1Jlc291cmNlSW1hZ2UqIHRp
bGUpCiB7CiAgICAgbV90aWxlID0gdGlsZTsKIH0KQEAgLTg5LDEyICs4OSwxMiBAQAogICAgIHJl
dHVybiBQU19QQVRURVJOOwogfQogCi1LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciogS1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVybjo6bGlzdGVuZXIoKSBjb25zdAorR3JhcGhpY3NSZXNvdXJjZUxp
c3RlbmVyKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpsaXN0ZW5lcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fbGlzdGVuZXI7CiB9CiAKLXZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVy
UGF0dGVybjo6c2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKQor
dm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRMaXN0ZW5lcihHcmFwaGljc1Jl
c291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsK
IH0KSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFk
aWVudC5jcHAJKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMTIgKzIyNiwxMiBA
QAogICAgIHJldHVybiBQU19SQURJQUxfR1JBRElFTlQ7CiB9CiAKLUtDYW52YXNSZXNvdXJjZUxp
c3RlbmVyKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6bGlzdGVuZXIoKSBjb25zdAor
R3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6
bGlzdGVuZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpc3RlbmVyOwogfQogCi12b2lkIEtS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VM
aXN0ZW5lciogbGlzdGVuZXIpCit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Ojpz
ZXRMaXN0ZW5lcihHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIG1f
bGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmlu
Z1BhaW50U2VydmVyU29saWQuaAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAjZGVmaW5lIEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkX0gKICNpZmRlZiBTVkdfU1VQ
UE9SVAogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ0RldmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZp
Y2UuaAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgUGF0aDsKKwogLy8gYWthIHdoZXJlIHRvIGRyYXcKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VD
b250ZXh0CiB7CkBAIC00NSw3ICs0OSw3IEBACiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQq
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpID0gMDsKIH07CiAKLWNsYXNzIEtDYW52YXNJbWFnZTsK
K2NsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTsKIGNsYXNzIEtDYW52YXNGaWx0ZXJFZmZlY3Q7
CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlCiB7CkBAIC02MywxMCArNjcsMTAgQEAKICAgICB2aXJ0
dWFsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBwb3BDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2
b2lkIHB1c2hDb250ZXh0KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0Kik7CiAgICAgCi0gICAgdmly
dHVhbCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dEZvckltYWdlKEtDYW52YXNJbWFn
ZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250
ZXh0Rm9ySW1hZ2UoR3JhcGhpY3NSZXNvdXJjZUltYWdlKikgY29uc3QgPSAwOwogCiAgICAgLy8g
Q3JlYXRpb24gdG9vbHMKLSAgICB2aXJ0dWFsIEtDYW52YXNSZXNvdXJjZSogY3JlYXRlUmVzb3Vy
Y2UoY29uc3QgS0NSZXNvdXJjZVR5cGUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEdyYXBoaWNzUmVzb3VyY2U+IGNyZWF0ZVJlc291cmNlKGNvbnN0IEdyYXBoaWNzUmVzb3Vy
Y2VUeXBlJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgS0NhbnZhc0ZpbHRlckVmZmVjdCogY3Jl
YXRlRmlsdGVyRWZmZWN0KGNvbnN0IEtDRmlsdGVyRWZmZWN0VHlwZSYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEtSZW5kZXJpbmdQYWludFNlcnZlciogY3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3Qg
S0NQYWludFNlcnZlclR5cGUmKSBjb25zdCA9IDA7CiAK
</data>
<flag name="review"
          id="3867"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11246</attachid>
            <date>2006-10-27 11:30:16 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #2: kcanvas-qt-changes.diff, Initial patch</desc>
            <filename>kcanvas-qt-changes.diff</filename>
            <type>text/plain</type>
            <size>10549</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50UXQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvZGV2aWNlL3F0L0tS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPFFQb2ludEY+CiAKKyNpbmNs
dWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlUXQuaCIKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVy
blF0LmNwcAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIg
QEAKICNpbmNsdWRlIDxRUG9pbnRGPgogI2luY2x1ZGUgPFFQYWludGVyUGF0aD4KIAorI2luY2x1
ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIktS
ZW5kZXJpbmdEZXZpY2VRdC5oIgogI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgog
I2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5oIgotI2luY2x1ZGUgIktD
YW52YXNJbWFnZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVy
UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmgJ
KHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0NsaXBwZXJRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICAgICAgICAgICAgICAgICAgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgotCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc0NsaXBwZXJRdF9o
Ci0jZGVmaW5lIEtDYW52YXNDbGlwcGVyUXRfaAotCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBLQ2FudmFzQ2xpcHBlclF0IDogcHVi
bGljIEtDYW52YXNDbGlwcGVyIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzQ2xpcHBlclF0KCkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNsaXAoY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVy
UXQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQ
YWludFNlcnZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1
ZGUgPFFQZW4+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KIAorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmlu
Z1BhaW50U2VydmVyUXQuaCIKIApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0Rl
dmljZVF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0Rldmlj
ZVF0LmgJKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0Rl
dmljZVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEwICs3NCwxMCBAQAogCiAgICAgLy8gY29u
dGV4dCBtYW5hZ2VtZW50LgogICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXQqIHF0Q29udGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHRG
b3JJbWFnZShLQ2FudmFzSW1hZ2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0KiBjb250ZXh0Rm9ySW1hZ2UoR3JhcGhpY3NSZXNvdXJjZUltYWdlKikgY29uc3Q7
CiAKICAgICAvLyBSZXNvdXJjZSBjcmVhdGlvbgotICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNl
KiBjcmVhdGVSZXNvdXJjZShjb25zdCBLQ1Jlc291cmNlVHlwZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNlPiBjcmVhdGVSZXNvdXJjZShjb25zdCBHcmFw
aGljc1Jlc291cmNlVHlwZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyKiBjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgS0NhbnZhc0ZpbHRlckVmZmVjdCogY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0
IEtDRmlsdGVyRWZmZWN0VHlwZSYpIGNvbnN0OwogfTsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F0
L0tDYW52YXNDbGlwcGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F0L0tD
YW52YXNDbGlwcGVyUXQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtjYW52YXMvZGV2aWNlL3F0
L0tDYW52YXNDbGlwcGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOCArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0g
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug
LSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlclF0LmgiCi0jaW5jbHVk
ZSAiS1JlbmRlcmluZ0RldmljZVF0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBL
Q2FudmFzQ2xpcHBlclF0OjphcHBseUNsaXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkg
Y29uc3QKLXsKLSAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmlu
Z0RldmljZSgpLT5jdXJyZW50Q29udGV4dCgpOwotICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0
UXQqIHF0Q29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXQqPihj
b250ZXh0KTsKLSAgICBpZiAobV9jbGlwRGF0YS5jb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgY29udGV4dC0+Y2xlYXJQYXRoKCk7Ci0KLSAgICBRUGFpbnRlclBhdGggbmV3UGF0
aDsKLQotICAgIGJvb2wgaGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVzID0gZmFsc2U7Ci0gICAgV2luZFJ1
bGUgY2xpcFJ1bGUgPSBtX2NsaXBEYXRhWzBdLndpbmRSdWxlKCk7Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGludCB4ID0gMDsgeCA8IG1fY2xpcERhdGEuY291bnQoKTsgeCsrKSB7Ci0gICAgICAgIEtD
Q2xpcERhdGEgY2xpcERhdGEgPSBtX2NsaXBEYXRhW3hdOwotICAgICAgICBpZiAoY2xpcERhdGEu
d2luZFJ1bGUoKSAhPSBjbGlwUnVsZSkKLSAgICAgICAgICAgIGhldGVyb2dlbm91c0NsaXBSdWxl
cyA9IHRydWU7Ci0gICAgICAgCi0gICAgICAgIFFQYWludGVyUGF0aCBwYXRoID0gKihjbGlwRGF0
YS5wYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCFuZXdQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIG5ld1BhdGguY2xvc2VTdWJwYXRoKCk7Ci0KLSAgICAgICAgLy8gUmVzcGVjdCBj
bGlwcGluZyB1bml0cy4uLgotICAgICAgICBRTWF0cml4IHRyYW5zZm9ybTsKLQotICAgICAgICBp
ZiAoY2xpcERhdGEuYmJveFVuaXRzKSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KGJvdW5kaW5nQm94LngoKSwgYm91bmRpbmdCb3gueSgpKTsKLSAgICAgICAgICAgIHRyYW5zZm9y
bS5zY2FsZShib3VuZGluZ0JveC53aWR0aCgpLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IGhldGVyb2dlbm91cyBjbGlwIHJ1bGVz
IQotICAgICAgICAvL2NsaXBSdWxlID0gKGNsaXBEYXRhLndpbmRSdWxlKCkgPT0gUlVMRV9FVkVO
T0REID8gUXQ6Ok9kZEV2ZW5GaWxsIDogUXQ6OldpbmRpbmdGaWxsKTsKLQotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHBhdGguZWxlbWVudENvdW50KCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjdXIgPSBwYXRoLmVsZW1lbnRBdChpKTsKLQot
ICAgICAgICAgICAgc3dpdGNoIChjdXIudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgUVBh
aW50ZXJQYXRoOjpNb3ZlVG9FbGVtZW50OgotICAgICAgICAgICAgICAgICAgICBuZXdQYXRoLm1v
dmVUbyhRUG9pbnRGKGN1ci54LCBjdXIueSkgKiB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6TGluZVRvRWxl
bWVudDoKLSAgICAgICAgICAgICAgICAgICAgbmV3UGF0aC5saW5lVG8oUVBvaW50RihjdXIueCwg
Y3VyLnkpICogdHJhbnNmb3JtKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1cnZlVG9FbGVtZW50OgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZj
MSA9IHBhdGguZWxlbWVudEF0KGkgKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBh
aW50ZXJQYXRoOjpFbGVtZW50ICZjMiA9IHBhdGguZWxlbWVudEF0KGkgKyAyKTsKLQotICAgICAg
ICAgICAgICAgICAgICBRX0FTU0VSVChjMS50eXBlID09IFFQYWludGVyUGF0aDo6Q3VydmVUb0Rh
dGFFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzIudHlwZSA9PSBRUGFp
bnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbmV3
UGF0aC5jdWJpY1RvKFFQb2ludEYoY3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFQb2ludEYoYzEueCwgYzEueSkgKiB0cmFuc2Zv
cm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUG9pbnRGKGMyLngsIGMy
LnkpICogdHJhbnNmb3JtKTsKLQotICAgICAgICAgICAgICAgICAgICBpICs9IDI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBj
YXNlIFFQYWludGVyUGF0aDo6Q3VydmVUb0RhdGFFbGVtZW50OgotICAgICAgICAgICAgICAgICAg
ICBRX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fY2xpcERhdGEuY291bnQoKSkgewot
ICAgICAgICAvLyBGSVhNRSEKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFsbG93IGZv
ciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KLSAgICAgICAgLy8gd2Ugd291bGQgaGF2ZSB0byBk
ZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAKLSAgICAgICAgLy8gdG8g
dGhhdCBtYXNrCi0gICAgICAgIC8vIGlmICghQ0dDb250ZXh0SXNQYXRoRW1wdHkoY2dDb250ZXh0
KSkgewotICAgICAgICAgICAgaWYgKGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAg
ICAgICAgICBuZXdQYXRoLnNldEZpbGxSdWxlKFF0OjpPZGRFdmVuRmlsbCk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRGaWxsUnVsZShRdDo6V2luZGluZ0Zp
bGwpOwotICAgICAgICAvLyB9Ci0gICAgfQotCi0gICAgcXRDb250ZXh0LT5wYWludGVyKCkuc2V0
Q2xpcFBhdGgobmV3UGF0aCk7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDoga2Nh
bnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRRdC5jcHAJ
KHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyU29saWRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
IDxRQnJ1c2g+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlUXQu
aCIKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKSW5kZXg6IGtjYW52YXMvZGV2
aWNlL3F0L0tSZW5kZXJpbmdEZXZpY2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZp
Y2UvcXQvS1JlbmRlcmluZ0RldmljZVF0LmNwcAkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFz
L2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4
ICsyNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aFF0LmgiCiAjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS0NhbnZh
c0NsaXBwZXJRdC5oIgotI2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIKKyNpbmNsdWRlICJHcmFw
aGljc1Jlc291cmNlQ2xpcHBlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIu
aCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlUXQuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJTb2xpZFF0LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnRRdC5oIgpAQCAtMTM1LDIzICsxMzUsMjMgQEAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCo+KGN1cnJlbnRDb250ZXh0KCkpOwogfQogCi1LUmVu
ZGVyaW5nRGV2aWNlQ29udGV4dCogS1JlbmRlcmluZ0RldmljZVF0Ojpjb250ZXh0Rm9ySW1hZ2Uo
S0NhbnZhc0ltYWdlKiBpbWFnZSkgY29uc3QKK0tSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBLUmVu
ZGVyaW5nRGV2aWNlUXQ6OmNvbnRleHRGb3JJbWFnZShHcmFwaGljc1Jlc291cmNlSW1hZ2UqIGlt
YWdlKSBjb25zdAogewogICAgIHFEZWJ1ZygiS1JlbmRlcmluZ0RldmljZVF0Ojpjb250ZXh0Rm9y
SW1hZ2UoKSBUT0RPISIpOwogICAgIHJldHVybiAwOwogfQogCiAvLyBSZXNvdXJjZSBjcmVhdGlv
bgotS0NhbnZhc1Jlc291cmNlKiBLUmVuZGVyaW5nRGV2aWNlUXQ6OmNyZWF0ZVJlc291cmNlKGNv
bnN0IEtDUmVzb3VyY2VUeXBlJiB0eXBlKSBjb25zdAorUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291
cmNlPiBLUmVuZGVyaW5nRGV2aWNlUXQ6OmNyZWF0ZVJlc291cmNlKGNvbnN0IEdyYXBoaWNzUmVz
b3VyY2VUeXBlJiB0eXBlKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CiAgICAg
ICAgIGNhc2UgUlNfQ0xJUFBFUjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgS0NhbnZhc0NsaXBw
ZXJRdCgpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljc1Jlc291cmNlQ2xpcHBlcigp
OwogICAgICAgICBjYXNlIFJTX01BUktFUjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgS0NhbnZh
c01hcmtlcigpOyAvLyBVc2UgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4uLgorICAgICAgICAgICAg
cmV0dXJuIG5ldyBHcmFwaGljc1Jlc291cmNlTWFya2VyKCk7IC8vIFVzZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLi4uCiAgICAgICAgIGNhc2UgUlNfSU1BR0U6Ci0gICAgICAgICAgICAvLyByZXR1
cm4gbmV3IEtDYW52YXNJbWFnZVF0KCk7CisgICAgICAgICAgICAvLyByZXR1cm4gbmV3IEdyYXBo
aWNzUmVzb3VyY2VJbWFnZVF0KCk7CiAgICAgICAgIGNhc2UgUlNfRklMVEVSOgogICAgICAgICAg
ICAgLy8gcmV0dXJuIG5ldyBLQ2FudmFzRmlsdGVyUXQoKTsKICAgICAgICAgY2FzZSBSU19NQVNL
RVI6Cg==
</data>
<flag name="review"
          id="3868"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11247</attachid>
            <date>2006-10-27 11:31:02 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #3: kcanvas-quartz-changes.diff, Initial patch</desc>
            <filename>kcanvas-quartz-changes.diff</filename>
            <type>text/plain</type>
            <size>24189</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0JKHJldmlz
aW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgogCiAjaW1wb3J0ICJLQ2FudmFzRmlsdGVyUXVhcnR6LmgiCi0jaW1wb3J0ICJLQ2FudmFz
TWFza2VyUXVhcnR6LmgiCiAjaW1wb3J0ICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKLSNpbXBv
cnQgIktDYW52YXNSZXNvdXJjZXNRdWFydHouaCIKICNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VR
dWFydHouaCIKICNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKICNpbXBvcnQgIlJlbmRlclBhdGgu
aCIKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzTWFza2VyUXVhcnR6LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHouaAko
cmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01hc2tlclF1
YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAg
ICAgICAgICAgICAgIDIwMDUsIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9y
Zz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgIktDYW52YXNNYXNrZXIuaCIKLSNpbmNsdWRlICJLQ2FudmFz
SW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBLQ2FudmFzTWFza2VyUXVh
cnR6IDogcHVibGljIEtDYW52YXNNYXNrZXIgewotcHVibGljOgotICAgIEtDYW52YXNNYXNrZXJR
dWFydHooKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlNYXNrKGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OwotfTsKLQotfQpJbmRleDoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JKHJldmlzaW9uIDE3MzM1KQor
Kysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI1LDE1ICsyNSwxNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lmgi
CiAKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIKKyNpbXBvcnQgIkdyYXBoaWNzUmVzb3Vy
Y2VDbGlwcGVyLmgiCisjaW1wb3J0ICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKKyNpbXBvcnQg
IkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCIKICNpbXBvcnQgIktDYW52YXNGaWx0ZXJRdWFydHou
aCIKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIKLSNpbXBvcnQgIktDYW52YXNSZXNv
dXJjZXNRdWFydHouaCIKKyNpbXBvcnQgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKICNpbXBv
cnQgIktSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5oIgpAQCAtMTE4LDEzICsxMjAsMTMgQEAKICAgICByZXR1
cm4gcXVhcnR6Q29udGV4dCgpLT5jZ0NvbnRleHQoKTsKIH0KIAotS1JlbmRlcmluZ0RldmljZUNv
bnRleHQqIEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNvbnRleHRGb3JJbWFnZShLQ2FudmFzSW1h
Z2UgKmltYWdlKSBjb25zdAorS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHo6OmNvbnRleHRGb3JJbWFnZShHcmFwaGljc1Jlc291cmNlSW1hZ2UgKmltYWdlKSBj
b25zdAogewotICAgIEtDYW52YXNJbWFnZVF1YXJ0eiogcXVhcnR6SW1hZ2UgPSBzdGF0aWNfY2Fz
dDxLQ2FudmFzSW1hZ2VRdWFydHoqPihpbWFnZSk7CisgICAgR3JhcGhpY3NSZXNvdXJjZUltYWdl
KiBxdWFydHpJbWFnZSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzUmVzb3VyY2VJbWFnZSo+KGltYWdl
KTsKICAgICBDR0xheWVyUmVmIGNnTGF5ZXIgPSBxdWFydHpJbWFnZS0+Y2dMYXllcigpOwogICAg
IGlmICghY2dMYXllcikgewogICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgbm90IGdldCBiYWNr
IGEgbGF5ZXIgaWYgdGhpcyBpcyBhIGxvYWRlZCBpbWFnZQotICAgICAgICAvLyBtYXliZSB0aGlz
IGxvZ2ljIHNob3VsZCBnbyBpbnRvIEtDYW52YXNJbWFnZT8KKyAgICAgICAgLy8gbWF5YmUgdGhp
cyBsb2dpYyBzaG91bGQgZ28gaW50byBHcmFwaGljc1Jlc291cmNlSW1hZ2U/CiAgICAgICAgIGNn
TGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY3VycmVudENHQ29udGV4dCgpLCBDR1Np
emUoaW1hZ2UtPnNpemUoKSArIEludFNpemUoMSwxKSksIE5VTEwpOyAgLy8gRklYTUUgKyAxIGlz
IGEgaGFjawogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNvbXBvc2l0ZSB0aGUgb3JpZ2lu
YWwgaW1hZ2Ugb250byB0aGUgbGF5ZXIuLi4KICAgICAgICAgcXVhcnR6SW1hZ2UtPnNldENHTGF5
ZXIoY2dMYXllcik7CkBAIC0xNTYsMTkgKzE1OCwxOSBAQAogICAgIHJldHVybiBuZXdTZXJ2ZXI7
CiB9CiAKLUtDYW52YXNSZXNvdXJjZSAqS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6Y3JlYXRlUmVz
b3VyY2UoY29uc3QgS0NSZXNvdXJjZVR5cGUmIHR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEdyYXBo
aWNzUmVzb3VyY2U+IEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNyZWF0ZVJlc291cmNlKGNvbnN0
IEdyYXBoaWNzUmVzb3VyY2VUeXBlJiB0eXBlKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgUlNfQ0xJUFBFUjoKLSAgICAgICAgcmV0dXJuIG5ldyBLQ2FudmFzQ2xpcHBl
clF1YXJ0eigpOworICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKCk7
CiAgICAgY2FzZSBSU19NQVJLRVI6Ci0gICAgICAgIHJldHVybiBuZXcgS0NhbnZhc01hcmtlcigp
OworICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIoKTsKICAgICBjYXNl
IFJTX0lNQUdFOgotICAgICAgICByZXR1cm4gbmV3IEtDYW52YXNJbWFnZVF1YXJ0eigpOworICAg
ICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VJbWFnZSgpOwogICAgIGNhc2UgUlNfRklM
VEVSOgogICAgICAgICByZXR1cm4gbmV3IEtDYW52YXNGaWx0ZXJRdWFydHooKTsKICAgICBjYXNl
IFJTX01BU0tFUjoKLSAgICAgICAgcmV0dXJuIG5ldyBLQ2FudmFzTWFza2VyUXVhcnR6KCk7Cisg
ICAgICAgIHJldHVybiBuZXcgR3JhcGhpY3NSZXNvdXJjZU1hc2tlcigpOwogICAgIH0KICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcmVzb3VyY2Ugb2YgdHlwZTogJWkiLCB0eXBlKTsK
ICAgICByZXR1cm4gMDsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tS
ZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5tbQkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFz
L2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxMCArMjcsMTIgQEAKIAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRl
ZiBTVkdfU1VQUE9SVAorI2ltcG9ydCAiR3JhcGhpY3NSZXNvdXJjZUltYWdlLmgiCiAjaW1wb3J0
ICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaCIKKyNpbXBvcnQgIlJlbmRlclBhdGguaCIK
ICNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKLSNpbXBvcnQgIktDYW52YXNSZXNvdXJjZXNRdWFy
dHouaCIKICNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKIAogI2ltcG9ydCAiS0Nh
bnZhc1JlbmRlcmluZ1N0eWxlLmgiCkBAIC0xMzMsNyArMTM1LDcgQEAKIAogdm9pZCBwYXR0ZXJu
Q2FsbGJhY2sodm9pZCAqaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAgQ0dMYXll
clJlZiBsYXllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8S0NhbnZhc0ltYWdlUXVhcnR6Kj4oaW5mbykt
PmNnTGF5ZXIoKTsKKyAgICBDR0xheWVyUmVmIGxheWVyID0gcmVpbnRlcnByZXRfY2FzdDxHcmFw
aGljc1Jlc291cmNlSW1hZ2UqPihpbmZvKS0+Y2dMYXllcigpOwogICAgIENHQ29udGV4dERyYXdM
YXllckF0UG9pbnQoY29udGV4dCwgQ0dQb2ludFplcm8sIGxheWVyKTsKIH0KIApAQCAtMTU1LDcg
KzE1Nyw3IEBACiAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHoqIHF1YXJ0ekNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eio+KHJlbmRlcmlu
Z0NvbnRleHQpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6Q29udGV4dC0+Y2dD
b250ZXh0KCk7CiAKLSAgICBLQ2FudmFzSW1hZ2UqIGNlbGwgPSB0aWxlKCk7CisgICAgR3JhcGhp
Y3NSZXNvdXJjZUltYWdlKiBjZWxsID0gdGlsZSgpOwogICAgIGlmICghY2VsbCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9y
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5t
bQkocmV2aXNpb24gMTczMzUpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9y
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogI2ltcG9ydCAiUXVhcnR6U3Vw
cG9ydC5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktDYW52YXNS
ZXNvdXJjZXNRdWFydHouaCIKICNpbXBvcnQgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgorI2lt
cG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgInd0Zi9Bc3NlcnRpb25zLmgiCiAKICNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHov
S0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9x
dWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQkocmV2aXNpb24gMTczMzUpCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAgICAgMjAwNSBB
bGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1
YXJ0ei5oIgotCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktDYW52YXNG
aWx0ZXJRdWFydHouaCIKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIKLSNpbXBvcnQg
IktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKLSNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEtDYW52YXNDbGlwcGVyUXVhcnR6OjphcHBseUNs
aXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKLXsKLSAgICBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4
dCgpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dFF1YXJ0eio+KGNvbnRleHQpLT5jZ0NvbnRleHQoKTsKLSAgICBpZiAobV9j
bGlwRGF0YS5jb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQk9PTCBoZXRlcm9n
ZW5vdXNDbGlwUnVsZXMgPSBOTzsKLSAgICBXaW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGFb
MF0ud2luZFJ1bGUoKTsKLQotICAgIGNvbnRleHQtPmNsZWFyUGF0aCgpOwotCi0gICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gYmJveFRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZU1hcEJldHdl
ZW5SZWN0cyhDR1JlY3RNYWtlKDAsMCwxLDEpLCBDR1JlY3QoYm91bmRpbmdCb3gpKTsKLQotICAg
IGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7IHgrKykgewotICAg
ICAgICBLQ0NsaXBEYXRhIGRhdGEgPSBtX2NsaXBEYXRhW3hdOwotICAgICAgICBpZiAoZGF0YS53
aW5kUnVsZSgpICE9IGNsaXBSdWxlKQotICAgICAgICAgICAgaGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVz
ID0gWUVTOwotICAgICAgICAKLSAgICAgICAgQ0dQYXRoUmVmIGNsaXBQYXRoID0gZGF0YS5wYXRo
LnBsYXRmb3JtUGF0aCgpOwotCi0gICAgICAgIGlmIChkYXRhLmJib3hVbml0cykgewotICAgICAg
ICAgICAgQ0dNdXRhYmxlUGF0aFJlZiB0cmFuc2Zvcm1lZFBhdGggPSBDR1BhdGhDcmVhdGVNdXRh
YmxlKCk7Ci0gICAgICAgICAgICBDR1BhdGhBZGRQYXRoKHRyYW5zZm9ybWVkUGF0aCwgJmJib3hU
cmFuc2Zvcm0sIGNsaXBQYXRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250
ZXh0LCB0cmFuc2Zvcm1lZFBhdGgpOwotICAgICAgICAgICAgQ0dQYXRoUmVsZWFzZSh0cmFuc2Zv
cm1lZFBhdGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgo
Y2dDb250ZXh0LCBjbGlwUGF0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2xpcERhdGEuY291bnQo
KSkgewotICAgICAgICAvLyBGSVhNRSEKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFs
bG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KLSAgICAgICAgLy8gd2Ugd291bGQgaGF2
ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAKLSAgICAgICAg
Ly8gdG8gdGhhdCBtYXNrICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAoIUNHQ29udGV4dElz
UGF0aEVtcHR5KGNnQ29udGV4dCkpIHsKLSAgICAgICAgICAgIGlmIChjbGlwUnVsZSA9PSBSVUxF
X0VWRU5PREQpCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNnQ29udGV4dCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjZ0NvbnRleHQp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi1LQ2FudmFzSW1hZ2VRdWFydHo6On5LQ2FudmFzSW1h
Z2VRdWFydHooKQotewotICAgIENHTGF5ZXJSZWxlYXNlKG1fY2dMYXllcik7Ci19Ci0KLUNHTGF5
ZXJSZWYgS0NhbnZhc0ltYWdlUXVhcnR6OjpjZ0xheWVyKCkKLXsKLSAgICByZXR1cm4gbV9jZ0xh
eWVyOwotfQotCi12b2lkIEtDYW52YXNJbWFnZVF1YXJ0ejo6c2V0Q0dMYXllcihDR0xheWVyUmVm
IGxheWVyKQotewotICAgIGlmIChtX2NnTGF5ZXIgIT0gbGF5ZXIpIHsKLSAgICAgICAgQ0dMYXll
clJlbGVhc2UobV9jZ0xheWVyKTsKLSAgICAgICAgbV9jZ0xheWVyID0gQ0dMYXllclJldGFpbihs
YXllcik7Ci0gICAgfQotfQotCi19Ci0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6IGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaAkocmV2aXNpb24g
MTczMzUpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsMTAgQEAKICAgICAvLyBjb250ZXh0IG1hbmFn
ZW1lbnQuCiAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHoqIHF1YXJ0ekNvbnRleHQo
KSBjb25zdDsKICAgICBDR0NvbnRleHRSZWYgY3VycmVudENHQ29udGV4dCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHRGb3JJbWFnZShLQ2FudmFz
SW1hZ2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250
ZXh0Rm9ySW1hZ2UoR3JhcGhpY3NSZXNvdXJjZUltYWdlKikgY29uc3Q7CiAKICAgICAvLyBSZXNv
dXJjZSBjcmVhdGlvbgotICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlICpjcmVhdGVSZXNvdXJj
ZShjb25zdCBLQ1Jlc291cmNlVHlwZSYpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxH
cmFwaGljc1Jlc291cmNlPiBjcmVhdGVSZXNvdXJjZShjb25zdCBHcmFwaGljc1Jlc291cmNlVHlw
ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgS1JlbmRlcmluZ1BhaW50U2VydmVyICpjcmVhdGVQYWlu
dFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgS0Nh
bnZhc0ZpbHRlckVmZmVjdCAqY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IEtDRmlsdGVyRWZmZWN0
VHlwZSYpIGNvbnN0OwogICAgIApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJp
bmdQYWludFNlcnZlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAkocmV2aXNpb24gMTczMzUpCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBL
Q2FudmFzSW1hZ2U7CitjbGFzcyBHcmFwaGljc1Jlc291cmNlSW1hZ2U7CiAKIGNsYXNzIEtSZW5k
ZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlciB7CiBwdWJsaWM6CkBAIC05Myw3ICs5Myw3IEBA
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVzKCk7CiAgICAgQ0dTaGFkaW5n
UmVmIG1fc2hhZGluZ0NhY2hlOwotICAgIG11dGFibGUgS0NhbnZhc0ltYWdlICptX21hc2tJbWFn
ZTsKKyAgICBtdXRhYmxlIEdyYXBoaWNzUmVzb3VyY2VJbWFnZSAqbV9tYXNrSW1hZ2U7CiB9Owog
CiBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0eiA6IHB1Ymxp
YyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0eiwKSW5kZXg6IGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnRRdWFydHoubW0JKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNiArMjcsMTQgQEAKIAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQ
UE9SVAogI2ltcG9ydCAiS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmgiCi0KLSNpbXBvcnQg
IktDYW52YXNJbWFnZS5oIgotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgorI2lt
cG9ydCAiR3JhcGhpY3NSZXNvdXJjZUltYWdlLmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNl
UXVhcnR6LmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaCIKICNpbXBvcnQgIlF1
YXJ0elN1cHBvcnQuaCIKLSNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgotCisjaW1wb3J0ICJSZW5k
ZXJQYXRoLmgiCiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNDYsNyArMjQ0LDcgQEAKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250
ZXh0KTsKICAgICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCByZW5kZXJT
dHlsZSwgcmVuZGVyT2JqZWN0KTsgLy8gRklYTUU6IHRoaXMgc2VlbXMgbGlrZSB0aGUgd3Jvbmcg
cGxhY2UgZm9yIHRoaXMuCiAgICAgICAgIGlmIChzZXJ2ZXItPmlzUGFpbnRpbmdUZXh0KCkpIHsK
LSAgICAgICAgICAgIG1fbWFza0ltYWdlID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ltYWdlKj4ocXVh
cnR6RGV2aWNlLT5jcmVhdGVSZXNvdXJjZShSU19JTUFHRSkpOworICAgICAgICAgICAgbV9tYXNr
SW1hZ2UgPSBzdGF0aWNfY2FzdDxHcmFwaGljc1Jlc291cmNlSW1hZ2UqPihxdWFydHpEZXZpY2Ut
PmNyZWF0ZVJlc291cmNlKFJTX0lNQUdFKS5nZXQoKSk7CiAgICAgICAgICAgICBpbnQgd2lkdGgg
ID0gMjA0ODsKICAgICAgICAgICAgIGludCBoZWlnaHQgPSAyMDQ4OyAvLyBGSVhNRT8/PwogICAg
ICAgICAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI5Miw3
ICsyOTAsNyBAQAogdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dGVh
cmRvd24oY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgKnNlcnZlciwgS1JlbmRl
cmluZ0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAogeyAKICAgICBDR1No
YWRpbmdSZWYgc2hhZGluZyA9IG1fc2hhZGluZ0NhY2hlOwotICAgIEtDYW52YXNJbWFnZSogbWFz
a0ltYWdlID0gbV9tYXNrSW1hZ2U7CisgICAgR3JhcGhpY3NSZXNvdXJjZUltYWdlKiBtYXNrSW1h
Z2UgPSBtX21hc2tJbWFnZTsKICAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6KiBxdWFydHpEZXZp
Y2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Kj4ocmVuZGVyaW5nRGV2aWNl
KCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dD
b250ZXh0KCk7CiAgICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlID0gcmVuZGVyT2JqZWN0LT5z
dHlsZSgpOwpAQCAtMzE1LDcgKzMxMyw3IEBACiAgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYg
Z3JheUNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0
ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlDb2xvclNwYWNlLCBr
Q0dJbWFnZUFscGhhTm9uZSk7CiAgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGdyYXlD
b2xvclNwYWNlKTsKLSAgICAgICAgICAgIEtDYW52YXNJbWFnZVF1YXJ0eiogcU1hc2tJbWFnZSA9
IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZVF1YXJ0eio+KG1hc2tJbWFnZSk7CisgICAgICAgICAg
ICBHcmFwaGljc1Jlc291cmNlSW1hZ2UqIHFNYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxHcmFwaGlj
c1Jlc291cmNlSW1hZ2UqPihtYXNrSW1hZ2UpOwogICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xh
eWVyQXRQb2ludChncmF5c2NhbGVDb250ZXh0LCBDR1BvaW50TWFrZSgwLCAwKSwgcU1hc2tJbWFn
ZS0+Y2dMYXllcigpKTsKICAgICAgICAgICAgIENHSW1hZ2VSZWYgZ3JheXNjYWxlSW1hZ2UgPSBD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShncmF5c2NhbGVDb250ZXh0KTsKICAgICAgICAgICAg
IENHQ29udGV4dENsaXBUb01hc2soY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVp
Z2h0KSwgZ3JheXNjYWxlSW1hZ2UpOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52
YXNNYXNrZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tD
YW52YXNNYXNrZXJRdWFydHoubW0JKHJldmlzaW9uIDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTE3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQWxleGFuZGVyIEtlbGxldHQg
PGx5cGFub3ZAa2RlLm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYg
U1ZHX1NVUFBPUlQKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIKLQotI2ltcG9ydCAi
U1ZHUmVuZGVyU3R5bGUuaCIKLQotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgot
I2ltcG9ydCAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgotI2ltcG9ydCAiUXVhcnR6U3VwcG9y
dC5oIgotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0YXRpYyBDSUltYWdlICphcHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIoQ0lJ
bWFnZSAqaW5wdXRJbWFnZSkKLXsKLSAgICBDSUZpbHRlciAqbHVtaW5hbmNlVG9BbHBoYSA9IFtD
SUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKLSAgICBbbHVtaW5hbmNl
VG9BbHBoYSBzZXREZWZhdWx0c107Ci0gICAgQ0dGbG9hdCBhbHBoYVs0XSA9IHswLjIxMjUsIDAu
NzE1NCwgMC4wNzIxLCAwfTsKLSAgICBDR0Zsb2F0IHplcm9bNF0gPSB7MCwgMCwgMCwgMH07Ci0g
ICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dElt
YWdlIl07ICAKLSAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9y
V2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0UlZlY3RvciJdOwotICAgIFts
dW1pbmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8g
Y291bnQ6NF0gZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgW2x1bWluYW5jZVRvQWxwaGEg
c2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6
QCJpbnB1dEJWZWN0b3IiXTsKLSAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0
b3IgdmVjdG9yV2l0aFZhbHVlczphbHBoYSBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEFWZWN0b3Ii
XTsKLSAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZh
bHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOwotICAgIHJldHVy
biBbbHVtaW5hbmNlVG9BbHBoYSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci19Ci0KLXN0
YXRpYyBDSUltYWdlICphcHBseUV4cGFuZEFscGhhdG9HcmF5c2NhbGVGaWx0ZXIoQ0lJbWFnZSAq
aW5wdXRJbWFnZSkKLXsKLSAgICBDSUZpbHRlciAqYWxwaGFUb0dyYXlzY2FsZSA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKLSAgICBDR0Zsb2F0IHplcm9bNF0g
PSB7MCwgMCwgMCwgMH07Ci0gICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0RGVmYXVsdHNdOwotICAg
IFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFn
ZSJdOwotICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRo
VmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07Ci0gICAgW2FscGhh
VG9HcmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3Vu
dDo0XSBmb3JLZXk6QCJpbnB1dEdWZWN0b3IiXTsKLSAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRW
YWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlu
cHV0QlZlY3RvciJdOwotICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2
ZWN0b3JXaXRoWDowLjAgWTowLjAgWjowLjAgVzoxLjBdIGZvcktleTpAImlucHV0QVZlY3RvciJd
OwotICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDox
LjAgWToxLjAgWjoxLjAgVzowLjBdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOwotICAgIHJl
dHVybiBbYWxwaGFUb0dyYXlzY2FsZSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci19Ci0K
LXN0YXRpYyBDSUltYWdlICp0cmFuc2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKENJSW1hZ2Ug
KmlucHV0SW1hZ2UpCi17Ci0gICAgQ0lGaWx0ZXIgKmJsYWNrQmFja2dyb3VuZCA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29uc3RhbnRDb2xvckdlbmVyYXRvciJdOwotICAgIFtibGFj
a0JhY2tncm91bmQgc2V0VmFsdWU6W0NJQ29sb3IgY29sb3JXaXRoUmVkOjAuMCBncmVlbjowLjAg
Ymx1ZTowLjAgYWxwaGE6MS4wXSBmb3JLZXk6QCJpbnB1dENvbG9yIl07Ci0KLSAgICBDSUZpbHRl
ciAqbGF5ZXJPdmVyQmxhY2sgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92
ZXJDb21wb3NpdGluZyJdOwotICAgIFtsYXllck92ZXJCbGFjayBzZXRWYWx1ZTpbYmxhY2tCYWNr
Z3JvdW5kIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dEJhY2tncm91
bmRJbWFnZSJdOyAgCi0gICAgW2xheWVyT3ZlckJsYWNrIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9y
S2V5OkAiaW5wdXRJbWFnZSJdOyAgCi0KLSAgICBDSUltYWdlICpsdW1pbmFuY2VBbHBoYSA9IGFw
cGx5THVtaW5hbmNlVG9BbHBoYUZpbHRlcihbbGF5ZXJPdmVyQmxhY2sgdmFsdWVGb3JLZXk6QCJv
dXRwdXRJbWFnZSJdKTsKLSAgICBDSUltYWdlICpsdW1pbmFuY2VBc0dyYXlzY2FsZSA9IGFwcGx5
RXhwYW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihsdW1pbmFuY2VBbHBoYSk7Ci0gICAgQ0lJbWFn
ZSAqYWxwaGFBc0dyYXlzY2FsZSA9IGFwcGx5RXhwYW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihp
bnB1dEltYWdlKTsKLQotICAgIENJRmlsdGVyICptdWx0aXBsaWVkR3JheXNjYWxlID0gW0NJRmls
dGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lNdWx0aXBseUNvbXBvc2l0aW5nIl07Ci0gICAgW211bHRp
cGxpZWRHcmF5c2NhbGUgc2V0VmFsdWU6bHVtaW5hbmNlQXNHcmF5c2NhbGUgZm9yS2V5OkAiaW5w
dXRCYWNrZ3JvdW5kSW1hZ2UiXTsgIAotICAgIFttdWx0aXBsaWVkR3JheXNjYWxlIHNldFZhbHVl
OmFscGhhQXNHcmF5c2NhbGUgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOyAgCi0gICAgcmV0dXJuIFtt
dWx0aXBsaWVkR3JheXNjYWxlIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKLX0KLQotdm9p
ZCBLQ2FudmFzTWFza2VyUXVhcnR6OjphcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWFzaykKLSAgICAgICAgcmV0dXJuOwotICAgIC8v
IENyZWF0ZSBncmF5c2NhbGUgYml0bWFwIGNvbnRleHQKLSAgICBpbnQgd2lkdGggPSBtX21hc2st
PnNpemUoKS53aWR0aCgpOwotICAgIGludCBoZWlnaHQgPSBtX21hc2stPnNpemUoKS5oZWlnaHQo
KTsKLSAgICB2b2lkICppbWFnZUJ1ZmZlciA9IGZhc3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOwot
ICAgIENHQ29sb3JTcGFjZVJlZiBncmF5Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZUdyYXkoKTsKLSAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFw
Q29udGV4dENyZWF0ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlD
b2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZSk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShn
cmF5Q29sb3JTcGFjZSk7Ci0gICAgQ0lDb250ZXh0ICpjaUdyYXlzY2FsZUNvbnRleHQgPSBbQ0lD
b250ZXh0IGNvbnRleHRXaXRoQ0dDb250ZXh0OmdyYXlzY2FsZUNvbnRleHQgb3B0aW9uczpuaWxd
OwotCi0gICAgS0NhbnZhc0ltYWdlUXVhcnR6KiBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxLQ2Fu
dmFzSW1hZ2VRdWFydHoqPihtX21hc2spOwotICAgIENJSW1hZ2UgKmdyYXlzY2FsZU1hc2sgPSB0
cmFuc2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKFtDSUltYWdlIGltYWdlV2l0aENHTGF5ZXI6
bWFza0ltYWdlLT5jZ0xheWVyKCldKTsKLSAgICBbY2lHcmF5c2NhbGVDb250ZXh0IGRyYXdJbWFn
ZTpncmF5c2NhbGVNYXNrIGF0UG9pbnQ6Q0dQb2ludFplcm8gZnJvbVJlY3Q6Q0dSZWN0TWFrZSgw
LCAwLCB3aWR0aCwgaGVpZ2h0KV07Ci0KLSAgICBDR0ltYWdlUmVmIGdyYXlzY2FsZUltYWdlID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxlQ29udGV4dCk7Ci0gICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VRdWFydHoqPihy
ZW5kZXJpbmdEZXZpY2UoKSktPmN1cnJlbnRDR0NvbnRleHQoKTsKLSAgICBDR0NvbnRleHRDbGlw
VG9NYXNrKGNnQ29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgZ3JheXNj
YWxlSW1hZ2UpOwotICAgIAotICAgIENHSW1hZ2VSZWxlYXNlKGdyYXlzY2FsZUltYWdlKTsKLSAg
ICBDR0NvbnRleHRSZWxlYXNlKGdyYXlzY2FsZUNvbnRleHQpOwotICAgIGZhc3RGcmVlKGltYWdl
QnVmZmVyKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCShyZXZpc2lvbiAxNzMzNSkK
KysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0
b3I8S0NhbnZhc0ZpbHRlckVmZmVjdCo+IGVuZCA9IG1fZWZmZWN0cy5lbmQoKTsKIAogICAgIHNl
dEltYWdlRm9yTmFtZShpbnB1dEltYWdlLCAiU291cmNlR3JhcGhpYyIpOyAvLyBpbnB1dAorCiAg
ICAgZm9yICg7aXQgIT0gZW5kOyBpdCsrKSB7CiAgICAgICAgIENJRmlsdGVyICpmaWx0ZXIgPSAo
Kml0KS0+Z2V0Q0lGaWx0ZXIodGhpcyk7CiAgICAgICAgIGlmIChmaWx0ZXIpCkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgJKHJldmlzaW9u
IDE3MzM1KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHou
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEtDYW52YXNSZXNvdXJjZXNRdWFydHpfaAotI2RlZmluZSBLQ2FudmFzUmVzb3VyY2Vz
UXVhcnR6X2gKLQotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0KLSNpbmNsdWRlICJLQ2Fu
dmFzSW1hZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKLSNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKLQotdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRS
ZWY7Ci10eXBlZGVmIHN0cnVjdCBDR0xheWVyICpDR0xheWVyUmVmOwotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEtDYW52YXNDbGlwcGVyUXVhcnR6IDogcHVibGljIEtDYW52YXNDbGlw
cGVyIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzQ2xpcHBlclF1YXJ0eigpIHsgfQotICAgIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBseUNsaXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29u
c3Q7Ci19OwotCi1jbGFzcyBLQ2FudmFzSW1hZ2VRdWFydHogOiBwdWJsaWMgS0NhbnZhc0ltYWdl
IHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzSW1hZ2VRdWFydHooKSA6IG1fY2dMYXllcigwKSB7IH0K
LSAgICB+S0NhbnZhc0ltYWdlUXVhcnR6KCk7Ci0gICAgdm9pZCBpbml0KGNvbnN0IEltYWdlJikg
eyB9Ci0gICAgdm9pZCBpbml0KEludFNpemUgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9Ci0gICAg
Ci0gICAgQ0dMYXllclJlZiBjZ0xheWVyKCk7Ci0gICAgdm9pZCBzZXRDR0xheWVyKENHTGF5ZXJS
ZWYgbGF5ZXIpOwotCi0gICAgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAg
Ci1wcml2YXRlOgotICAgIEludFNpemUgbV9zaXplOwotICAgIENHTGF5ZXJSZWYgbV9jZ0xheWVy
OwotfTsKLQotfQotCi0jZW5kaWYK
</data>
<flag name="review"
          id="3869"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11248</attachid>
            <date>2006-10-27 11:31:50 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #4: platform-changes.diff, Initial patch</desc>
            <filename>platform-changes.diff</filename>
            <type>text/plain</type>
            <size>76091</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNzMzNSkKKysrIHBsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIEdyYXBoaWNzQ29udGV4dF9oCi0jZGVmaW5lIEdyYXBoaWNz
Q29udGV4dF9oCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgot
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQZW4uaCIKLSNpbmNsdWRlICJUZXh0RGly
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiVUNoYXIuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIFBMQVRGT1JNKENHKQotdHlwZWRl
ZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwotI2VsaWYgUExBVEZP
Uk0oQ0FJUk8pCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7
Ci0jZWxpZiBQTEFURk9STShRVCkKLWNsYXNzIFFQYWludGVyOwotdHlwZWRlZiBRUGFpbnRlciBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbHNlCi10eXBlZGVmIHZvaWQgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQ7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLXR5cGVkZWYgc3RydWN0
IEhEQ19fKiBIREM7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY29uc3Qg
aW50IGNNaXNzcGVsbGluZ0xpbmVUaGlja25lc3MgPSAzOwotICAgIGNvbnN0IGludCBjTWlzc3Bl
bGxpbmdMaW5lUGF0dGVybldpZHRoID0gNDsKLSAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGlu
ZVBhdHRlcm5HYXBXaWR0aCA9IDE7Ci0KLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci0gICAg
Y2xhc3MgRm9udDsKLSAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlOwotICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKLSAgICBjbGFzcyBLVVJMOwotICAgIGNs
YXNzIFBhdGg7Ci0gICAgY2xhc3MgVGV4dFJ1bjsKLSAgICBjbGFzcyBUZXh0U3R5bGU7Ci0KLSNp
ZmRlZiBTVkdfU1VQUE9SVAotICAgIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OwotI2Vu
ZGlmCi0KLSAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQgOiBOb25jb3B5YWJsZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKTsK
LSAgICAgICAgfkdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgIAotICAgICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7Ci0KLSAgICAgICAgY29uc3Qg
Rm9udCYgZm9udCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEZvbnQoY29uc3QgRm9udCYpOwot
ICAgICAgICAKLSAgICAgICAgY29uc3QgUGVuJiBwZW4oKSBjb25zdDsKLSAgICAgICAgdm9pZCBz
ZXRQZW4oY29uc3QgUGVuJik7Ci0gICAgICAgIHZvaWQgc2V0UGVuKFBlbjo6UGVuU3R5bGUpOwot
ICAgICAgICB2b2lkIHNldFBlbihSR0JBMzIpOwotICAgICAgICAKLSAgICAgICAgQ29sb3IgZmls
bENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7
Ci0KLSAgICAgICAgdm9pZCBzYXZlKCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZSgpOwotICAgICAg
ICAKLSAgICAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQg
ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYpOwotICAgICAgICB2b2lk
IGRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdm9pZCBkcmF3QXJjKGNvbnN0
IEludFJlY3QmLCBmbG9hdCB0aGlja25lc3MsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcGFu
KTsKLSAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiwgYm9vbCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7Ci0KLSAgICAgICAg
dm9pZCBmaWxsUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgQ29sb3ImKTsKLSAgICAgICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lk
IGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBzdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7Ci0KLSAgICAgICAgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgY29uc3QgSW50UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
LSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEs
IC0xKSwKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
cik7Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
Ci0gICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgCi0gICAgICAgICAgICBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IElt
YWdlOjpTdHJldGNoVGlsZSwKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3Zlcik7Ci0KLSAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEludFJlY3QmKTsKLSAg
ICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNp
emUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0
b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCk7Ci0gICAgICAgIHZvaWQgYWRkSW5u
ZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYsIGludCB0aGlja25lc3MpOwotCi0gICAg
ICAgIC8vIEZ1bmN0aW9ucyB0byB3b3JrIGFyb3VuZCBidWdzIGluIGZvY3VzIHJpbmcgY2xpcHBp
bmcgb24gTWFjLgotICAgICAgICB2b2lkIHNldEZvY3VzUmluZ0NsaXAoY29uc3QgSW50UmVjdCYp
OwotICAgICAgICB2b2lkIGNsZWFyRm9jdXNSaW5nQ2xpcCgpOwotCi0gICAgICAgIHZvaWQgZHJh
d1RleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEludFBvaW50Jik7Ci0gICAgICAgIHZvaWQgZHJh
d1RleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgVGV4dFN0eWxlJik7
Ci0gICAgICAgIHZvaWQgZHJhd0hpZ2hsaWdodEZvclRleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEludFBvaW50JiwgaW50IGgsIGNvbnN0IFRleHRTdHlsZSYsIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IpOwotCi0gICAgICAgIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0
IEZsb2F0UmVjdCYpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29u
c3QgSW50UG9pbnQmLCBpbnQgeU9mZnNldCwgaW50IHdpZHRoLCBib29sIHByaW50aW5nKTsKLSAg
ICAgICAgdm9pZCBkcmF3TGluZUZvck1pc3NwZWxsaW5nKGNvbnN0IEludFBvaW50JiwgaW50IHdp
ZHRoKTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldFBhaW50aW5nRGlzYWJsZWQoYm9vbCk7Ci0gICAgICAgIAotICAgICAg
ICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VXBk
YXRpbmdDb250cm9sVGludHMoYm9vbCk7Ci0KLSAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpOwotICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7Ci0KLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgSW50U2l6ZSYsIGludCBibHVyLCBj
b25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7Ci0KLSAgICAgICAgdm9p
ZCBpbml0Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgYWRk
Rm9jdXNSaW5nUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGNsZWFyRm9jdXNSaW5nKCk7Ci0gICAgICAg
IEludFJlY3QgZm9jdXNSaW5nQm91bmRpbmdSZWN0KCk7Ci0KLSAgICAgICAgdm9pZCBzZXRMaW5l
V2lkdGgoZmxvYXQpOwotICAgICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7Ci0gICAgICAg
IHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pOwotICAgICAgICB2b2lkIHNldE1pdGVyTGltaXQo
ZmxvYXQpOwotCi0gICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwotCi0gICAgICAgIHZvaWQg
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKLQotICAgICAgICB2b2lk
IGNsaXAoY29uc3QgUGF0aCYpOwotCi0gICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXpl
Jik7Ci0gICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICAgICAg
dm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAgIEludFBvaW50IG9yaWdp
bigpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBj
b25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7Ci0KLSNpZmRlZiBTVkdfU1VQUE9SVAotICAgICAgICBLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dCogY3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOwotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShXSU4pCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dChIREMpOyAvLyBGSVhNRTogVG8g
YmUgcmVtb3ZlZC4KLSAgICAgICAgSERDIGdldFdpbmRvd3NDb250ZXh0KGJvb2wgc3VwcG9ydEFs
cGhhQmxlbmQgPSBmYWxzZSwgY29uc3QgSW50UmVjdCogPSAwKTsgLy8gVGhlIHBhc3NlZCBpbiBy
ZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZvciBjb21wb3NpdGluZyBpbnNpZGUgdHJh
bnNwYXJlbmN5IGxheWVycy4KLSAgICAgICAgdm9pZCByZWxlYXNlV2luZG93c0NvbnRleHQoSERD
LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gZmFsc2UsIGNvbnN0IEludFJlY3QqID0gMCk7ICAg
IC8vIFRoZSBwYXNzZWQgaW4gSERDIHNob3VsZCBiZSB0aGUgb25lIGhhbmRlZCBiYWNrIGJ5IGdl
dFdpbmRvd3NDb250ZXh0LgotI2VuZGlmCi0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNh
dmVQbGF0Zm9ybVN0YXRlKCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsK
LQotICAgICAgICBpbnQgZm9jdXNSaW5nV2lkdGgoKSBjb25zdDsKLSAgICAgICAgaW50IGZvY3Vz
UmluZ09mZnNldCgpIGNvbnN0OwotICAgICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIGZvY3Vz
UmluZ1JlY3RzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dFByaXZh
dGUqIGNyZWF0ZUdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSopOwot
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIG1fY29tbW9uOwotICAgICAgICBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKLSAgICB9OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHRfaApJbmRleDogcGxhdGZv
cm0vR3JhcGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vR3JhcGhpY3NUeXBl
cy5jcHAJKHJldmlzaW9uIDE3MzM1KQorKysgcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0KLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJhdG9y
TmFtZXNbXSA9IHsKLSAgICAiY2xlYXIiLAotICAgICJjb3B5IiwKLSAgICAic291cmNlLW92ZXIi
LAotICAgICJzb3VyY2UtaW4iLAotICAgICJzb3VyY2Utb3V0IiwKLSAgICAic291cmNlLWF0b3Ai
LAotICAgICJkZXN0aW5hdGlvbi1vdmVyIiwKLSAgICAiZGVzdGluYXRpb24taW4iLAotICAgICJk
ZXN0aW5hdGlvbi1vdXQiLAotICAgICJkZXN0aW5hdGlvbi1hdG9wIiwKLSAgICAieG9yIiwKLSAg
ICAiZGFya2VyIiwKLSAgICAiaGlnaGxpZ2h0IiwKLSAgICAibGlnaHRlciIKLX07Ci1jb25zdCBp
bnQgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IHNpemVvZihjb21wb3NpdGVPcGVyYXRvck5h
bWVzKSAvIHNpemVvZihjb21wb3NpdGVPcGVyYXRvck5hbWVzWzBdKTsKLQotYm9vbCBwYXJzZUNv
bXBvc2l0ZU9wZXJhdG9yKGNvbnN0IFN0cmluZyYgcywgQ29tcG9zaXRlT3BlcmF0b3ImIG9wKQot
ewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lczsgaSsr
KQotICAgICAgICBpZiAocyA9PSBjb21wb3NpdGVPcGVyYXRvck5hbWVzW2ldKSB7Ci0gICAgICAg
ICAgICBvcCA9IHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcg
Y29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQotewotICAgIEFTU0VS
VChvcCA+PSAwKTsKLSAgICBBU1NFUlQob3AgPCBudW1Db21wb3NpdGVPcGVyYXRvck5hbWVzKTsK
LSAgICByZXR1cm4gY29tcG9zaXRlT3BlcmF0b3JOYW1lc1tvcF07Ci19Ci0KLWJvb2wgcGFyc2VM
aW5lQ2FwKGNvbnN0IFN0cmluZyYgcywgTGluZUNhcCYgY2FwKQotewotICAgIGlmIChzID09ICJi
dXR0IikgewotICAgICAgICBjYXAgPSBCdXR0Q2FwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgaWYgKHMgPT0gInJvdW5kIikgewotICAgICAgICBjYXAgPSBSb3VuZENhcDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChzID09ICJzcXVhcmUiKSB7Ci0gICAg
ICAgIGNhcCA9IFNxdWFyZUNhcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIGxpbmVDYXBOYW1lKExpbmVDYXAgY2FwKQotewotICAg
IEFTU0VSVChjYXAgPj0gMCk7Ci0gICAgQVNTRVJUKGNhcCA8IDMpOwotICAgIGNvbnN0IGNoYXIq
IGNvbnN0IG5hbWVzWzNdID0geyAiYnV0dCIsICJyb3VuZCIsICJzcXVhcmUiIH07Ci0gICAgcmV0
dXJuIG5hbWVzW2NhcF07Ci19Ci0KLWJvb2wgcGFyc2VMaW5lSm9pbihjb25zdCBTdHJpbmcmIHMs
IExpbmVKb2luJiBqb2luKQotewotICAgIGlmIChzID09ICJtaXRlciIpIHsKLSAgICAgICAgam9p
biA9IE1pdGVySm9pbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChzID09
ICJyb3VuZCIpIHsKLSAgICAgICAgam9pbiA9IFJvdW5kSm9pbjsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIGlmIChzID09ICJiZXZlbCIpIHsKLSAgICAgICAgam9pbiA9IEJldmVs
Sm9pbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotU3RyaW5nIGxpbmVKb2luTmFtZShMaW5lSm9pbiBqb2luKQotewotICAgIEFTU0VSVChqb2lu
ID49IDApOwotICAgIEFTU0VSVChqb2luIDwgMyk7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmFt
ZXNbM10gPSB7ICJtaXRlciIsICJyb3VuZCIsICJiZXZlbCIgfTsKLSAgICByZXR1cm4gbmFtZXNb
am9pbl07Ci19Ci0KLX0KSW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBwbGF0Zm9ybS9HcmFwaGljc1R5cGVzLmgJKHJldmlzaW9uIDE3MzM1KQorKysgcGxhdGZv
cm0vR3JhcGhpY3NUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgR3JhcGhpY3NUeXBlc19oCi0jZGVm
aW5lIEdyYXBoaWNzVHlwZXNfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBT
dHJpbmc7Ci0KLSAgICAvLyBOb3RlOiBUaGVzZSBjb25zdGFudHMgZXhhY3RseSBtYXRjaCB0aGUg
TlNDb21wb3NpdGVPcGVyYXRvciBjb25zdGFudHMgb2YKLSAgICAvLyBBcHBLaXQgb24gTWFjIE9T
IFguIElmIHRoYXQncyBldmVyIGNoYW5nZWQsIHdlJ2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBNYWMK
LSAgICAvLyBwbGF0Zm9ybSBjb2RlIHRvIG1hcCBvbmUgdG8gdGhlIG90aGVyLgotICAgIGVudW0g
Q29tcG9zaXRlT3BlcmF0b3IgewotICAgICAgICBDb21wb3NpdGVDbGVhciwKLSAgICAgICAgQ29t
cG9zaXRlQ29weSwKLSAgICAgICAgQ29tcG9zaXRlU291cmNlT3ZlciwKLSAgICAgICAgQ29tcG9z
aXRlU291cmNlSW4sCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZU91dCwKLSAgICAgICAgQ29tcG9z
aXRlU291cmNlQXRvcCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyLAotICAgICAg
ICBDb21wb3NpdGVEZXN0aW5hdGlvbkluLAotICAgICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbk91
dCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAotICAgICAgICBDb21wb3NpdGVY
T1IsCi0gICAgICAgIENvbXBvc2l0ZVBsdXNEYXJrZXIsCi0gICAgICAgIENvbXBvc2l0ZUhpZ2hs
aWdodCwKLSAgICAgICAgQ29tcG9zaXRlUGx1c0xpZ2h0ZXIKLSAgICB9OwotCi0gICAgZW51bSBM
aW5lQ2FwIHsgQnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9OwotCi0gICAgZW51bSBMaW5l
Sm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4gfTsKLQotICAgIGVudW0gSG9y
aXpvbnRhbEFsaWdubWVudCB7IEFsaWduTGVmdCwgQWxpZ25SaWdodCwgQWxpZ25IQ2VudGVyIH07
Ci0KLSAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yKTsK
LSAgICBib29sIHBhcnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiwgQ29tcG9zaXRl
T3BlcmF0b3ImKTsKLQotICAgIFN0cmluZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKLSAgICBib29s
IHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmLCBMaW5lQ2FwJik7Ci0KLSAgICBTdHJpbmcgbGlu
ZUpvaW5OYW1lKExpbmVKb2luKTsKLSAgICBib29sIHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5n
JiwgTGluZUpvaW4mKTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMTczMzUpCisrKyBwbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDI5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0K
LSNpbmNsdWRlICJGb250LmgiCi0jaW5jbHVkZSAiVGV4dFN0eWxlLmgiCi0KLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSgpIDogZmlsbENvbG9yKENvbG9yOjpi
bGFjayksIHBhaW50aW5nRGlzYWJsZWQoZmFsc2UpIHsgfQotICAgIEZvbnQgZm9udDsKLSAgICBQ
ZW4gcGVuOwotICAgIENvbG9yIGZpbGxDb2xvcjsKLSAgICBib29sIHBhaW50aW5nRGlzYWJsZWQ7
Ci19OwotICAgICAgICAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGUgewotcHVibGljOgot
ICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKLSAgICAKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZSBzdGF0ZTsKLSAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0U3RhdGU+IHN0YWNrOwotICAg
IFZlY3RvcjxJbnRSZWN0PiBtX2ZvY3VzUmluZ1JlY3RzOwotICAgIGludCBtX2ZvY3VzUmluZ1dp
ZHRoOwotICAgIGludCBtX2ZvY3VzUmluZ09mZnNldDsKLSAgICBib29sIG1fdXBkYXRpbmdDb250
cm9sVGludHM7Ci19OwotCi1HcmFwaGljc0NvbnRleHRQcml2YXRlOjpHcmFwaGljc0NvbnRleHRQ
cml2YXRlKCkKLSAgICA6IG1fZm9jdXNSaW5nV2lkdGgoMCkKLSAgICAsIG1fZm9jdXNSaW5nT2Zm
c2V0KDApCi0gICAgLCBtX3VwZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQotewotfQotCi1HcmFw
aGljc0NvbnRleHRQcml2YXRlKiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dFByaXZhdGUoKQotewotICAgIHJldHVybiBuZXcgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHRQcml2YXRlKEdy
YXBoaWNzQ29udGV4dFByaXZhdGUqIGRlbGV0ZU1lKQotewotICAgIGRlbGV0ZSBkZWxldGVNZTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKQotewotICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29tbW9uLT5zdGFjay5hcHBlbmQo
bV9jb21tb24tPnN0YXRlKTsKLSAgICAKLSAgICBzYXZlUGxhdGZvcm1TdGF0ZSgpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29tbW9uLT5zdGFjay5pc0VtcHR5
KCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFUlJPUiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVz
dG9yZSgpIHN0YWNrIGlzIGVtcHR5Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9j
b21tb24tPnN0YXRlID0gbV9jb21tb24tPnN0YWNrLmxhc3QoKTsKLSAgICBtX2NvbW1vbi0+c3Rh
Y2sucmVtb3ZlTGFzdCgpOwotICAgIAotICAgIHJlc3RvcmVQbGF0Zm9ybVN0YXRlKCk7Ci19Ci0K
LWNvbnN0IEZvbnQmIEdyYXBoaWNzQ29udGV4dDo6Zm9udCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29tbW9uLT5zdGF0ZS5mb250OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Rm9u
dChjb25zdCBGb250JiBhRm9udCkKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUuZm9udCA9IGFGb250
OwotfQotCi1jb25zdCBQZW4mIEdyYXBoaWNzQ29udGV4dDo6cGVuKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9jb21tb24tPnN0YXRlLnBlbjsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBlbihjb25zdCBQZW4mIHBlbikKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuID0gcGVuOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKFBlbjo6UGVuU3R5bGUgc3R5bGUpCi17
Ci0gICAgbV9jb21tb24tPnN0YXRlLnBlbi5zZXRTdHlsZShzdHlsZSk7Ci0gICAgbV9jb21tb24t
PnN0YXRlLnBlbi5zZXRDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIG1fY29tbW9uLT5zdGF0ZS5w
ZW4uc2V0V2lkdGgoMCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQZW4oUkdCQTMy
IHJnYikKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFN0eWxlKFBlbjo6U29saWRMaW5l
KTsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldENvbG9yKHJnYik7Ci0gICAgbV9jb21tb24t
PnN0YXRlLnBlbi5zZXRXaWR0aCgwKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9jb21tb24tPnN0YXRlLmZpbGxD
b2xvciA9IGNvbG9yOwotfQotCi1Db2xvciBHcmFwaGljc0NvbnRleHQ6OmZpbGxDb2xvcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3I7Ci19Ci0KLWJvb2wg
R3JhcGhpY3NDb250ZXh0Ojp1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY29tbW9uLT5tX3VwZGF0aW5nQ29udHJvbFRpbnRzOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCBiKQotewotICAgIHNldFBhaW50
aW5nRGlzYWJsZWQoYik7Ci0gICAgbV9jb21tb24tPm1fdXBkYXRpbmdDb250cm9sVGludHMgPSBi
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGFpbnRpbmdEaXNhYmxlZChib29sIGYp
Ci17Ci0gICAgbV9jb21tb24tPnN0YXRlLnBhaW50aW5nRGlzYWJsZWQgPSBmOwotfQotCi1ib29s
IEdyYXBoaWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29tbW9uLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQoteyAgICAgICAgCi0gICAgZHJhd0ltYWdlKGltYWdlLCBwLCBJbnRSZWN0
KDAsIDAsIC0xLCAtMSksIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQot
ewotICAgIGRyYXdJbWFnZShpbWFnZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJ
bnRQb2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCi17Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgp
KSwgc3JjUmVjdCwgb3ApOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdCksIHNyY1JlY3QsIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50KQotewotICAgIGRyYXdU
ZXh0KHJ1biwgcG9pbnQsIFRleHRTdHlsZSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25z
dCBUZXh0U3R5bGUmIHN0eWxlKQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBmb250KCkuZHJhd1RleHQodGhpcywgcnVuLCBzdHlsZSwg
cG9pbnQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0hpZ2hsaWdodEZvclRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGludCBoLCBjb25zdCBU
ZXh0U3R5bGUmIHN0eWxlLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQotewotICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZpbGxSZWN0KGZv
bnQoKS5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHN0eWxlLCBwb2ludCwgaCksIGJhY2tncm91
bmRDb2xvcik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojppbml0Rm9jdXNSaW5nKGludCB3
aWR0aCwgaW50IG9mZnNldCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2xlYXJGb2N1c1JpbmcoKTsKLSAgICAKLSAgICBtX2NvbW1vbi0+bV9m
b2N1c1JpbmdXaWR0aCA9IHdpZHRoOwotICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ09mZnNldCA9
IG9mZnNldDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyRm9jdXNSaW5nKCkKLXsK
LSAgICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5jbGVhcigpOwotfQotCi1JbnRSZWN0IEdy
YXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKLXsKLSAgICBJbnRSZWN0IHJl
c3VsdCA9IEludFJlY3QoMCwgMCwgMCwgMCk7Ci0gICAgCi0gICAgY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiByZWN0cyA9IGZvY3VzUmluZ1JlY3RzKCk7Ci0gICAgdW5zaWduZWQgcmVjdENvdW50ID0g
cmVjdHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkr
KykKLSAgICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKLSAgICAgICAgCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb21tb24tPm1fZm9jdXNSaW5nUmVj
dHMuYXBwZW5kKHJlY3QpOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdXaWR0
aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRoOwotfQot
Ci1pbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdPZmZzZXQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2NvbW1vbi0+bV9mb2N1c1JpbmdPZmZzZXQ7Ci19Ci0KLWNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdSZWN0cygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1JlY3RzOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdHN3ID0gc3JjLndpZHRo
KCk7Ci0gICAgZmxvYXQgdHNoID0gc3JjLmhlaWdodCgpOwotICAgIGZsb2F0IHR3ID0gZGVzdC53
aWR0aCgpOwotICAgIGZsb2F0IHRoID0gZGVzdC5oZWlnaHQoKTsKLSAgICAgICAgCi0gICAgaWYg
KHRzdyA9PSAtMSkKLSAgICAgICAgdHN3ID0gaW1hZ2UtPndpZHRoKCk7Ci0gICAgaWYgKHRzaCA9
PSAtMSkKLSAgICAgICAgdHNoID0gaW1hZ2UtPmhlaWdodCgpOwotCi0gICAgaWYgKHR3ID09IC0x
KQotICAgICAgICB0dyA9IGltYWdlLT53aWR0aCgpOwotICAgIGlmICh0aCA9PSAtMSkKLSAgICAg
ICAgdGggPSBpbWFnZS0+aGVpZ2h0KCk7Ci0KLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJl
Y3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9j
YXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCByZWN0LCBzcmNQb2ludCwgdGls
ZVNpemUsIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
SW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1h
Z2U6OlN0cmV0Y2hUaWxlKQotICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJl
dHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyY1JlY3QpOwotCi0gICAgaW1hZ2UtPmRyYXdU
aWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIG9wKTsKLX0KLQotfQpJbmRl
eDogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAwKQorKysgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkZv
bnQuaCIKKyNpbmNsdWRlICJUZXh0U3R5bGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgeworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlKCkgOiBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKSwgcGFpbnRp
bmdEaXNhYmxlZChmYWxzZSkgeyB9CisgICAgRm9udCBmb250OworICAgIFBlbiBwZW47CisgICAg
Q29sb3IgZmlsbENvbG9yOworICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZDsKK307CisgICAgICAg
IAorY2xhc3MgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgR3JhcGhpY3ND
b250ZXh0UHJpdmF0ZSgpOworICAgIAorICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlOwor
ICAgIFZlY3RvcjxHcmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhY2s7CisgICAgVmVjdG9yPEludFJl
Y3Q+IG1fZm9jdXNSaW5nUmVjdHM7CisgICAgaW50IG1fZm9jdXNSaW5nV2lkdGg7CisgICAgaW50
IG1fZm9jdXNSaW5nT2Zmc2V0OworICAgIGJvb2wgbV91cGRhdGluZ0NvbnRyb2xUaW50czsKK307
CisKK0dyYXBoaWNzQ29udGV4dFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFByaXZhdGUoKQorICAg
IDogbV9mb2N1c1JpbmdXaWR0aCgwKQorICAgICwgbV9mb2N1c1JpbmdPZmZzZXQoMCkKKyAgICAs
IG1fdXBkYXRpbmdDb250cm9sVGludHMoZmFsc2UpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFBy
aXZhdGUqIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCit7
CisgICAgcmV0dXJuIG5ldyBHcmFwaGljc0NvbnRleHRQcml2YXRlOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250ZXh0
UHJpdmF0ZSogZGVsZXRlTWUpCit7CisgICAgZGVsZXRlIGRlbGV0ZU1lOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2F2ZSgpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb21tb24tPnN0YWNrLmFwcGVuZChtX2NvbW1vbi0+c3Rh
dGUpOworICAgIAorICAgIHNhdmVQbGF0Zm9ybVN0YXRlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpyZXN0b3JlKCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jb21tb24tPnN0YWNrLmlzRW1wdHkoKSkgeworICAgICAg
ICBMT0dfRVJST1IoIkVSUk9SIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkgc3RhY2sg
aXMgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NvbW1vbi0+c3RhdGUg
PSBtX2NvbW1vbi0+c3RhY2subGFzdCgpOworICAgIG1fY29tbW9uLT5zdGFjay5yZW1vdmVMYXN0
KCk7CisgICAgCisgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKK30KKworY29uc3QgRm9udCYg
R3JhcGhpY3NDb250ZXh0Ojpmb250KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb21tb24tPnN0
YXRlLmZvbnQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGb250KGNvbnN0IEZvbnQm
IGFGb250KQoreworICAgIG1fY29tbW9uLT5zdGF0ZS5mb250ID0gYUZvbnQ7Cit9CisKK2NvbnN0
IFBlbiYgR3JhcGhpY3NDb250ZXh0OjpwZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1v
bi0+c3RhdGUucGVuOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKGNvbnN0IFBl
biYgcGVuKQoreworICAgIG1fY29tbW9uLT5zdGF0ZS5wZW4gPSBwZW47Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQZW4oUGVuOjpQZW5TdHlsZSBzdHlsZSkKK3sKKyAgICBtX2NvbW1v
bi0+c3RhdGUucGVuLnNldFN0eWxlKHN0eWxlKTsKKyAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNl
dENvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9jb21tb24tPnN0YXRlLnBlbi5zZXRXaWR0aCgw
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBlbihSR0JBMzIgcmdiKQoreworICAg
IG1fY29tbW9uLT5zdGF0ZS5wZW4uc2V0U3R5bGUoUGVuOjpTb2xpZExpbmUpOworICAgIG1fY29t
bW9uLT5zdGF0ZS5wZW4uc2V0Q29sb3IocmdiKTsKKyAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNl
dFdpZHRoKDApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2NvbW1vbi0+c3RhdGUuZmlsbENvbG9yID0gY29sb3I7
Cit9CisKK0NvbG9yIEdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9yKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb21tb24tPnN0YXRlLmZpbGxDb2xvcjsKK30KKworYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb21tb24t
Pm1fdXBkYXRpbmdDb250cm9sVGludHM7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRV
cGRhdGluZ0NvbnRyb2xUaW50cyhib29sIGIpCit7CisgICAgc2V0UGFpbnRpbmdEaXNhYmxlZChi
KTsKKyAgICBtX2NvbW1vbi0+bV91cGRhdGluZ0NvbnRyb2xUaW50cyA9IGI7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQYWludGluZ0Rpc2FibGVkKGJvb2wgZikKK3sKKyAgICBtX2Nv
bW1vbi0+c3RhdGUucGFpbnRpbmdEaXNhYmxlZCA9IGY7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0OjpwYWludGluZ0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb21tb24tPnN0
YXRlLnBhaW50aW5nRGlzYWJsZWQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
Cit7ICAgICAgICAKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIHAsIEludFJlY3QoMCwgMCwgLTEsIC0x
KSwgb3ApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAgZHJhd0lt
YWdlKGltYWdlLCByLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9wKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkZXN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBk
cmF3SW1hZ2UoaW1hZ2UsIEludFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBv
cCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKK3sKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVj
dCwgb3ApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgZHJhd1RleHQocnVuLCBwb2lu
dCwgVGV4dFN0eWxlKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFRleHRTdHlsZSYg
c3R5bGUpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGZvbnQoKS5kcmF3VGV4dCh0aGlzLCBydW4sIHN0eWxlLCBwb2ludCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SGlnaGxpZ2h0Rm9yVGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEludFBvaW50JiBwb2ludCwgaW50IGgsIGNvbnN0IFRleHRTdHlsZSYgc3R5
bGUsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmlsbFJlY3QoZm9udCgpLnNlbGVjdGlv
blJlY3RGb3JUZXh0KHJ1biwgc3R5bGUsIHBvaW50LCBoKSwgYmFja2dyb3VuZENvbG9yKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmluaXRGb2N1c1JpbmcoaW50IHdpZHRoLCBpbnQgb2Zm
c2V0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBjbGVhckZvY3VzUmluZygpOworICAgIAorICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRo
ID0gd2lkdGg7CisgICAgbV9jb21tb24tPm1fZm9jdXNSaW5nT2Zmc2V0ID0gb2Zmc2V0OworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJGb2N1c1JpbmcoKQoreworICAgIG1fY29tbW9u
LT5tX2ZvY3VzUmluZ1JlY3RzLmNsZWFyKCk7Cit9CisKK0ludFJlY3QgR3JhcGhpY3NDb250ZXh0
Ojpmb2N1c1JpbmdCb3VuZGluZ1JlY3QoKQoreworICAgIEludFJlY3QgcmVzdWx0ID0gSW50UmVj
dCgwLCAwLCAwLCAwKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0g
Zm9jdXNSaW5nUmVjdHMoKTsKKyAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5zaXplKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQorICAgICAgICBy
ZXN1bHQudW5pdGUocmVjdHNbaV0pOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkRm9jdXNSaW5nUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5hcHBlbmQocmVj
dCk7Cit9CisKK2ludCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ1dpZHRoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb21tb24tPm1fZm9jdXNSaW5nV2lkdGg7Cit9CisKK2ludCBHcmFwaGlj
c0NvbnRleHQ6OmZvY3VzUmluZ09mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tbW9u
LT5tX2ZvY3VzUmluZ09mZnNldDsKK30KKworY29uc3QgVmVjdG9yPEludFJlY3Q+JiBHcmFwaGlj
c0NvbnRleHQ6OmZvY3VzUmluZ1JlY3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb21tb24t
Pm1fZm9jdXNSaW5nUmVjdHM7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Uo
SW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB0c3cgPSBzcmMud2lkdGgoKTsKKyAgICBmbG9h
dCB0c2ggPSBzcmMuaGVpZ2h0KCk7CisgICAgZmxvYXQgdHcgPSBkZXN0LndpZHRoKCk7CisgICAg
ZmxvYXQgdGggPSBkZXN0LmhlaWdodCgpOworICAgICAgICAKKyAgICBpZiAodHN3ID09IC0xKQor
ICAgICAgICB0c3cgPSBpbWFnZS0+d2lkdGgoKTsKKyAgICBpZiAodHNoID09IC0xKQorICAgICAg
ICB0c2ggPSBpbWFnZS0+aGVpZ2h0KCk7CisKKyAgICBpZiAodHcgPT0gLTEpCisgICAgICAgIHR3
ID0gaW1hZ2UtPndpZHRoKCk7CisgICAgaWYgKHRoID09IC0xKQorICAgICAgICB0aCA9IGltYWdl
LT5oZWlnaHQoKTsKKworICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHN3LCB0c2gpKSwgb3ApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIHJlY3QsIHNyY1BvaW50LCB0aWxlU2l6ZSwgb3ApOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7
CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRp
bGUpCisgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KKyAgICAgICAgcmV0dXJuIGRyYXdJbWFn
ZShpbWFnZSwgZGVzdCwgc3JjUmVjdCk7CisKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRl
c3QsIHNyY1JlY3QsIGhSdWxlLCB2UnVsZSwgb3ApOworfQorCit9CkluZGV4OiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1Jlc291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
UmVzb3VyY2UuaCIKKworI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgorI2luY2x1
ZGUgIlJlbmRlclBhdGguaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZH
U3R5bGVkRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzUmVzb3Vy
Y2U6OkdyYXBoaWNzUmVzb3VyY2UoKQoreworfQorCitHcmFwaGljc1Jlc291cmNlOjp+R3JhcGhp
Y3NSZXNvdXJjZSgpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNvdXJjZTo6aW52YWxpZGF0ZSgp
Cit7CisgICAgUmVuZGVyUGF0aExpc3Q6OkNvbnN0SXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVn
aW4oKTsKKyAgICBSZW5kZXJQYXRoTGlzdDo6Q29uc3RJdGVyYXRvciBlbmQgPSBtX2NsaWVudHMu
ZW5kKCk7CisKKyAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGNvbnN0X2Nhc3Q8
UmVuZGVyUGF0aCo+KCppdCktPnJlcGFpbnQoKTsKK30KKwordm9pZCBHcmFwaGljc1Jlc291cmNl
OjphZGRDbGllbnQoY29uc3QgUmVuZGVyUGF0aCogaXRlbSkKK3sKKyAgICBpZihtX2NsaWVudHMu
ZmluZChpdGVtKSAhPSBtX2NsaWVudHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y2xpZW50cy5hcHBlbmQoaXRlbSk7Cit9CisKK2NvbnN0IFJlbmRlclBhdGhMaXN0JiBHcmFwaGlj
c1Jlc291cmNlOjpjbGllbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRzOworfQor
CitTdHJpbmcgR3JhcGhpY3NSZXNvdXJjZTo6aWRJblJlZ2lzdHJ5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZWdpc3RyeUlkOworfQorCit2b2lkIEdyYXBoaWNzUmVzb3VyY2U6OnNldElkSW5S
ZWdpc3RyeShjb25zdCBTdHJpbmcmIGlkKQoreworICAgIG1fcmVnaXN0cnlJZCA9IGlkOworfQor
CitUZXh0U3RyZWFtJiBHcmFwaGljc1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHJldHVybiB0czsKK30KKworUGFzc1JlZlB0cjxH
cmFwaGljc1Jlc291cmNlPiBnZXRSZXNvdXJjZUJ5SWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIGlmIChpZC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJ
ZChpZCk7CisgICAgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3QoZWxl
bWVudCk7CisKKyAgICBpZiAoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50LT5pc1N0eWxlZCgpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHN2Z0VsZW1lbnQp
LT5jYW52YXNSZXNvdXJjZSgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0tSZW5kZXJpbmdQYWlu
dFNlcnZlciogZ2V0UGFpbnRTZXJ2ZXJCeUlkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCkKK3sKKyAgICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlkKTsKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVz
b3VyY2UtPmlzUGFpbnRTZXJ2ZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtSZW5k
ZXJpbmdQYWludFNlcnZlcio+KHJlc291cmNlLmdldCgpKTsKKworICAgIHJldHVybiAwOworfQor
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBoaWNz
UmVzb3VyY2UmIHIpCit7CisgICAgcmV0dXJuIHIuZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzUmVzb3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NSZXNvdXJjZU1hcmtlci5oIgorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFp
bmVyLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIoKQorICAgIDog
R3JhcGhpY3NSZXNvdXJjZSgpCisgICAgLCBtX3JlZlgoMC4wKQorICAgICwgbV9yZWZZKDAuMCkK
KyAgICAsIG1fYW5nbGUoLTEpIC8vIGp1c3QgbGlrZSB1c2luZyBzZXRBdXRvQW5nbGUoKQorICAg
ICwgbV9tYXJrZXIoMCkKKyAgICAsIG1fdXNlU3Ryb2tlV2lkdGgodHJ1ZSkKK3sKK30KKworR3Jh
cGhpY3NSZXNvdXJjZU1hcmtlcjo6fkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIoKQoreworfQorCit2
b2lkIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OnNldE1hcmtlcihSZW5kZXJTVkdDb250YWluZXIq
IG1hcmtlcikKK3sKKyAgICBtX21hcmtlciA9IG1hcmtlcjsKK30KKwordm9pZCBHcmFwaGljc1Jl
c291cmNlTWFya2VyOjpzZXRSZWYoZG91YmxlIHJlZlgsIGRvdWJsZSByZWZZKQoreworICAgIG1f
cmVmWCA9IHJlZlg7CisgICAgbV9yZWZZID0gcmVmWTsKK30KKwordm9pZCBHcmFwaGljc1Jlc291
cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCwgZG91YmxlIGFu
Z2xlKQoreworICAgIGlmICghbV9tYXJrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KTsKKyAg
ICB0cmFuc2Zvcm0ucm90YXRlKG1fYW5nbGUgPiAtMSA/IG1fYW5nbGUgOiBhbmdsZSk7CisKKyAg
ICAvLyByZWZYIGFuZCByZWZZIGFyZSBnaXZlbiBpbiBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0
aGUgdmlld3BvcnQgZXN0YWJsaXNoZWQgYnkgdGhlIG1hcmtlciwgeWV0IHRoZXkgYWZmZWN0Cisg
ICAgLy8gdGhlIHRyYW5zbGF0aW9uIHBlcmZvcm1lZCBvbiB0aGUgdmlld3BvcnQgaXRzZWxmLgor
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybTsKKyAgICBpZiAobV91c2VTdHJv
a2VXaWR0aCkKKyAgICAgICAgdmlld3BvcnRUcmFuc2Zvcm0uc2NhbGUoc3Ryb2tlV2lkdGgsIHN0
cm9rZVdpZHRoKTsKKyAgICBpZiAoIW1fbWFya2VyLT52aWV3Qm94KCkuaXNFbXB0eSgpKQorICAg
ICAgICB2aWV3cG9ydFRyYW5zZm9ybSAqPSBtX21hcmtlci0+dmlld3BvcnRUcmFuc2Zvcm0oKTsK
KyAgICBkb3VibGUgcmVmWCwgcmVmWTsKKyAgICB2aWV3cG9ydFRyYW5zZm9ybS5tYXAobV9yZWZY
LCBtX3JlZlksICZyZWZYLCAmcmVmWSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtcmVmWCwg
LXJlZlkpOworCisgICAgaWYgKG1fdXNlU3Ryb2tlV2lkdGgpCisgICAgICAgIHRyYW5zZm9ybS5z
Y2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOworCisgICAgLy8gRklYTUU6IFBhaW50SW5m
byBzaG91bGQgYmUgcGFzc2VkIGludG8gdGhpcyBtZXRob2QgaW5zdGVhZCBvZiBiZWluZyBjcmVh
dGVkIGhlcmUKKyAgICAvLyBGSVhNRTogYm91bmRpbmcgYm94IGZyYWN0aW9ucyBhcmUgbG9zdAor
ICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oY29udGV4dCwgZW5jbG9zaW5nSW50UmVj
dChyZWN0KSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIDAsIDAsIDApOworCisgICAgY29udGV4dC0+
c2F2ZSgpOworICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOworICAgIG1fbWFya2Vy
LT5zZXREcmF3c0NvbnRlbnRzKHRydWUpOworICAgIG1fbWFya2VyLT5wYWludChpbmZvLCAwLCAw
KTsKKyAgICBtX21hcmtlci0+c2V0RHJhd3NDb250ZW50cyhmYWxzZSk7CisgICAgY29udGV4dC0+
cmVzdG9yZSgpOworfQorCitUZXh0U3RyZWFtJiBHcmFwaGljc1Jlc291cmNlTWFya2VyOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJb
dHlwZT1NQVJLRVJdIgorICAgICAgICA8PCAiIFthbmdsZT0iOworCisgICAgaWYgKGFuZ2xlKCkg
PT0gLTEpCisgICAgICAgIHRzIDw8ICJhdXRvIiA8PCAiXSI7CisgICAgZWxzZQorICAgICAgICB0
cyA8PCBhbmdsZSgpIDw8ICJdIjsKKworICAgIHRzIDw8ICIgW3JlZiB4PSIgPDwgcmVmWCgpIDw8
ICIgeT0iIDw8IHJlZlkoKSA8PCAiXSI7CisgICAgcmV0dXJuIHRzOworfQorCitQYXNzUmVmUHRy
PEdyYXBoaWNzUmVzb3VyY2VNYXJrZXI+IGdldE1hcmtlckJ5SWQoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIFJlZlB0cjxHcmFwaGljc1Jlc291cmNl
PiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOworICAgIGlmIChyZXNv
dXJjZSAmJiByZXNvdXJjZS0+aXNNYXJrZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIqPihyZXNvdXJjZS5nZXQoKSk7CisKKyAgICByZXR1cm4g
MDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgR3JhcGhpY3NDb250ZXh0X2gKKyNkZWZpbmUgR3JhcGhpY3NDb250
ZXh0X2gKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBlbi5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rp
b24uaCIKKyNpbmNsdWRlICJVQ2hhci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oQ0cpCit0eXBlZGVmIHN0
cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShD
QUlSTykKK3R5cGVkZWYgc3RydWN0IF9jYWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorY2xhc3MgUVBhaW50ZXI7Cit0eXBlZGVmIFFQYWludGVyIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0OworI2Vsc2UKK3R5cGVkZWYgdm9pZCBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiBzdHJ1Y3QgSERD
X18qIEhEQzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjb25zdCBpbnQg
Y01pc3NwZWxsaW5nTGluZVRoaWNrbmVzcyA9IDM7CisgICAgY29uc3QgaW50IGNNaXNzcGVsbGlu
Z0xpbmVQYXR0ZXJuV2lkdGggPSA0OworICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0
dGVybkdhcFdpZHRoID0gMTsKKworICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFz
cyBGb250OworICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGU7CisgICAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3Mg
UGF0aDsKKyAgICBjbGFzcyBUZXh0UnVuOworICAgIGNsYXNzIFRleHRTdHlsZTsKKworI2lmZGVm
IFNWR19TVVBQT1JUCisgICAgY2xhc3MgS1JlbmRlcmluZ0RldmljZUNvbnRleHQ7CisjZW5kaWYK
KworICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dCA6IE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOworICAg
ICAgICB+R3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgCisgICAgICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKKworICAgICAgICBjb25zdCBGb250
JiBmb250KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Jik7CisgICAg
ICAgIAorICAgICAgICBjb25zdCBQZW4mIHBlbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFBl
bihjb25zdCBQZW4mKTsKKyAgICAgICAgdm9pZCBzZXRQZW4oUGVuOjpQZW5TdHlsZSk7CisgICAg
ICAgIHZvaWQgc2V0UGVuKFJHQkEzMik7CisgICAgICAgIAorICAgICAgICBDb2xvciBmaWxsQ29s
b3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKKwor
ICAgICAgICB2b2lkIHNhdmUoKTsKKyAgICAgICAgdm9pZCByZXN0b3JlKCk7CisgICAgICAgIAor
ICAgICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBkcmF3
TGluZShjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50Jik7CisgICAgICAgIHZvaWQgZHJh
d0VsbGlwc2UoY29uc3QgSW50UmVjdCYpOworICAgICAgICB2b2lkIGRyYXdBcmMoY29uc3QgSW50
UmVjdCYsIGZsb2F0IHRoaWNrbmVzcywgaW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwYW4pOwor
ICAgICAgICB2b2lkIGRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZs
b2F0UG9pbnQqLCBib29sIHNob3VsZEFudGlhbGlhcyA9IGZhbHNlKTsKKworICAgICAgICB2b2lk
IGZpbGxSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIGZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xl
YXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKKworICAgICAgICB2b2lkIGRyYXdJbWFnZShJ
bWFnZSosIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
ICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LAorICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAor
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAg
ICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCAKKyAgICAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6
OlN0cmV0Y2hUaWxlLAorICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKKworICAgICAgICB2b2lkIGNsaXAoY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYg
dG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBhZGRJbm5lclJv
dW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CisKKyAgICAgICAg
Ly8gRnVuY3Rpb25zIHRvIHdvcmsgYXJvdW5kIGJ1Z3MgaW4gZm9jdXMgcmluZyBjbGlwcGluZyBv
biBNYWMuCisgICAgICAgIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcChjb25zdCBJbnRSZWN0Jik7Cisg
ICAgICAgIHZvaWQgY2xlYXJGb2N1c1JpbmdDbGlwKCk7CisKKyAgICAgICAgdm9pZCBkcmF3VGV4
dChjb25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3VGV4
dChjb25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBUZXh0U3R5bGUmKTsKKyAg
ICAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgSW50
UG9pbnQmLCBpbnQgaCwgY29uc3QgVGV4dFN0eWxlJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRD
b2xvcik7CisKKyAgICAgICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgICAgIAorICAgICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBJ
bnRQb2ludCYsIGludCB5T2Zmc2V0LCBpbnQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOworICAgICAg
ICB2b2lkIGRyYXdMaW5lRm9yTWlzc3BlbGxpbmcoY29uc3QgSW50UG9pbnQmLCBpbnQgd2lkdGgp
OworICAgICAgICAKKyAgICAgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0UGFpbnRpbmdEaXNhYmxlZChib29sKTsKKyAgICAgICAgCisgICAgICAgIGJv
b2wgdXBkYXRpbmdDb250cm9sVGludHMoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVcGRhdGlu
Z0NvbnRyb2xUaW50cyhib29sKTsKKworICAgICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSk7CisgICAgICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
KworICAgICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBJbnRTaXplJiwgaW50IGJsdXIsIGNvbnN0
IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKKworICAgICAgICB2b2lkIGlu
aXRGb2N1c1JpbmcoaW50IHdpZHRoLCBpbnQgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBhZGRGb2N1
c1JpbmdSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNv
bnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xlYXJGb2N1c1JpbmcoKTsKKyAgICAgICAgSW50
UmVjdCBmb2N1c1JpbmdCb3VuZGluZ1JlY3QoKTsKKworICAgICAgICB2b2lkIHNldExpbmVXaWR0
aChmbG9hdCk7CisgICAgICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKTsKKyAgICAgICAgdm9p
ZCBzZXRMaW5lSm9pbihMaW5lSm9pbik7CisgICAgICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9h
dCk7CisKKyAgICAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CisKKyAgICAgICAgdm9pZCBzZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgIHZvaWQgY2xp
cChjb25zdCBQYXRoJik7CisKKyAgICAgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsK
KyAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOworICAgICAgICB2b2lk
IHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICAgICAgSW50UG9pbnQgb3JpZ2luKCk7
CisgICAgICAgIAorICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0
IEludFJlY3QmKTsKKworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKTsKKworI2lmZGVmIFNWR19TVVBQT1JUCisgICAgICAgIEtSZW5kZXJpbmdEZXZpY2VDb250
ZXh0KiBjcmVhdGVSZW5kZXJpbmdEZXZpY2VDb250ZXh0KCk7CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KEhEQyk7IC8vIEZJWE1FOiBUbyBiZSBy
ZW1vdmVkLgorICAgICAgICBIREMgZ2V0V2luZG93c0NvbnRleHQoYm9vbCBzdXBwb3J0QWxwaGFC
bGVuZCA9IGZhbHNlLCBjb25zdCBJbnRSZWN0KiA9IDApOyAvLyBUaGUgcGFzc2VkIGluIHJlY3Qg
aXMgdXNlZCB0byBjcmVhdGUgYSBiaXRtYXAgZm9yIGNvbXBvc2l0aW5nIGluc2lkZSB0cmFuc3Bh
cmVuY3kgbGF5ZXJzLgorICAgICAgICB2b2lkIHJlbGVhc2VXaW5kb3dzQ29udGV4dChIREMsIGJv
b2wgc3VwcG9ydEFscGhhQmxlbmQgPSBmYWxzZSwgY29uc3QgSW50UmVjdCogPSAwKTsgICAgLy8g
VGhlIHBhc3NlZCBpbiBIREMgc2hvdWxkIGJlIHRoZSBvbmUgaGFuZGVkIGJhY2sgYnkgZ2V0V2lu
ZG93c0NvbnRleHQuCisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgc2F2ZVBs
YXRmb3JtU3RhdGUoKTsKKyAgICAgICAgdm9pZCByZXN0b3JlUGxhdGZvcm1TdGF0ZSgpOworCisg
ICAgICAgIGludCBmb2N1c1JpbmdXaWR0aCgpIGNvbnN0OworICAgICAgICBpbnQgZm9jdXNSaW5n
T2Zmc2V0KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgZm9jdXNSaW5n
UmVjdHMoKSBjb25zdDsKKworICAgICAgICBzdGF0aWMgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSog
Y3JlYXRlR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShHcmFwaGljc0NvbnRleHRQcml2YXRlKik7CisKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSogbV9jb21tb247CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhOworICAgIH07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEdyYXBoaWNzQ29udGV4dF9oCkluZGV4OiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMCkKKysrIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oIgorCisjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dyYXBoaWNzUmVzb3VyY2VNYXNrZXI6OkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIo
KQorICAgIDogR3JhcGhpY3NSZXNvdXJjZSgpCit7Cit9CisKK0dyYXBoaWNzUmVzb3VyY2VNYXNr
ZXI6On5HcmFwaGljc1Jlc291cmNlTWFza2VyKCkKK3sKK30KKwordm9pZCBHcmFwaGljc1Jlc291
cmNlTWFza2VyOjpzZXRNYXNrKGNvbnN0IFJlZlB0cjxHcmFwaGljc1Jlc291cmNlSW1hZ2U+JiBt
YXNrKQoreworICAgIG1fbWFzayA9IG1hc2s7Cit9CisKK1Bhc3NSZWZQdHI8R3JhcGhpY3NSZXNv
dXJjZUltYWdlPiBHcmFwaGljc1Jlc291cmNlTWFza2VyOjptYXNrKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tYXNrOworfQorCitUZXh0U3RyZWFtJiBHcmFwaGljc1Jlc291cmNlTWFza2VyOjpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8
ICJbdHlwZT1NQVNLRVJdIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK1Bhc3NSZWZQdHI8R3JhcGhp
Y3NSZXNvdXJjZU1hc2tlcj4gZ2V0TWFza2VyQnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2U+IHJlc291
cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJlc291cmNlICYm
IHJlc291cmNlLT5pc01hc2tlcigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NSZXNvdXJjZU1hc2tlcio+KHJlc291cmNlLmdldCgpKTsKKworICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1Jlc291cmNlSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzUmVzb3VyY2VJbWFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1Jlc291cmNlSW1hZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NS
ZXNvdXJjZUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NSZXNvdXJj
ZUltYWdlOjpHcmFwaGljc1Jlc291cmNlSW1hZ2UoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZS5oCShyZXZpc2lvbiAw
KQorKysgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHcmFwaGljc1Jlc291
cmNlX0gKKyNkZWZpbmUgR3JhcGhpY3NSZXNvdXJjZV9ICisKKyNpbmNsdWRlICJTaGFyZWQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxp
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAg
Y2xhc3MgUmVuZGVyUGF0aDsKKyAgICBjbGFzcyBUZXh0U3RyZWFtOworICAgIGNsYXNzIEF0b21p
Y1N0cmluZzsKKyAgICBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI7CisKKyAgICB0eXBlZGVm
IERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Y29uc3QgUmVuZGVyUGF0aCo+IFJlbmRlclBhdGhMaXN0Owor
CisgICAgZW51bSBHcmFwaGljc1Jlc291cmNlVHlwZSB7CisgICAgICAgIC8vIFBhaW50aW5nIG1v
ZGUKKyAgICAgICAgUlNfQ0xJUFBFUiA9IDAsCisgICAgICAgIFJTX01BUktFUiA9IDEsCisgICAg
ICAgIFJTX0lNQUdFID0gMiwKKyAgICAgICAgUlNfRklMVEVSID0gMywKKyAgICAgICAgUlNfTUFT
S0VSID0gNAorICAgIH07CisKKyAgICAvLyBUaGUgR3JhcGhpY3NSZXNvdXJjZSBmaWxlIHJlcHJl
c2VudCB2YXJpb3VzIGdyYXBoaWNzIHJlc291cmNlczoKKyAgICAvLyAtIEZpbHRlciByZXNvdXJj
ZQorICAgIC8vIC0gQ2xpcHBlciByZXNvdXJjZQorICAgIC8vIC0gTWFza2VyIHJlc291cmNlCisg
ICAgLy8gLSBNYXJrZXIgcmVzb3VyY2UKKyAgICAvLyAtIFBhdHRlcm4gcmVzb3VyY2UKKyAgICAv
LyAtIExpbmVhci9SYWRpYWwgZ3JhZGllbnQgcmVzb3VyY2UKKyAgICAvLworICAgIC8vIFNWRyBj
cmVhdGVzL3VzZXMgdGhlc2UgcmVzb3VyY2VzLgorCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJj
ZSA6IHB1YmxpYyBTaGFyZWQ8R3JhcGhpY3NSZXNvdXJjZT4geworICAgIHB1YmxpYzoKKyAgICAg
ICAgR3JhcGhpY3NSZXNvdXJjZSgpOworICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc1Jlc291cmNl
KCk7CisgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICAgICAg
dm9pZCBhZGRDbGllbnQoY29uc3QgUmVuZGVyUGF0aCopOworCisgICAgICAgIGNvbnN0IFJlbmRl
clBhdGhMaXN0JiBjbGllbnRzKCkgY29uc3Q7CisKKyAgICAgICAgU3RyaW5nIGlkSW5SZWdpc3Ry
eSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25zdCBTdHJpbmcmKTsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcg
bV9yZWdpc3RyeUlkOworICAgICAgICBSZW5kZXJQYXRoTGlzdCBtX2NsaWVudHM7CisgICAgfTsK
KworICAgIC8vIEhlbHBlciBjbGFzcyBub3RpZnlpbmcgYWJvdXQgY2hhbmdlcyBpbiB0aGUgcmVz
b3VyY2VzCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyCisgICAgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZU5vdGlmaWNhdGlvbigpIGNvbnN0ID0gMDsKKyAg
ICB9OworCisgICAgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNlPiBnZXRSZXNvdXJjZUJ5SWQo
RG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIC8vIEZJWE1FOiBNb3ZlIHRv
IHBsYXRmb3JtL2dyYXBoaWNzICYgcmVmY291bnRlZCBjb25jZXB0CisgICAgS1JlbmRlcmluZ1Bh
aW50U2VydmVyKiBnZXRQYWludFNlcnZlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKKworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzUmVzb3VyY2UmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
R3JhcGhpY3NSZXNvdXJjZV9ICkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291
cmNlTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNv
dXJjZU1hcmtlci5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NS
ZXNvdXJjZU1hcmtlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXJfSAorI2RlZmluZSBHcmFwaGlj
c1Jlc291cmNlTWFya2VyX0gKKworI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKKyAgICBjbGFzcyBSZW5kZXJTVkdDb250YWluZXI7CisKKyAgICBjbGFzcyBH
cmFwaGljc1Jlc291cmNlTWFya2VyIDogcHVibGljIEdyYXBoaWNzUmVzb3VyY2UgeworICAgIHB1
YmxpYzoKKyAgICAgICAgR3JhcGhpY3NSZXNvdXJjZU1hcmtlcigpOworICAgICAgICB2aXJ0dWFs
IH5HcmFwaGljc1Jlc291cmNlTWFya2VyKCk7CisKKyAgICAgICAgdm9pZCBzZXRNYXJrZXIoUmVu
ZGVyU1ZHQ29udGFpbmVyKik7CisKKyAgICAgICAgdm9pZCBzZXRSZWYoZG91YmxlIHJlZlgsIGRv
dWJsZSByZWZZKTsKKyAgICAgICAgZG91YmxlIHJlZlgoKSBjb25zdCB7IHJldHVybiBtX3JlZlg7
IH0KKyAgICAgICAgZG91YmxlIHJlZlkoKSBjb25zdCB7IHJldHVybiBtX3JlZlk7IH0KKworICAg
ICAgICB2b2lkIHNldEFuZ2xlKGZsb2F0IGFuZ2xlKSB7IG1fYW5nbGUgPSBhbmdsZTsgfQorICAg
ICAgICB2b2lkIHNldEF1dG9BbmdsZSgpIHsgbV9hbmdsZSA9IC0xOyB9CisgICAgICAgIGZsb2F0
IGFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9hbmdsZTsgfQorCisgICAgICAgIHZvaWQgc2V0VXNl
U3Ryb2tlV2lkdGgoYm9vbCB1c2VTdHJva2VXaWR0aCA9IHRydWUpIHsgbV91c2VTdHJva2VXaWR0
aCA9IHVzZVN0cm9rZVdpZHRoOyB9CisgICAgICAgIGJvb2wgdXNlU3Ryb2tlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3VzZVN0cm9rZVdpZHRoOyB9CisKKyAgICAgICAgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91Ymxl
IHN0cm9rZVdpZHRoID0gMSwgZG91YmxlIGFuZ2xlID0gMCk7CisKKyAgICAgICAgdmlydHVhbCBi
b29sIGlzTWFya2VyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgZG91YmxlIG1fcmVmWCwgbV9yZWZZOworICAgICAgICBmbG9h
dCBtX2FuZ2xlOworICAgICAgICBSZW5kZXJTVkdDb250YWluZXIqIG1fbWFya2VyOworICAgICAg
ICBib29sIG1fdXNlU3Ryb2tlV2lkdGg7CisgICAgfTsKKworICAgIFBhc3NSZWZQdHI8R3JhcGhp
Y3NSZXNvdXJjZU1hcmtlcj4gZ2V0TWFya2VyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0
cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHcmFwaGljc1Jl
c291cmNlTWFya2VyX0gKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VN
YXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNl
TWFza2VyLmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291
cmNlTWFza2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgR3JhcGhpY3NSZXNvdXJjZU1hc2tlcl9ICisjZGVmaW5lIEdyYXBoaWNzUmVz
b3VyY2VNYXNrZXJfSAorCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgR3JhcGhpY3NS
ZXNvdXJjZUltYWdlOworCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZU1hc2tlciA6IHB1Ymxp
YyBHcmFwaGljc1Jlc291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdyYXBoaWNzUmVzb3Vy
Y2VNYXNrZXIoKTsKKyAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZU1hc2tlcigpOwor
CisgICAgICAgIHZvaWQgc2V0TWFzayhjb25zdCBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZUltYWdl
PiYpOworICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2VJbWFnZT4gbWFzaygpIGNv
bnN0OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc01hc2tlcigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mKSBjb25zdDsKKworICAgICAgICAvLyBUbyBiZSBpbXBsZW1lbnRlZCBieSB0
aGUgc3BlY2lmaWMgcmVuZGVyaW5nIGRldmljZXMKKyAgICAgICAgdm9pZCBhcHBseU1hc2soY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZUltYWdlPiBtX21hc2s7CisgICAgfTsKKworICAgIFBh
c3NSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZU1hc2tlcj4gZ2V0TWFza2VyQnlJZChEb2N1bWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBHcmFwaGljc1Jlc291cmNlTWFza2VyX0gKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzUmVzb3VyY2VJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzUmVzb3VyY2VJbWFnZS5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NSZXNvdXJjZUltYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgR3JhcGhpY3NSZXNvdXJjZUltYWdlX0gKKyNkZWZpbmUg
R3JhcGhpY3NSZXNvdXJjZUltYWdlX0gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc1Jlc291cmNlLmgiCisKKyNpZiBQTEFURk9STShNQUMpCit0eXBlZGVmIHN0cnVj
dCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKK3R5cGVkZWYgc3RydWN0IENHTGF5ZXIgKkNHTGF5
ZXJSZWY7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSW1hZ2U7
CisgICAgY2xhc3MgSW50U2l6ZTsKKworICAgIGNsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZSA6
IHB1YmxpYyBHcmFwaGljc1Jlc291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdyYXBoaWNz
UmVzb3VyY2VJbWFnZSgpOworCisjaWYgUExBVEZPUk0oTUFDKQorCXZpcnR1YWwgfkdyYXBoaWNz
UmVzb3VyY2VJbWFnZSgpOworI2VuZGlmCisKKyAgICAgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQg
YnkgdGhlIHNwZWNpZmljIHJlbmRlcmluZyBkZXZpY2VzIAorICAgICAgICB2b2lkIGluaXQoY29u
c3QgSW1hZ2UmKTsKKyAgICAgICAgdm9pZCBpbml0KEludFNpemUpOworCisgICAgICAgIEludFNp
emUgc2l6ZSgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBDR0xheWVyUmVm
IGNnTGF5ZXIoKTsKKyAgICAgICAgdm9pZCBzZXRDR0xheWVyKENHTGF5ZXJSZWYgbGF5ZXIpOwor
ICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEludFNpemUgbV9zaXplOworICAgICAgICBDR0xh
eWVyUmVmIG1fY2dMYXllcjsKKyNlbmRpZgorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEdyYXBoaWNzUmVzb3VyY2VJbWFnZV9ICkluZGV4OiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
Y29tcG9zaXRlT3BlcmF0b3JOYW1lc1tdID0geworICAgICJjbGVhciIsCisgICAgImNvcHkiLAor
ICAgICJzb3VyY2Utb3ZlciIsCisgICAgInNvdXJjZS1pbiIsCisgICAgInNvdXJjZS1vdXQiLAor
ICAgICJzb3VyY2UtYXRvcCIsCisgICAgImRlc3RpbmF0aW9uLW92ZXIiLAorICAgICJkZXN0aW5h
dGlvbi1pbiIsCisgICAgImRlc3RpbmF0aW9uLW91dCIsCisgICAgImRlc3RpbmF0aW9uLWF0b3Ai
LAorICAgICJ4b3IiLAorICAgICJkYXJrZXIiLAorICAgICJoaWdobGlnaHQiLAorICAgICJsaWdo
dGVyIgorfTsKK2NvbnN0IGludCBudW1Db21wb3NpdGVPcGVyYXRvck5hbWVzID0gc2l6ZW9mKGNv
bXBvc2l0ZU9wZXJhdG9yTmFtZXMpIC8gc2l6ZW9mKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbMF0p
OworCitib29sIHBhcnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiBzLCBDb21wb3Np
dGVPcGVyYXRvciYgb3ApCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21wb3NpdGVP
cGVyYXRvck5hbWVzOyBpKyspCisgICAgICAgIGlmIChzID09IGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXNbaV0pIHsKKyAgICAgICAgICAgIG9wID0gc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+
KGkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK1N0cmluZyBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit7CisgICAgQVNTRVJUKG9wID49IDApOworICAgIEFTU0VSVChvcCA8IG51bUNvbXBvc2l0
ZU9wZXJhdG9yTmFtZXMpOworICAgIHJldHVybiBjb21wb3NpdGVPcGVyYXRvck5hbWVzW29wXTsK
K30KKworYm9vbCBwYXJzZUxpbmVDYXAoY29uc3QgU3RyaW5nJiBzLCBMaW5lQ2FwJiBjYXApCit7
CisgICAgaWYgKHMgPT0gImJ1dHQiKSB7CisgICAgICAgIGNhcCA9IEJ1dHRDYXA7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocyA9PSAicm91bmQiKSB7CisgICAgICAgIGNh
cCA9IFJvdW5kQ2FwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0g
InNxdWFyZSIpIHsKKyAgICAgICAgY2FwID0gU3F1YXJlQ2FwOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgbGluZUNhcE5hbWUoTGlu
ZUNhcCBjYXApCit7CisgICAgQVNTRVJUKGNhcCA+PSAwKTsKKyAgICBBU1NFUlQoY2FwIDwgMyk7
CisgICAgY29uc3QgY2hhciogY29uc3QgbmFtZXNbM10gPSB7ICJidXR0IiwgInJvdW5kIiwgInNx
dWFyZSIgfTsKKyAgICByZXR1cm4gbmFtZXNbY2FwXTsKK30KKworYm9vbCBwYXJzZUxpbmVKb2lu
KGNvbnN0IFN0cmluZyYgcywgTGluZUpvaW4mIGpvaW4pCit7CisgICAgaWYgKHMgPT0gIm1pdGVy
IikgeworICAgICAgICBqb2luID0gTWl0ZXJKb2luOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKHMgPT0gInJvdW5kIikgeworICAgICAgICBqb2luID0gUm91bmRKb2luOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0gImJldmVsIikgeworICAg
ICAgICBqb2luID0gQmV2ZWxKb2luOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgbGluZUpvaW5OYW1lKExpbmVKb2luIGpvaW4pCit7
CisgICAgQVNTRVJUKGpvaW4gPj0gMCk7CisgICAgQVNTRVJUKGpvaW4gPCAzKTsKKyAgICBjb25z
dCBjaGFyKiBjb25zdCBuYW1lc1szXSA9IHsgIm1pdGVyIiwgInJvdW5kIiwgImJldmVsIiB9Owor
ICAgIHJldHVybiBuYW1lc1tqb2luXTsKK30KKworfQpJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgiCisKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CisjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXI6OkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVy
KCkKKyAgICA6IEdyYXBoaWNzUmVzb3VyY2UoKQoreworfQorCitHcmFwaGljc1Jlc291cmNlQ2xp
cHBlcjo6fkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKCkKK3sKK30KKwordm9pZCBHcmFwaGljc1Jl
c291cmNlQ2xpcHBlcjo6cmVzZXRDbGlwRGF0YSgpCit7CisgICAgbV9jbGlwRGF0YS5jbGVhcigp
OworfQorCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyOjphZGRDbGlwRGF0YShjb25zdCBQ
YXRoJiBwYXRoLCBXaW5kUnVsZSBydWxlLCBib29sIGJib3hVbml0cykKK3sKKyAgICBtX2NsaXBE
YXRhLmFkZFBhdGgocGF0aCwgcnVsZSwgYmJveFVuaXRzKTsKK30KKworY29uc3QgQ2xpcERhdGFM
aXN0JiBHcmFwaGljc1Jlc291cmNlQ2xpcHBlcjo6Y2xpcERhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaXBEYXRhOworfQorCitUZXh0U3RyZWFtJiBHcmFwaGljc1Jlc291cmNlQ2xpcHBl
cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0
cyA8PCAiW3R5cGU9Q0xJUFBFUl0iOworICAgIHRzIDw8ICIgW2NsaXAgZGF0YT0iIDw8IGNsaXBE
YXRhKCkgPDwgIl0iOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgV2luZFJ1bGUgcnVsZSkKK3sKKyAgICBzd2l0Y2ggKHJ1bGUpIHsK
KyAgICAgICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAgICAgICAgICB0cyA8PCAiTk9OLVpFUk8i
OyBicmVhazsKKyAgICAgICAgY2FzZSBSVUxFX0VWRU5PREQ6CisgICAgICAgICAgICB0cyA8PCAi
RVZFTi1PREQiOyBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBEYXRhJiBkKQoreworICAg
IHRzIDw8ICJbd2luZGluZz0iIDw8IGQud2luZFJ1bGUgPDwgIl0iOworCisgICAgaWYgKGQuYmJv
eFVuaXRzKQorICAgICAgICB0cyA8PCAiIFtib3VuZGluZyBib3ggbW9kZT0iIDw8IGQuYmJveFVu
aXRzIDw8ICJdIjsKKworICAgIHRzIDw8ICIgW3BhdGg9IiA8PCBkLnBhdGguZGVidWdTdHJpbmco
KSA8PCAiXSI7CisgICAgcmV0dXJuIHRzOworfQorCitQYXNzUmVmUHRyPEdyYXBoaWNzUmVzb3Vy
Y2VDbGlwcGVyPiBnZXRDbGlwcGVyQnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2U+IHJlc291cmNlID0g
Z2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJlc291cmNlICYmIHJlc291
cmNlLT5pc0NsaXBwZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdyYXBoaWNzUmVz
b3VyY2VDbGlwcGVyKj4ocmVzb3VyY2UuZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJl
dmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgR3JhcGhpY3NUeXBlc19oCisjZGVmaW5lIEdyYXBoaWNzVHlwZXNfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAgICAvLyBOb3RlOiBUaGVzZSBj
b25zdGFudHMgZXhhY3RseSBtYXRjaCB0aGUgTlNDb21wb3NpdGVPcGVyYXRvciBjb25zdGFudHMg
b2YKKyAgICAvLyBBcHBLaXQgb24gTWFjIE9TIFguIElmIHRoYXQncyBldmVyIGNoYW5nZWQsIHdl
J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBNYWMKKyAgICAvLyBwbGF0Zm9ybSBjb2RlIHRvIG1hcCBv
bmUgdG8gdGhlIG90aGVyLgorICAgIGVudW0gQ29tcG9zaXRlT3BlcmF0b3IgeworICAgICAgICBD
b21wb3NpdGVDbGVhciwKKyAgICAgICAgQ29tcG9zaXRlQ29weSwKKyAgICAgICAgQ29tcG9zaXRl
U291cmNlT3ZlciwKKyAgICAgICAgQ29tcG9zaXRlU291cmNlSW4sCisgICAgICAgIENvbXBvc2l0
ZVNvdXJjZU91dCwKKyAgICAgICAgQ29tcG9zaXRlU291cmNlQXRvcCwKKyAgICAgICAgQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyLAorICAgICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbkluLAorICAg
ICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCwKKyAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRp
b25BdG9wLAorICAgICAgICBDb21wb3NpdGVYT1IsCisgICAgICAgIENvbXBvc2l0ZVBsdXNEYXJr
ZXIsCisgICAgICAgIENvbXBvc2l0ZUhpZ2hsaWdodCwKKyAgICAgICAgQ29tcG9zaXRlUGx1c0xp
Z2h0ZXIKKyAgICB9OworCisgICAgZW51bSBMaW5lQ2FwIHsgQnV0dENhcCwgUm91bmRDYXAsIFNx
dWFyZUNhcCB9OworCisgICAgZW51bSBMaW5lSm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBC
ZXZlbEpvaW4gfTsKKworICAgIGVudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7IEFsaWduTGVmdCwg
QWxpZ25SaWdodCwgQWxpZ25IQ2VudGVyIH07CisKKyAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0
b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBib29sIHBhcnNlQ29tcG9zaXRlT3BlcmF0
b3IoY29uc3QgU3RyaW5nJiwgQ29tcG9zaXRlT3BlcmF0b3ImKTsKKworICAgIFN0cmluZyBsaW5l
Q2FwTmFtZShMaW5lQ2FwKTsKKyAgICBib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmLCBM
aW5lQ2FwJik7CisKKyAgICBTdHJpbmcgbGluZUpvaW5OYW1lKExpbmVKb2luKTsKKyAgICBib29s
IHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiwgTGluZUpvaW4mKTsKKworfQorCisjZW5kaWYK
SW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaAkocmV2
aXNpb24gMCkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJfSAorI2RlZmluZSBHcmFwaGljc1Jlc291cmNlQ2xpcHBl
cl9ICisKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlLmgiCisjaW5jbHVkZSAiUGF0aC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgQ2xpcERhdGEgeworICAgICAgICBQ
YXRoIHBhdGg7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlOworICAgICAgICBib29sIGJib3hV
bml0cyA6IDE7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBTdGVwIGF3YXkgZnJvbSBEZXByZWNh
dGVkVmFsdWVMaXN0CisgICAgY2xhc3MgQ2xpcERhdGFMaXN0IDogcHVibGljIERlcHJlY2F0ZWRW
YWx1ZUxpc3Q8Q2xpcERhdGE+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGlubGluZSB2b2lkIGFk
ZFBhdGgoY29uc3QgUGF0aCYgcGF0aERhdGEsIFdpbmRSdWxlIHdpbmRSdWxlLCBib29sIGJib3hV
bml0cykKKyAgICAgICAgeworICAgICAgICAgICAgQ2xpcERhdGEgY2xpcERhdGE7CisKKyAgICAg
ICAgICAgIGNsaXBEYXRhLnBhdGggPSBwYXRoRGF0YTsKKyAgICAgICAgICAgIGNsaXBEYXRhLndp
bmRSdWxlID0gd2luZFJ1bGU7CisgICAgICAgICAgICBjbGlwRGF0YS5iYm94VW5pdHMgPSBiYm94
VW5pdHM7CisgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kKGNsaXBEYXRhKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBjbGFzcyBHcmFwaGljc1Jlc291cmNlQ2xpcHBlciA6IHB1YmxpYyBH
cmFwaGljc1Jlc291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdyYXBoaWNzUmVzb3VyY2VD
bGlwcGVyKCk7CisgICAgICAgIHZpcnR1YWwgfkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKCk7Cisg
ICAgICAKKyAgICAgICAgdm9pZCByZXNldENsaXBEYXRhKCk7CisgICAgICAgIHZvaWQgYWRkQ2xp
cERhdGEoY29uc3QgUGF0aCYsIFdpbmRSdWxlLCBib29sIGJib3hVbml0cyk7CisKKyAgICAgICAg
Y29uc3QgQ2xpcERhdGFMaXN0JiBjbGlwRGF0YSgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisK
KyAgICAgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHNwZWNpZmljIHJlbmRlcmluZyBk
ZXZpY2VzCisgICAgICAgIHZvaWQgYXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpcERhdGFMaXN0IG1fY2xpcERh
dGE7CisgICAgfTsKKworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdp
bmRSdWxlKTsKKyAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBD
bGlwRGF0YSYpOworCisgICAgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNlQ2xpcHBlcj4gZ2V0
Q2xpcHBlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJfSAo=
</data>
<flag name="review"
          id="3870"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11249</attachid>
            <date>2006-10-27 11:32:39 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #5: platform-qt-changes.diff, Initial patch</desc>
            <filename>platform-qt-changes.diff</filename>
            <type>text/plain</type>
            <size>7509</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzUmVzb3VyY2VJbWFnZVF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlSW1hZ2VR
dC5jcHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291
cmNlSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgor
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKKworI2luY2x1ZGUgIklu
dFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogRm9yIG5vdyB3ZSBv
bmx5IHN0dWIgdGhpcyBtZXRob2RzIQorCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTo6aW5p
dChjb25zdCBJbWFnZSYpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNvdXJjZUltYWdlOjppbml0
KEludFNpemUgc2l6ZSkKK3sKK30KKworSW50U2l6ZSBHcmFwaGljc1Jlc291cmNlSW1hZ2U6OnNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NSZXNvdXJjZU1hc2tlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc1Jlc291cmNlTWFza2VyUXQuY3BwCShyZXZpc2lvbiAwKQorKysgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZU1hc2tlclF0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVz
b3VyY2VNYXNrZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEdyYXBoaWNzUmVz
b3VyY2VNYXNrZXI6OmFwcGx5TWFzayhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25z
dAoreworCS8vIEZJWE1FOiBpbXBsZW1lbnQgbWUgOi0pCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NSZXNvdXJjZUNsaXBwZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdC5jcHAJKHJldmlzaW9uIDApCisrKyBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlQ2xpcHBlclF0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAg
ICAgICAgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlci5oIgorCisjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZVF0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBHcmFwaGljc1Jlc291cmNlQ2xpcHBlcjo6YXBw
bHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgS1JlbmRl
cmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQgPSByZW5kZXJpbmdEZXZpY2UoKS0+Y3VycmVudENv
bnRleHQoKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0KiBxdENvbnRleHQgPSBzdGF0
aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0Kj4oY29udGV4dCk7CisgICAgaWYgKG1f
Y2xpcERhdGEuY291bnQoKSA8IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQtPmNs
ZWFyUGF0aCgpOworCisgICAgUVBhaW50ZXJQYXRoIG5ld1BhdGg7CisKKyAgICBib29sIGhldGVy
b2dlbm91c0NsaXBSdWxlcyA9IGZhbHNlOworICAgIFdpbmRSdWxlIGNsaXBSdWxlID0gbV9jbGlw
RGF0YVswXS53aW5kUnVsZTsKKworICAgIGZvciAodW5zaWduZWQgaW50IHggPSAwOyB4IDwgbV9j
bGlwRGF0YS5jb3VudCgpOyB4KyspIHsKKyAgICAgICAgQ2xpcERhdGEgY2xpcERhdGEgPSBtX2Ns
aXBEYXRhW3hdOworICAgICAgICBpZiAoY2xpcERhdGEud2luZFJ1bGUgIT0gY2xpcFJ1bGUpCisg
ICAgICAgICAgICBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSB0cnVlOworICAgICAgIAorICAgICAg
ICBRUGFpbnRlclBhdGggcGF0aCA9ICooY2xpcERhdGEucGF0aC5wbGF0Zm9ybVBhdGgoKSk7Cisg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmICghbmV3UGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICBuZXdQYXRoLmNsb3NlU3Vi
cGF0aCgpOworCisgICAgICAgIC8vIFJlc3BlY3QgY2xpcHBpbmcgdW5pdHMuLi4KKyAgICAgICAg
UU1hdHJpeCB0cmFuc2Zvcm07CisKKyAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hVbml0cykgewor
ICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShib3VuZGluZ0JveC54KCksIGJvdW5kaW5n
Qm94LnkoKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUoYm91bmRpbmdCb3gud2lkdGgo
KSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVE9ETzog
c3VwcG9ydCBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcyEKKyAgICAgICAgLy9jbGlwUnVsZSA9IChj
bGlwRGF0YS53aW5kUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IFF0OjpPZGRFdmVuRmlsbCA6IFF0
OjpXaW5kaW5nRmlsbCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXRoLmVsZW1l
bnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVu
dCAmY3VyID0gcGF0aC5lbGVtZW50QXQoaSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoY3VyLnR5
cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6TW92ZVRvRWxlbWVudDoK
KyAgICAgICAgICAgICAgICAgICAgbmV3UGF0aC5tb3ZlVG8oUVBvaW50RihjdXIueCwgY3VyLnkp
ICogdHJhbnNmb3JtKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBRUGFpbnRlclBhdGg6OkxpbmVUb0VsZW1lbnQ6CisgICAgICAgICAgICAgICAgICAg
IG5ld1BhdGgubGluZVRvKFFQb2ludEYoY3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRo
OjpDdXJ2ZVRvRWxlbWVudDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzEgPSBwYXRoLmVsZW1lbnRBdChpICsgMSk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzIgPSBw
YXRoLmVsZW1lbnRBdChpICsgMik7CisKKyAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzEu
dHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgIFFfQVNTRVJUKGMyLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1l
bnQpOworCisgICAgICAgICAgICAgICAgICAgIG5ld1BhdGguY3ViaWNUbyhRUG9pbnRGKGN1ci54
LCBjdXIueSkgKiB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRUG9pbnRGKGMxLngsIGMxLnkpICogdHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUVBvaW50RihjMi54LCBjMi55KSAqIHRyYW5zZm9ybSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1cnZlVG9E
YXRhRWxlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQoZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChtX2NsaXBEYXRhLmNvdW50KCkpIHsKKyAgICAgICAgLy8gRklYTUUhCisgICAgICAg
IC8vIFdlIGRvbid0IGN1cnJlbnRseSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNsaXAgcnVsZXMu
CisgICAgICAgIC8vIHdlIHdvdWxkIGhhdmUgdG8gZGV0ZWN0IHN1Y2gsIGRyYXcgdG8gYSBtYXNr
LCBhbmQgdGhlbiBjbGlwCisgICAgICAgIC8vIHRvIHRoYXQgbWFzaworICAgICAgICAvLyBpZiAo
IUNHQ29udGV4dElzUGF0aEVtcHR5KGNnQ29udGV4dCkpIHsKKyAgICAgICAgICAgIGlmIChjbGlw
UnVsZSA9PSBSVUxFX0VWRU5PREQpCisgICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRGaWxsUnVs
ZShRdDo6T2RkRXZlbkZpbGwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1BhdGguc2V0RmlsbFJ1bGUoUXQ6OldpbmRpbmdGaWxsKTsKKyAgICAgICAgLy8gfQorICAgIH0K
KworICAgIHF0Q29udGV4dC0+cGFpbnRlcigpLnNldENsaXBQYXRoKG5ld1BhdGgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKy8vIHZpbTp0cz00Om5vZXQK
</data>
<flag name="review"
          id="3871"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11250</attachid>
            <date>2006-10-27 11:33:23 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #6: platform-quartz-changes.diff, Initial patch</desc>
            <filename>platform-quartz-changes.diff</filename>
            <type>text/plain</type>
            <size>12273</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNlQ2xpcHBlclF1
YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9xdWFydHovR3JhcGhpY3NS
ZXNvdXJjZUNsaXBwZXJRdWFydHoubW0JKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9ncmFwaGlj
cy9xdWFydHovR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFydHoubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgIDIwMDUgQWxleGFu
ZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZmRlZiBTVkdfU1VQUE9SVAorI2ltcG9ydCAiR3JhcGhpY3NSZXNvdXJjZUNsaXBw
ZXIuaCIKKworI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJLQ2FudmFzRmls
dGVyUXVhcnR6LmgiCisjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCisjaW1wb3J0
ICJRdWFydHpTdXBwb3J0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gp
IGNvbnN0Cit7CisgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQgPSByZW5kZXJp
bmdEZXZpY2UoKS0+Y3VycmVudENvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHoqPihjb250ZXh0KS0+
Y2dDb250ZXh0KCk7CisgICAgaWYgKG1fY2xpcERhdGEuY291bnQoKSA8IDEpCisgICAgICAgIHJl
dHVybjsKKworICAgIEJPT0wgaGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVzID0gTk87CisgICAgV2luZFJ1
bGUgY2xpcFJ1bGUgPSBtX2NsaXBEYXRhWzBdLndpbmRSdWxlOworCisgICAgY29udGV4dC0+Y2xl
YXJQYXRoKCk7CisKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBiYm94VHJhbnNmb3JtID0gQ0dBZmZp
bmVUcmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdE1ha2UoMCwwLDEsMSksIENHUmVj
dChib3VuZGluZ0JveCkpOworCisgICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IG1fY2xpcERh
dGEuY291bnQoKTsgeCsrKSB7CisgICAgICAgIENsaXBEYXRhIGRhdGEgPSBtX2NsaXBEYXRhW3hd
OworICAgICAgICBpZiAoZGF0YS53aW5kUnVsZSAhPSBjbGlwUnVsZSkKKyAgICAgICAgICAgIGhl
dGVyb2dlbm91c0NsaXBSdWxlcyA9IFlFUzsKKyAgICAgICAgCisgICAgICAgIENHUGF0aFJlZiBj
bGlwUGF0aCA9IGRhdGEucGF0aC5wbGF0Zm9ybVBhdGgoKTsKKworICAgICAgICBpZiAoZGF0YS5i
Ym94VW5pdHMpIHsKKyAgICAgICAgICAgIENHTXV0YWJsZVBhdGhSZWYgdHJhbnNmb3JtZWRQYXRo
ID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOworICAgICAgICAgICAgQ0dQYXRoQWRkUGF0aCh0cmFu
c2Zvcm1lZFBhdGgsICZiYm94VHJhbnNmb3JtLCBjbGlwUGF0aCk7CisgICAgICAgICAgICBDR0Nv
bnRleHRBZGRQYXRoKGNnQ29udGV4dCwgdHJhbnNmb3JtZWRQYXRoKTsKKyAgICAgICAgICAgIENH
UGF0aFJlbGVhc2UodHJhbnNmb3JtZWRQYXRoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBDR0NvbnRleHRBZGRQYXRoKGNnQ29udGV4dCwgY2xpcFBhdGgpOworICAgIH0KKworICAgIGlm
IChtX2NsaXBEYXRhLmNvdW50KCkpIHsKKyAgICAgICAgLy8gRklYTUUhCisgICAgICAgIC8vIFdl
IGRvbid0IGN1cnJlbnRseSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNsaXAgcnVsZXMuCisgICAg
ICAgIC8vIHdlIHdvdWxkIGhhdmUgdG8gZGV0ZWN0IHN1Y2gsIGRyYXcgdG8gYSBtYXNrLCBhbmQg
dGhlbiBjbGlwCisgICAgICAgIC8vIHRvIHRoYXQgbWFzayAgICAgICAgICAgICAgICAKKyAgICAg
ICAgaWYgKCFDR0NvbnRleHRJc1BhdGhFbXB0eShjZ0NvbnRleHQpKSB7CisgICAgICAgICAgICBp
ZiAoY2xpcFJ1bGUgPT0gUlVMRV9FVkVOT0REKQorICAgICAgICAgICAgICAgIENHQ29udGV4dEVP
Q2xpcChjZ0NvbnRleHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIENHQ29u
dGV4dENsaXAoY2dDb250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6IHBsYXRmb3JtL2dyYXBo
aWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNlSW1hZ2VRdWFydHoubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0ei5tbQko
cmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNl
SW1hZ2VRdWFydHoubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFNWR19TVVBQT1JUCisjaW1wb3J0
ICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFw
aGljc1Jlc291cmNlSW1hZ2U6On5HcmFwaGljc1Jlc291cmNlSW1hZ2UoKQoreworICAgIENHTGF5
ZXJSZWxlYXNlKG1fY2dMYXllcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNvdXJjZUltYWdlOjpp
bml0KGNvbnN0IEltYWdlJikKK3sKKyAgICAvLyBuby1vcAorfQorCit2b2lkIEdyYXBoaWNzUmVz
b3VyY2VJbWFnZTo6aW5pdChJbnRTaXplIHNpemUpCit7CisgICAgbV9zaXplID0gc2l6ZTsgICAg
Cit9CisKK0ludFNpemUgR3JhcGhpY3NSZXNvdXJjZUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zaXplOworfQorCitDR0xheWVyUmVmIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTo6
Y2dMYXllcigpCit7CisgICAgcmV0dXJuIG1fY2dMYXllcjsKK30KKwordm9pZCBHcmFwaGljc1Jl
c291cmNlSW1hZ2U6OnNldENHTGF5ZXIoQ0dMYXllclJlZiBsYXllcikKK3sKKyAgICBpZiAobV9j
Z0xheWVyICE9IGxheWVyKSB7CisgICAgICAgIENHTGF5ZXJSZWxlYXNlKG1fY2dMYXllcik7Cisg
ICAgICAgIG1fY2dMYXllciA9IENHTGF5ZXJSZXRhaW4obGF5ZXIpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6IHBsYXRm
b3JtL2dyYXBoaWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNlTWFza2VyUXVhcnR6Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNlTWFza2Vy
UXVhcnR6Lm1tCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBo
aWNzUmVzb3VyY2VNYXNrZXJRdWFydHoubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBh
bm92QGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWZkZWYgU1ZH
X1NVUFBPUlQKKyNpbXBvcnQgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKKyNpbXBvcnQgIkdy
YXBoaWNzUmVzb3VyY2VJbWFnZS5oIgorI2ltcG9ydCAiU1ZHUmVuZGVyU3R5bGUuaCIKKworI2lt
cG9ydCAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgorI2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5o
IgorCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBDSUltYWdlKiBhcHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIoQ0lJbWFn
ZSogaW5wdXRJbWFnZSkKK3sKKyAgICBDSUZpbHRlciogbHVtaW5hbmNlVG9BbHBoYSA9IFtDSUZp
bHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKKyAgICBbbHVtaW5hbmNlVG9B
bHBoYSBzZXREZWZhdWx0c107CisgICAgQ0dGbG9hdCBhbHBoYVs0XSA9IHswLjIxMjUsIDAuNzE1
NCwgMC4wNzIxLCAwfTsKKyAgICBDR0Zsb2F0IHplcm9bNF0gPSB7MCwgMCwgMCwgMH07CisgICAg
W2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdl
Il07ICAKKyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0
aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0UlZlY3RvciJdOworICAgIFtsdW1p
bmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291
bnQ6NF0gZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07CisgICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0
VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJp
bnB1dEJWZWN0b3IiXTsKKyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3Ig
dmVjdG9yV2l0aFZhbHVlczphbHBoYSBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEFWZWN0b3IiXTsK
KyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVl
czp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOworICAgIHJldHVybiBb
bHVtaW5hbmNlVG9BbHBoYSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Cit9CisKK3N0YXRp
YyBDSUltYWdlKiBhcHBseUV4cGFuZEFscGhhdG9HcmF5c2NhbGVGaWx0ZXIoQ0lJbWFnZSogaW5w
dXRJbWFnZSkKK3sKKyAgICBDSUZpbHRlciogYWxwaGFUb0dyYXlzY2FsZSA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKKyAgICBDR0Zsb2F0IHplcm9bNF0gPSB7
MCwgMCwgMCwgMH07CisgICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0RGVmYXVsdHNdOworICAgIFth
bHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJd
OworICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFs
dWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07CisgICAgW2FscGhhVG9H
cmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0
XSBmb3JLZXk6QCJpbnB1dEdWZWN0b3IiXTsKKyAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1
ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0
QlZlY3RvciJdOworICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0
b3JXaXRoWDowLjAgWTowLjAgWjowLjAgVzoxLjBdIGZvcktleTpAImlucHV0QVZlY3RvciJdOwor
ICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAg
WToxLjAgWjoxLjAgVzowLjBdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOworICAgIHJldHVy
biBbYWxwaGFUb0dyYXlzY2FsZSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Cit9CisKK3N0
YXRpYyBDSUltYWdlKiB0cmFuc2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKENJSW1hZ2UqIGlu
cHV0SW1hZ2UpCit7CisgICAgQ0lGaWx0ZXIqIGJsYWNrQmFja2dyb3VuZCA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIkNJQ29uc3RhbnRDb2xvckdlbmVyYXRvciJdOworICAgIFtibGFja0Jh
Y2tncm91bmQgc2V0VmFsdWU6W0NJQ29sb3IgY29sb3JXaXRoUmVkOjAuMCBncmVlbjowLjAgYmx1
ZTowLjAgYWxwaGE6MS4wXSBmb3JLZXk6QCJpbnB1dENvbG9yIl07CisKKyAgICBDSUZpbHRlciog
bGF5ZXJPdmVyQmxhY2sgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92ZXJD
b21wb3NpdGluZyJdOworICAgIFtsYXllck92ZXJCbGFjayBzZXRWYWx1ZTpbYmxhY2tCYWNrZ3Jv
dW5kIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJ
bWFnZSJdOyAgCisgICAgW2xheWVyT3ZlckJsYWNrIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5
OkAiaW5wdXRJbWFnZSJdOyAgCisKKyAgICBDSUltYWdlKiBsdW1pbmFuY2VBbHBoYSA9IGFwcGx5
THVtaW5hbmNlVG9BbHBoYUZpbHRlcihbbGF5ZXJPdmVyQmxhY2sgdmFsdWVGb3JLZXk6QCJvdXRw
dXRJbWFnZSJdKTsKKyAgICBDSUltYWdlKiBsdW1pbmFuY2VBc0dyYXlzY2FsZSA9IGFwcGx5RXhw
YW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihsdW1pbmFuY2VBbHBoYSk7CisgICAgQ0lJbWFnZSog
YWxwaGFBc0dyYXlzY2FsZSA9IGFwcGx5RXhwYW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihpbnB1
dEltYWdlKTsKKworICAgIENJRmlsdGVyKiBtdWx0aXBsaWVkR3JheXNjYWxlID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lNdWx0aXBseUNvbXBvc2l0aW5nIl07CisgICAgW211bHRpcGxp
ZWRHcmF5c2NhbGUgc2V0VmFsdWU6bHVtaW5hbmNlQXNHcmF5c2NhbGUgZm9yS2V5OkAiaW5wdXRC
YWNrZ3JvdW5kSW1hZ2UiXTsgIAorICAgIFttdWx0aXBsaWVkR3JheXNjYWxlIHNldFZhbHVlOmFs
cGhhQXNHcmF5c2NhbGUgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOyAgCisgICAgcmV0dXJuIFttdWx0
aXBsaWVkR3JheXNjYWxlIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKK30KKwordm9pZCBH
cmFwaGljc1Jlc291cmNlTWFza2VyOjphcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWFzaykKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IENyZWF0ZSBncmF5c2NhbGUgYml0bWFwIGNvbnRleHQKKyAgICBpbnQgd2lkdGggPSBtX21hc2st
PnNpemUoKS53aWR0aCgpOworICAgIGludCBoZWlnaHQgPSBtX21hc2stPnNpemUoKS5oZWlnaHQo
KTsKKyAgICB2b2lkKiBpbWFnZUJ1ZmZlciA9IGZhc3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOwor
ICAgIENHQ29sb3JTcGFjZVJlZiBncmF5Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZUdyYXkoKTsKKyAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFw
Q29udGV4dENyZWF0ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlD
b2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZSk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShn
cmF5Q29sb3JTcGFjZSk7CisgICAgQ0lDb250ZXh0KiBjaUdyYXlzY2FsZUNvbnRleHQgPSBbQ0lD
b250ZXh0IGNvbnRleHRXaXRoQ0dDb250ZXh0OmdyYXlzY2FsZUNvbnRleHQgb3B0aW9uczpuaWxd
OworCisgICAgR3JhcGhpY3NSZXNvdXJjZUltYWdlKiBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxH
cmFwaGljc1Jlc291cmNlSW1hZ2UqPihtX21hc2suZ2V0KCkpOworICAgIENJSW1hZ2UqIGdyYXlz
Y2FsZU1hc2sgPSB0cmFuc2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKFtDSUltYWdlIGltYWdl
V2l0aENHTGF5ZXI6bWFza0ltYWdlLT5jZ0xheWVyKCldKTsKKyAgICBbY2lHcmF5c2NhbGVDb250
ZXh0IGRyYXdJbWFnZTpncmF5c2NhbGVNYXNrIGF0UG9pbnQ6Q0dQb2ludFplcm8gZnJvbVJlY3Q6
Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07CisKKyAgICBDR0ltYWdlUmVmIGdyYXlz
Y2FsZUltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxlQ29udGV4dCk7
CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHoqPihyZW5kZXJpbmdEZXZpY2UoKSktPmN1cnJlbnRDR0NvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRDbGlwVG9NYXNrKGNnQ29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVp
Z2h0KSwgZ3JheXNjYWxlSW1hZ2UpOworICAgIAorICAgIENHSW1hZ2VSZWxlYXNlKGdyYXlzY2Fs
ZUltYWdlKTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKGdyYXlzY2FsZUNvbnRleHQpOworICAgIGZh
c3RGcmVlKGltYWdlQnVmZmVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQK
</data>
<flag name="review"
          id="3872"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11251</attachid>
            <date>2006-10-27 11:34:42 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #7: ksvg-changes.diff, Initial patch</desc>
            <filename>ksvg-changes.diff</filename>
            <type>text/plain</type>
            <size>15483</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2
Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxNzMzNSkKKysrIGtzdmcyL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjZGVmaW5lIFNWR01h
c2tFbGVtZW50X0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tl
ci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAj
aW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oIgpAQCAtNTIsMTAgKzUyLDEwIEBA
CiAKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0
eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQog
ICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwotICAgICAgICB2aXJ0dWFsIEtDYW52YXNNYXNrZXIqIGNhbnZhc1Jl
c291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgR3JhcGhpY3NSZXNvdXJjZU1hc2tlciogY2FudmFz
UmVzb3VyY2UoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgS0NhbnZhc0ltYWdlKiBkcmF3
TWFza2VyQ29udGVudCgpOworICAgICAgICBHcmFwaGljc1Jlc291cmNlSW1hZ2UqIGRyYXdNYXNr
ZXJDb250ZW50KCk7CiAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCkBAIC02OCw3ICs2OCw3IEBACiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBLQ2FudmFzTWFza2VyKiBtX21hc2tlcjsKKyAgICAgICAgUmVmUHRyPEdy
YXBoaWNzUmVzb3VyY2VNYXNrZXI+IG1fbWFza2VyOwogICAgICAgICBib29sIG1fZGlydHk7CiAg
ICAgfTsKIApJbmRleDoga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTczMzUpCisrKyBr
c3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0
LDYgQEAKIAogU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQogewotICAgIGRl
bGV0ZSBtX2ZpbHRlcjsKIH0KIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIEZpbHRlclVuaXRzLCBm
aWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0
ZXJVbml0cykKQEAgLTExNiw3ICsxMTUsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlm
ICghbV9maWx0ZXIpCi0gICAgICAgIG1fZmlsdGVyID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZpbHRl
cio+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVSZXNvdXJjZShSU19GSUxURVIpKTsKKyAgICAg
ICAgbV9maWx0ZXIgPSBzdGF0aWNfY2FzdDxLQ2FudmFzRmlsdGVyKj4ocmVuZGVyaW5nRGV2aWNl
KCktPmNyZWF0ZVJlc291cmNlKFJTX0ZJTFRFUikuZ2V0KCkpOwogCiAgICAgYm9vbCBmaWx0ZXJC
Qm94TW9kZSA9IGZpbHRlclVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YOwogICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJCb3VuZGluZ0JveE1vZGUo
ZmlsdGVyQkJveE1vZGUpOwpAQCAtMTQxLDcgKzE0MCw3IEBACiAgICAgICAgICAgICAgICAgbV9m
aWx0ZXItPmFkZEZpbHRlckVmZmVjdChmZS0+ZmlsdGVyRWZmZWN0KCkpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHJldHVybiBtX2ZpbHRlcjsKKyAgICByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7CiB9
CiAKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysr
IGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJL
UmVuZGVyaW5nRGV2aWNlLmgiCisjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgpJbmRleDoga3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtz
dmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTczMzUpCisrKyBrc3ZnMi9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICNkZWZpbmUgS1NWR19TVkdDbGlwUGF0aEVsZW1lbnRJbXBsX0gKICNpZmRlZiBTVkdfU1VQUE9S
VAogCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291
cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIK
ICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5oIgpAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAKICAgICAgICAgdmlydHVh
bCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAK
LSAgICAgICAgdmlydHVhbCBLQ2FudmFzQ2xpcHBlciogY2FudmFzUmVzb3VyY2UoKTsKKyAgICAg
ICAgdmlydHVhbCBHcmFwaGljc1Jlc291cmNlQ2xpcHBlciogY2FudmFzUmVzb3VyY2UoKTsKIAog
ICAgICAgICAvLyAnU1ZHQ2xpcFBhdGhFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwpAQCAtNTYsNyAr
NTYsNyBAQAogCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDbGlw
UGF0aEVsZW1lbnQsIGludCwgaW50LCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzKQogCi0g
ICAgICAgIEtDYW52YXNDbGlwcGVyKiBtX2NsaXBwZXI7CisgICAgICAgIFJlZlB0cjxHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlcj4gbV9jbGlwcGVyOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gMTczMzUpCisrKyBrc3ZnMi9z
dmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwotICAg
IGNsYXNzIEtDYW52YXNSZXNvdXJjZTsKKyAgICBjbGFzcyBHcmFwaGljc1Jlc291cmNlOwogICAg
IGNsYXNzIEtSZW5kZXJpbmdEZXZpY2U7CiAgICAgY2xhc3MgUmVuZGVyUGF0aDsKICAgICBjbGFz
cyBSZW5kZXJWaWV3OwpAQCAtNTAsNyArNTAsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7Ci0gICAgICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlKiBjYW52YXNSZXNvdXJj
ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgdmlydHVhbCBHcmFwaGljc1Jlc291cmNlKiBjYW52
YXNSZXNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIApJbmRleDoga3N2ZzIv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJTVkdNYXNrRWxl
bWVudC5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS0NhbnZh
c0ltYWdlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAi
S1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgpAQCAtNTUsNyArNTUsNiBAQAogCiBTVkdNYXNrRWxlbWVudDo6
flNWR01hc2tFbGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9tYXNrZXI7CiB9CiAKIEFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgs
IGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCkBA
IC0xMDEsMTQgKzEwMCwxNCBAQAogICAgIH0KIH0KIAotS0NhbnZhc0ltYWdlKiBTVkdNYXNrRWxl
bWVudDo6ZHJhd01hc2tlckNvbnRlbnQoKQorR3JhcGhpY3NSZXNvdXJjZUltYWdlKiBTVkdNYXNr
RWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQoKQogewogICAgIEtSZW5kZXJpbmdEZXZpY2UqIGRl
dmljZSA9IHJlbmRlcmluZ0RldmljZSgpOwogICAgIGlmICghZGV2aWNlLT5jdXJyZW50Q29udGV4
dCgpKSAvLyBGSVhNRTogaGFjayBmb3Igbm93IHVudGlsIEltYWdlOjpsb2NrRm9jdXMgZXhpc3Rz
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgS0NhbnZhc0ltYWdlKiBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxLQ2FudmFzSW1h
Z2UqPihkZXZpY2UtPmNyZWF0ZVJlc291cmNlKFJTX0lNQUdFKSk7CisgICAgR3JhcGhpY3NSZXNv
dXJjZUltYWdlKiBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxHcmFwaGljc1Jlc291cmNlSW1hZ2Uq
PihkZXZpY2UtPmNyZWF0ZVJlc291cmNlKFJTX0lNQUdFKS5nZXQoKSk7CiAKICAgICBJbnRTaXpl
IHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0
KCktPnZhbHVlKCkpKTsKICAgICBtYXNrSW1hZ2UtPmluaXQoc2l6ZSk7CkBAIC0xMzcsMTggKzEz
NiwxOCBAQAogICAgIHJldHVybiBtYXNrQ29udGFpbmVyOwogfQogCi1LQ2FudmFzTWFza2VyKiBT
VkdNYXNrRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQorR3JhcGhpY3NSZXNvdXJjZU1hc2tlciog
U1ZHTWFza0VsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBpZiAoIW1fbWFza2VyKSB7
Ci0gICAgICAgIG1fbWFza2VyID0gc3RhdGljX2Nhc3Q8S0NhbnZhc01hc2tlcio+KHJlbmRlcmlu
Z0RldmljZSgpLT5jcmVhdGVSZXNvdXJjZShSU19NQVNLRVIpKTsKKyAgICAgICAgbV9tYXNrZXIg
PSBzdGF0aWNfY2FzdDxHcmFwaGljc1Jlc291cmNlTWFza2VyKj4ocmVuZGVyaW5nRGV2aWNlKCkt
PmNyZWF0ZVJlc291cmNlKFJTX01BU0tFUikuZ2V0KCkpOwogICAgICAgICBtX2RpcnR5ID0gdHJ1
ZTsKICAgICB9CiAgICAgaWYgKG1fZGlydHkpIHsKLSAgICAgICAgS0NhbnZhc0ltYWdlKiBuZXdN
YXNrSW1hZ2UgPSBkcmF3TWFza2VyQ29udGVudCgpOworICAgICAgICBHcmFwaGljc1Jlc291cmNl
SW1hZ2UqIG5ld01hc2tJbWFnZSA9IGRyYXdNYXNrZXJDb250ZW50KCk7CiAgICAgICAgIG1fbWFz
a2VyLT5zZXRNYXNrKG5ld01hc2tJbWFnZSk7CiAgICAgICAgIG1fZGlydHkgPSAobmV3TWFza0lt
YWdlICE9IDApOwogICAgIH0KLSAgICByZXR1cm4gbV9tYXNrZXI7CisgICAgcmV0dXJuIG1fbWFz
a2VyLmdldCgpOwogfQogCiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE3MzM1KQorKysga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAj
aW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR0NvbnRhaW5lci5oIgpAQCAtNTAsNyArNTAsNyBAQAogICAgICwgU1ZHTGFuZ1NwYWNlKCkK
ICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHRml0VG9WaWV3
Qm94KCkKLSAgICAsIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKCkKKyAgICAsIEdyYXBoaWNzUmVz
b3VyY2VMaXN0ZW5lcigpCiAgICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwg
dmlld3BvcnRFbGVtZW50KCkpKQogICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJ
R0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCiAgICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKQEAgLTE4NCwxNiArMTg0LDE1IEBACiAg
ICAgICAgICAgICBzYXZlZENvbnRleHQgPSBjb25zdF9jYXN0PFNWR1BhdHRlcm5FbGVtZW50Kj4o
dGhpcyktPnB1c2hBdHRyaWJ1dGVDb250ZXh0KGFjdGl2ZUVsZW1lbnQpOwogICAgIH0KICAgICAK
LSAgICBkZWxldGUgbV90aWxlOwotICAgIG1fdGlsZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFn
ZSo+KGRldmljZS0+Y3JlYXRlUmVzb3VyY2UoUlNfSU1BR0UpKTsKKyAgICBtX3RpbGUgPSBzdGF0
aWNfY2FzdDxHcmFwaGljc1Jlc291cmNlSW1hZ2UqPihkZXZpY2UtPmNyZWF0ZVJlc291cmNlKFJT
X0lNQUdFKS5nZXQoKSk7CiAgICAgbV90aWxlLT5pbml0KG5ld1NpemUpOwogCi0gICAgS1JlbmRl
cmluZ0RldmljZUNvbnRleHQqIHBhdHRlcm5Db250ZXh0ID0gZGV2aWNlLT5jb250ZXh0Rm9ySW1h
Z2UobV90aWxlKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogcGF0dGVybkNvbnRleHQg
PSBkZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtX3RpbGUuZ2V0KCkpOwogICAgIGRldmljZS0+cHVz
aENvbnRleHQocGF0dGVybkNvbnRleHQpOwogICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFsdWUo
KSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CiAg
ICAgbV9wYWludFNlcnZlci0+c2V0QmJveChyZWN0KTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRQ
YXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXgpOwotICAgIG1fcGFpbnRTZXJ2
ZXItPnNldFRpbGUobV90aWxlKTsKKyAgICBtX3BhaW50U2VydmVyLT5zZXRUaWxlKG1fdGlsZS5n
ZXQoKSk7CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KHBhdHRlcm5Db250
ZXh0LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAko
cmV2aXNpb24gMTczMzUpCisrKyBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjZGVmaW5lIFNWR01hcmtlckVsZW1lbnRfSAogI2lm
ZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlICJLQ2FudmFzTWFya2VyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NSZXNvdXJjZU1hcmtlci5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdM
YW5nU3BhY2UuaCIKQEAgLTY1LDcgKzY1LDcgQEAKICAgICAKICAgICAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgICAg
ICB2aXJ0dWFsIEtDYW52YXNNYXJrZXIqIGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1
YWwgR3JhcGhpY3NSZXNvdXJjZU1hcmtlciogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgaW50LCBPcmll
bnRUeXBlLCBvcmllbnRUeXBlKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBSZWZQdHI8U1ZHQW5nbGU+LCBPcmllbnRB
bmdsZSwgb3JpZW50QW5nbGUpCiAKLSAgICAgICAgS0NhbnZhc01hcmtlciogbV9tYXJrZXI7Cisg
ICAgICAgIFJlZlB0cjxHcmFwaGljc1Jlc291cmNlTWFya2VyPiBtX21hcmtlcjsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE3MzM1KQorKysga3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLQ2Fu
dmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKICNpbmNsdWRl
ICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAi
U1ZHTGVuZ3RoLmgiCkluZGV4OiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzMzNSkK
KysrIGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNiBAQAogCiBTVkdNYXJrZXJFbGVtZW50Ojp+U1ZHTWFya2VyRWxlbWVudCgpCiB7Ci0g
ICAgZGVsZXRlIG1fbWFya2VyOwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTExMiwxMCArMTExLDEwIEBA
CiAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5nbGUpOwogfQogCi1LQ2FudmFzTWFya2Vy
KiBTVkdNYXJrZXJFbGVtZW50OjpjYW52YXNSZXNvdXJjZSgpCitHcmFwaGljc1Jlc291cmNlTWFy
a2VyKiBTVkdNYXJrZXJFbGVtZW50OjpjYW52YXNSZXNvdXJjZSgpCiB7CiAgICAgaWYgKCFtX21h
cmtlcikKLSAgICAgICAgbV9tYXJrZXIgPSBzdGF0aWNfY2FzdDxLQ2FudmFzTWFya2VyKj4ocmVu
ZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX01BUktFUikpOworICAgICAgICBtX21h
cmtlciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIqPihyZW5kZXJpbmdEZXZp
Y2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNfTUFSS0VSKS5nZXQoKSk7CiAgICAgCiAgICAgbV9tYXJr
ZXItPnNldE1hcmtlcihzdGF0aWNfY2FzdDxSZW5kZXJTVkdDb250YWluZXIqPihyZW5kZXJlcigp
KSk7CiAKQEAgLTEzMiw3ICsxMzEsNyBAQAogICAgIG1fbWFya2VyLT5zZXRSZWYocmVmWCgpLT52
YWx1ZSgpLCByZWZZKCktPnZhbHVlKCkpOwogICAgIG1fbWFya2VyLT5zZXRVc2VTdHJva2VXaWR0
aChtYXJrZXJVbml0cygpID09IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCk7CiAgICAgCi0g
ICAgcmV0dXJuIG1fbWFya2VyOworICAgIHJldHVybiBtX21hcmtlci5nZXQoKTsKIH0KIAogUmVu
ZGVyT2JqZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNp
b24gMTczMzUpCisrKyBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBsb25nLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYKQog
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwg
bG9uZywgbG9uZywgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKIAotICAgICAgICBLQ2FudmFzRmls
dGVyKiBtX2ZpbHRlcjsKKyAgICAgICAgUmVmUHRyPEtDYW52YXNGaWx0ZXI+IG1fZmlsdGVyOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGtzdmcyL3N2Zy9TVkdHcmFk
aWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmgJKHJldmlzaW9uIDE3MzM1KQorKysga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAgICAgY2xhc3MgU1ZHR3JhZGllbnRFbGVt
ZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyCiAg
ICAgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBTVkdHcmFkaWVudFR5cGUgewpJbmRleDog
a3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3MzM1KQorKysga3N2ZzIvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAKIAog
U1ZHQ2xpcFBhdGhFbGVtZW50Ojp+U1ZHQ2xpcFBhdGhFbGVtZW50KCkKIHsKLSAgICBkZWxldGUg
bV9jbGlwcGVyOwogfQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDbGlwUGF0
aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBDbGlwUGF0aFVuaXRzLCBj
bGlwUGF0aFVuaXRzLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIubG9jYWxOYW1lKCksIG1f
Y2xpcFBhdGhVbml0cykKQEAgLTcxLDEyICs3MCwxMyBAQAogICAgIH0KIH0KIAotS0NhbnZhc0Ns
aXBwZXIqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQorR3JhcGhpY3NSZXNv
dXJjZUNsaXBwZXIqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQogewogICAg
IGlmICghdmlldygpKQogICAgICAgICByZXR1cm4gMDsKKwogICAgIGlmICghbV9jbGlwcGVyKQot
ICAgICAgICBtX2NsaXBwZXIgPSBzdGF0aWNfY2FzdDxLQ2FudmFzQ2xpcHBlcio+KHJlbmRlcmlu
Z0RldmljZSgpLT5jcmVhdGVSZXNvdXJjZShSU19DTElQUEVSKSk7CisgICAgICAgIG1fY2xpcHBl
ciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKj4ocmVuZGVyaW5nRGV2aWNl
KCktPmNyZWF0ZVJlc291cmNlKFJTX0NMSVBQRVIpLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAg
IG1fY2xpcHBlci0+cmVzZXRDbGlwRGF0YSgpOwogCkBAIC05Nyw3ICs5Nyw3IEBACiAgICAgICAg
IH0KICAgICB9CiAgICAgY2xpcFBhdGhTdHlsZS0+ZGVyZWYodmlldygpLT5yZW5kZXJBcmVuYSgp
KTsKLSAgICByZXR1cm4gbV9jbGlwcGVyOworICAgIHJldHVybiBtX2NsaXBwZXIuZ2V0KCk7CiB9
CiAKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIGtzdmcy
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCi0jaW5jbHVkZSAiS0NhbnZhc0ltYWdlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNv
dXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgpJbmRleDoga3N2ZzIv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmgJKHJldmlzaW9uIDE3MzM1KQorKysga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdUZXN0
cy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogCi1jbGFzcyBLQ2FudmFzSW1hZ2U7
CitjbGFzcyBHcmFwaGljc1Jlc291cmNlSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7CkBA
IC00NSw3ICs0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
TGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHRml0VG9WaWV3Qm94LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyCiAgICAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBA
IC04Miw3ICs4Miw3IEBACiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdQYXR0ZXJuRWxlbWVudCwgaW50LCBpbnQsIFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRlcm5D
b250ZW50VW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0
PiwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKIAotICAgICAgICBtdXRhYmxl
IEtDYW52YXNJbWFnZSogbV90aWxlOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxHcmFwaGljc1Jl
c291cmNlSW1hZ2U+IG1fdGlsZTsKICAgICAgICAgbXV0YWJsZSBib29sIG1faWdub3JlQXR0cmli
dXRlQ2hhbmdlczsKICAgICAgICAgbXV0YWJsZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
KiBtX3BhaW50U2VydmVyOwogICAgICAgICAKSW5kZXg6IGtzdmcyL21pc2MvS0NhbnZhc1JlbmRl
cmluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdT
dHlsZS5jcHAJKHJldmlzaW9uIDE3MzM1KQorKysga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5n
U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJTb2xpZC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRl
clBhdGguaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIK
</data>
<flag name="review"
          id="3873"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11252</attachid>
            <date>2006-10-27 11:35:44 -0700</date>
            <delta_ts>2006-10-29 14:17:13 -0800</delta_ts>
            <desc>Chunk #8: rendering-changes.diff, Initial patch</desc>
            <filename>rendering-changes.diff</filename>
            <type>text/plain</type>
            <size>9317</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJl
bmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIHJlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4
IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIK
IAotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC0xNDMsNyArMTQzLDcgQEAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kIHx8ICFkcmF3c0NvbnRlbnRzKCkgfHwgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09
IEhJRERFTikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRl
ciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVy
KCkuc3Vic3RyaW5nKDEpKTsKKyAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJC
eUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLnN1YnN0cmluZygx
KSkuZ2V0KCk7CiAgICAgaWYgKCFmaXJzdENoaWxkKCkgJiYgIWZpbHRlcikKICAgICAgICAgcmV0
dXJuOyAvLyBTcGVjOiBncm91cHMgdy9vIGNoaWxkcmVuIHN0aWxsIG1heSByZW5kZXIgZmlsdGVy
IGNvbnRlbnQuCiAgICAgCkBAIC0xNzUsMTAgKzE3NSwxMCBAQAogICAgIAogICAgIEZsb2F0UmVj
dCBzdHJva2VCQm94ID0gcmVsYXRpdmVCQm94KHRydWUpOwogICAgIAotICAgIGlmIChLQ2FudmFz
Q2xpcHBlciAqY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2
Z1N0eWxlKCktPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkKKyAgICBpZiAoR3JhcGhpY3NSZXNv
dXJjZUNsaXBwZXIgKmNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgp
LT5zdmdTdHlsZSgpLT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkuZ2V0KCkpCiAgICAgICAgIGNs
aXBwZXItPmFwcGx5Q2xpcChzdHJva2VCQm94KTsKIAotICAgIGlmIChLQ2FudmFzTWFza2VyICpt
YXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPm1h
c2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkKKyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZU1hc2tl
ciAqbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgp
LT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkuZ2V0KCkpCiAgICAgICAgIG1hc2tlci0+YXBw
bHlNYXNrKHN0cm9rZUJCb3gpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IHN0eWxlKCktPm9wYWNp
dHkoKTsKQEAgLTI3MSw3ICsyNzEsNyBAQAogICAgICAgICByZXBhaW50UmVjdC51bml0ZShjdXJy
ZW50LT5nZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkpOwogICAgIAogICAgIC8vIEZpbHRlcnMgY2Fu
IGV4cGFuZCB0aGUgYm91bmRpbmcgYm94Ci0gICAgS0NhbnZhc0ZpbHRlciAqZmlsdGVyID0gZ2V0
RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWx0ZXIoKS5zdWJz
dHJpbmcoMSkpOworICAgIEtDYW52YXNGaWx0ZXIgKmZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9j
dW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKS5nZXQo
KTsKICAgICBpZiAoZmlsdGVyKQogICAgICAgICByZXBhaW50UmVjdC51bml0ZShlbmNsb3NpbmdJ
bnRSZWN0KGZpbHRlci0+ZmlsdGVyQkJveEZvckl0ZW1CQm94KHJlcGFpbnRSZWN0KSkpOwogCklu
ZGV4OiByZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1Jl
bmRlclBhdGguY3BwCShyZXZpc2lvbiAxNzMzNSkKKysrIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAiS0Nh
bnZhc0NsaXBwZXIuaCIKLSNpbmNsdWRlICJLQ2FudmFzTWFza2VyLmgiCi0jaW5jbHVkZSAiS0Nh
bnZhc01hcmtlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3Vy
Y2VNYXJrZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKICNpbmNsdWRl
ICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAt
MTM5LDcgKzEzOSw3IEBACiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFu
c2Zvcm0oKS5tYXBSZWN0KHJlbGF0aXZlQkJveCh0cnVlKSk7CiAgICAgCiAgICAgLy8gRmlsdGVy
cyBjYW4gZXhwYW5kIHRoZSBib3VuZGluZyBib3gKLSAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIg
PSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigp
LnN1YnN0cmluZygxKSk7CisgICAgS0NhbnZhc0ZpbHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJ
ZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkp
LmdldCgpOwogICAgIGlmIChmaWx0ZXIpCiAgICAgICAgIHJlcGFpbnRSZWN0LnVuaXRlKGZpbHRl
ci0+ZmlsdGVyQkJveEZvckl0ZW1CQm94KHJlcGFpbnRSZWN0KSk7CiAgICAgCkBAIC0xODcsMTYg
KzE4NywxNiBAQAogICAgIGNvbnRleHQtPmNvbmNhdENUTShsb2NhbFRyYW5zZm9ybSgpKTsKIAog
ICAgIC8vIHNldHVwIHRvIGFwcGx5IGZpbHRlcnMKLSAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIg
PSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigp
LnN1YnN0cmluZygxKSk7CisgICAgS0NhbnZhc0ZpbHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJ
ZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkp
LmdldCgpOwogICAgIGlmIChmaWx0ZXIpIHsKICAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVy
KHJlbGF0aXZlQkJveCh0cnVlKSk7CiAgICAgICAgIGNvbnRleHQgPSBkZXZpY2UtPmN1cnJlbnRD
b250ZXh0KCk7CiAgICAgfQogCi0gICAgaWYgKEtDYW52YXNDbGlwcGVyKiBjbGlwcGVyID0gZ2V0
Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5z
dWJzdHJpbmcoMSkpKQorICAgIGlmIChHcmFwaGljc1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9
IGdldENsaXBwZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmNsaXBQYXRo
KCkuc3Vic3RyaW5nKDEpKS5nZXQoKSkKICAgICAgICAgY2xpcHBlci0+YXBwbHlDbGlwKHJlbGF0
aXZlQkJveCh0cnVlKSk7CiAKLSAgICBpZiAoS0NhbnZhc01hc2tlciogbWFza2VyID0gZ2V0TWFz
a2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5tYXNrRWxlbWVudCgpLnN1
YnN0cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IGdl
dE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+bWFza0VsZW1lbnQo
KS5zdWJzdHJpbmcoMSkpLmdldCgpKQogICAgICAgICBtYXNrZXItPmFwcGx5TWFzayhyZWxhdGl2
ZUJCb3godHJ1ZSkpOwogCiAgICAgY29udGV4dC0+Y2xlYXJQYXRoKCk7CkBAIC0zMTUsMTggKzMx
NSwxOCBAQAogICAgIEZsb2F0UG9pbnQgaW5zbG9wZVBvaW50c1syXTsKICAgICBGbG9hdFBvaW50
IG91dHNsb3BlUG9pbnRzWzJdOwogICAgIE1hcmtlclR5cGUgdHlwZTsKLSAgICBLQ2FudmFzTWFy
a2VyICptYXJrZXI7CisgICAgR3JhcGhpY3NSZXNvdXJjZU1hcmtlciAqbWFya2VyOwogfTsKIAog
c3RydWN0IERyYXdNYXJrZXJzRGF0YSB7Ci0gICAgRHJhd01hcmtlcnNEYXRhKEdyYXBoaWNzQ29u
dGV4dCosIEtDYW52YXNNYXJrZXIqIHN0YXJ0TWFya2VyLCBLQ2FudmFzTWFya2VyKiBtaWRNYXJr
ZXIsIGRvdWJsZSBzdHJva2VXaWR0aCk7CisgICAgRHJhd01hcmtlcnNEYXRhKEdyYXBoaWNzQ29u
dGV4dCosIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIqIHN0YXJ0TWFya2VyLCBHcmFwaGljc1Jlc291
cmNlTWFya2VyKiBtaWRNYXJrZXIsIGRvdWJsZSBzdHJva2VXaWR0aCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0OwogICAgIGludCBlbGVtZW50SW5kZXg7CiAgICAgTWFya2VyRGF0YSBw
cmV2aW91c01hcmtlckRhdGE7Ci0gICAgS0NhbnZhc01hcmtlciogbWlkTWFya2VyOworICAgIEdy
YXBoaWNzUmVzb3VyY2VNYXJrZXIqIG1pZE1hcmtlcjsKIH07CiAKLURyYXdNYXJrZXJzRGF0YTo6
RHJhd01hcmtlcnNEYXRhKEdyYXBoaWNzQ29udGV4dCogYywgS0NhbnZhc01hcmtlciAqc3RhcnQs
IEtDYW52YXNNYXJrZXIgKm1pZCwgZG91YmxlIHN0cm9rZVdpZHRoKQorRHJhd01hcmtlcnNEYXRh
OjpEcmF3TWFya2Vyc0RhdGEoR3JhcGhpY3NDb250ZXh0KiBjLCBHcmFwaGljc1Jlc291cmNlTWFy
a2VyICpzdGFydCwgR3JhcGhpY3NSZXNvdXJjZU1hcmtlciAqbWlkLCBkb3VibGUgc3Ryb2tlV2lk
dGgpCiAgICAgOiBjb250ZXh0KGMpCiAgICAgLCBlbGVtZW50SW5kZXgoMCkKICAgICAsIG1pZE1h
cmtlcihtaWQpCkBAIC00MjgsOSArNDI4LDkgQEAKICAgICBEb2N1bWVudCAqZG9jID0gZG9jdW1l
bnQoKTsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdT
dHlsZSgpOwogCi0gICAgS0NhbnZhc01hcmtlciogc3RhcnRNYXJrZXIgPSBnZXRNYXJrZXJCeUlk
KGRvYywgc3ZnU3R5bGUtPnN0YXJ0TWFya2VyKCkuc3Vic3RyaW5nKDEpKTsKLSAgICBLQ2FudmFz
TWFya2VyKiBtaWRNYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPm1pZE1hcmtl
cigpLnN1YnN0cmluZygxKSk7Ci0gICAgS0NhbnZhc01hcmtlciogZW5kTWFya2VyID0gZ2V0TWFy
a2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5lbmRNYXJrZXIoKS5zdWJzdHJpbmcoMSkpOworICAgIEdy
YXBoaWNzUmVzb3VyY2VNYXJrZXIqIHN0YXJ0TWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2
Z1N0eWxlLT5zdGFydE1hcmtlcigpLnN1YnN0cmluZygxKSkuZ2V0KCk7CisgICAgR3JhcGhpY3NS
ZXNvdXJjZU1hcmtlciogbWlkTWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5t
aWRNYXJrZXIoKS5zdWJzdHJpbmcoMSkpLmdldCgpOworICAgIEdyYXBoaWNzUmVzb3VyY2VNYXJr
ZXIqIGVuZE1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+ZW5kTWFya2VyKCku
c3Vic3RyaW5nKDEpKS5nZXQoKTsKICAgICAKICAgICBpZiAoIXN0YXJ0TWFya2VyICYmICFtaWRN
YXJrZXIgJiYgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuOwpJbmRleDogcmVuZGVyaW5nL1NW
R0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9TVkdJbmxpbmVGbG93
Qm94LmNwcAkocmV2aXNpb24gMTczMzUpCisrKyByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJTVkdJbmxpbmVG
bG93Qm94LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktDYW52
YXNSZW5kZXJpbmdTdHlsZS5oIgotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0jaW5jbHVk
ZSAiS0NhbnZhc01hc2tlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIklubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5oIgpAQCAtNzksMTMgKzc5LDEzIEBACiAgICAgRmxvYXRSZWN0IGJv
dW5kaW5nQm94KHR4K2Zsb3ctPnhQb3MoKSAsIHR5K2Zsb3ctPnlQb3MoKSwgZmxvdy0+d2lkdGgo
KSwgZmxvdy0+aGVpZ2h0KCkpOwogICAgIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdT
dHlsZSA9IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKLSAgICBpZiAoS0NhbnZhc0NsaXBw
ZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxl
LT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VDbGlw
cGVyKiBjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQob2JqZWN0LT5kb2N1bWVudCgpLCBzdmdTdHls
ZS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkpLmdldCgpKQogICAgICAgICBjbGlwcGVyLT5hcHBs
eUNsaXAoYm91bmRpbmdCb3gpOwogICAgIAotICAgIGlmIChLQ2FudmFzTWFza2VyKiBtYXNrZXIg
PSBnZXRNYXNrZXJCeUlkKG9iamVjdC0+ZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPm1hc2tFbGVtZW50
KCkuc3Vic3RyaW5nKDEpKSkKKyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZU1hc2tlciogbWFza2Vy
ID0gZ2V0TWFza2VyQnlJZChvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxlLT5tYXNrRWxlbWVu
dCgpLnN1YnN0cmluZygxKSkuZ2V0KCkpCiAgICAgICAgIG1hc2tlci0+YXBwbHlNYXNrKGJvdW5k
aW5nQm94KTsKICAgICAKLSAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlk
KG9iamVjdC0+ZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmZpbHRlcigpLnN1YnN0cmluZygxKSk7Cisg
ICAgS0NhbnZhc0ZpbHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChvYmplY3QtPmRvY3VtZW50
KCksIHN2Z1N0eWxlLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkpLmdldCgpOwogICAgIGlmIChmaWx0
ZXIpCiAgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihib3VuZGluZ0JveCk7CiAgICAgCklu
ZGV4OiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDE3MzM1KQorKysgcmVuZGVyaW5nL1JlbmRl
clNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVk
ZSAiQXR0ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIktDYW52
YXNDbGlwcGVyLmgiCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzUmVzb3VyY2VDbGlwcGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5o
IgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIK
ICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCkBAIC0xNDYsMTMgKzE0NiwxMyBA
QAogICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgpLCBo
ZWlnaHQoKSk7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUoKS0+
c3ZnU3R5bGUoKTsKICAgICAgICAgICAgIAotICAgIGlmIChLQ2FudmFzQ2xpcHBlciogY2xpcHBl
ciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0eWxlLT5jbGlwUGF0aCgpLnN1YnN0
cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0
Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEp
KS5nZXQoKSkKICAgICAgICAgY2xpcHBlci0+YXBwbHlDbGlwKGJvdW5kaW5nQm94KTsKIAotICAg
IGlmIChLQ2FudmFzTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN2
Z1N0eWxlLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVz
b3VyY2VNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUt
Pm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKS5nZXQoKSkKICAgICAgICAgbWFza2VyLT5hcHBs
eU1hc2soYm91bmRpbmdCb3gpOwogCi0gICAgS0NhbnZhc0ZpbHRlciogZmlsdGVyID0gZ2V0Rmls
dGVyQnlJZChkb2N1bWVudCgpLCBzdmdTdHlsZS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKTsKKyAg
ICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0
eWxlLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkpLmdldCgpOwogICAgIGlmIChmaWx0ZXIpCiAgICAg
ICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihib3VuZGluZ0JveCk7CiAgICAgCkBAIC0yNjIsNyAr
MjYyLDcgQEAKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgp
Lm1hcFJlY3QoRmxvYXRSZWN0KGltYWdlLT54KCktPnZhbHVlKCksIGltYWdlLT55KCktPnZhbHVl
KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAKICAgICAvLyBGaWx0ZXJzIGNhbiBleHBhbmQgdGhl
IGJvdW5kaW5nIGJveAotICAgIEtDYW52YXNGaWx0ZXIgKmZpbHRlciA9IGdldEZpbHRlckJ5SWQo
ZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKTsK
KyAgICBLQ2FudmFzRmlsdGVyICpmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0
eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLnN1YnN0cmluZygxKSkuZ2V0KCk7CiAgICAgaWYg
KGZpbHRlcikKICAgICAgICAgcmVwYWludFJlY3QudW5pdGUoZmlsdGVyLT5maWx0ZXJCQm94Rm9y
SXRlbUJCb3gocmVwYWludFJlY3QpKTsKIAo=
</data>
<flag name="review"
          id="3874"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11253</attachid>
            <date>2006-10-27 11:37:19 -0700</date>
            <delta_ts>2006-10-29 14:51:24 -0800</delta_ts>
            <desc>Chunk #9: build-system-changes.diff, Initial patch</desc>
            <filename>build-system-changes.diff</filename>
            <type>text/plain</type>
            <size>49800</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzM1KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEzLDcg
KzE0MTMsNiBAQAogCQk5MzUyMDg4MjA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDg4MTA5QkQ0
NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi87IH07CiAJCTkzNTM2NzNGMDlBRUQ3OTIwMEQz
NUNENiAvKiBTY3JvbGxCYXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzUzNjczRTA5QUVENzkyMDBEMzVDRDYgLyogU2Nyb2xsQmFyTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTM2
NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MzY3NkEwOUFFRDg4QjAwRDM1Q0Q2IC8q
IFNjcm9sbFZpZXdNYWMubW0gKi87IH07Ci0JCTkzNTM2N0U1MDlBRjc3REQwMEQzNUNENiAvKiBH
cmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNTM2N0U0MDlBRjc3REQwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHQuaCAqLzsg
fTsKIAkJOTM1MzY3RTkwOUFGNzdFRjAwRDM1Q0Q2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTM2N0U4MDlB
Rjc3RUYwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi87IH07CiAJCTkzNTM2ODZC
MDlBRjc4RjYwMEQzNUNENiAvKiBUZXh0RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUzNjg2QTA5QUY3OEY2MDBEMzVDRDYgLyogVGV4
dERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzNUM0NzVEMDlBQzRDQTAwMEE2QUFCNCAvKiBIaXN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc1QzA5QUM0Q0EwMDBBNkFB
QjQgLyogSGlzdG9yeS5oICovOyB9OwpAQCAtMTQ0Miw4ICsxNDQxLDYgQEAKIAkJOTM4RTY1Rjcw
OUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzhFNjVGNjA5RjA5ODVE
MDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLzsgfTsKIAkJOTM4
RTY2NjAwOUYwOUI4MTAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY2NUYwOUYwOUI4MTAw
OEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuY3BwICovOyB9OwogCQk5MzhFNjY2MjA5RjA5
Qjg3MDA4QTQ4RUMgLyogSlNIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY2NjEwOUYwOUI4NzAwOEE0OEVDIC8qIEpT
SFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgfTsKLQkJOTM4RTY4M0MwOUYwQkQ3QjAwOEE0OEVDIC8q
IEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOEU2ODNCMDlGMEJEN0EwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM4RTY4NTQwOUYw
QkUwNDAwOEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY4NTMwOUYwQkUwNDAwOEE0OEVDIC8qIEdyYXBo
aWNzVHlwZXMuY3BwICovOyB9OwogCQk5MzkyRjE0MjBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVy
Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLzsgfTsKIAkJOTM5
MkYxNDQwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MkYxNDMwQUQxODVGRTAwNjkxQkQ0
IC8qIFJlbmRlckNvdW50ZXIuY3BwICovOyB9OwogCQk5MzkyRjE0NjBBRDE4NjBDMDA2OTFCRDQg
LyogQ291bnRlclJlc2V0Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM5MkYxNDUwQUQxODYwQzAwNjkxQkQ0IC8qIENvdW50ZXJSZXNldE5vZGUu
aCAqLzsgfTsKQEAgLTE3MzQsOCArMTczMSw2IEBACiAJCUE4MTM2OUU1MDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MS2V5Z2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlDOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVs
ZW1lbnQuY3BwICovOyB9OwogCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEz
NkQzNjA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggKi87IH07CiAJCUE4MTM2RDM5
MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzZEMzcwOTczQThFNzAwRDc0NDYzIC8qIEZv
cm1EYXRhTGlzdC5jcHAgKi87IH07Ci0JCUE4MTY1NUQ0MDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2Fu
dmFzTWFza2VyUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODE2NTVEMjA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5o
ICovOyB9OwotCQlBODE2NTVENTA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0
ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTY1
NUQzMDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6Lm1tICovOyB9OwogCQlB
ODE2NTVFNDA5NkJDMTM5MDA2MDEwNTggLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxNjU1RTIwOTZCQzEzOTAwNjAx
MDU4IC8qIFNWR01hc2tFbGVtZW50LmNwcCAqLzsgfTsKIAkJQTgxNjU1RTUwOTZCQzEzOTAwNjAx
MDU4IC8qIFNWR01hc2tFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODE2NTVFMzA5NkJDMTM5MDA2MDEwNTggLyogU1ZHTWFza0VsZW1lbnQu
aCAqLzsgfTsKIAkJQTgxODVGMzkwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODVGMzEwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oICovOyB9OwpAQCAtMTc1OSw3ICsxNzU0LDYg
QEAKIAkJQTgyMzk4QTgwOUIzQUNGNTAwQjYwNjQxIC8qIFBsdWdJbkluZm9TdG9yZU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjM5OEE3MDlC
M0FDRjUwMEI2MDY0MSAvKiBQbHVnSW5JbmZvU3RvcmVNYWMubW0gKi87IH07CiAJCUE4MjM5RTAw
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjM5REZFMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5n
LmNwcCAqLzsgfTsKIAkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjM5REZGMDlCM0NG
OEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggKi87IH07Ci0JCUE4MjNBNzVDMDlCNkU1MzkwMEI2MDY0
MSAvKiBHcmFwaGljc0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTgyM0E3NUIwOUI2RTUzOTAwQjYwNjQxIC8qIEdyYXBoaWNzQ29udGV4
dC5jcHAgKi87IH07CiAJCUE4MjZFOEFFMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25F
bGVtZW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MjZFOEFDMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50
Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJQTgyNkVDNDgwQTFCMENCRTAwQ0QxQkI2IC8qIEpTSFRN
TE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODI2RThBRDBBMUE4RjIzMDBDRDFCQjYgLyogSlNIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3
NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi87IH07
CkBAIC0xNzY3LDE0ICsxNzYxLDYgQEAKIAkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhN
TE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MzNDODBBMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgKi87IH07CiAJCUE4MzND
ODBEMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5h
bWVzLmggKi87IH07CiAJCUE4MzNDODUyMEEyQ0Y1MjgwMEQ1NzY2NCAvKiBTVkdFbGVtZW50RmFj
dG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTY1ODFFNjA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwICovOyB9Owot
CQlBODQxNUY5QTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1RjkxMEFDMTBDNUQwMEY3
RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5oICovOyB9OwotCQlBODQxNUY5QjBBQzEwQzVEMDBGN0Qw
REYgLyogS0NhbnZhc0NsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTg0MTVGOTIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVy
LmNwcCAqLzsgfTsKLQkJQTg0MTVGOUMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVG
OTMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5oICovOyB9OwotCQlBODQxNUY5
RDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk0MEFDMTBDNUQwMEY3RDBERiAv
KiBLQ2FudmFzUmVzb3VyY2UuY3BwICovOyB9OwotCQlBODQxNUY5RTBBQzEwQzVEMDBGN0QwREYg
LyogS0NhbnZhc01hc2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTg0MTVGOTUwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIuaCAqLzsg
fTsKLQkJQTg0MTVGOUYwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVGOTYwQUMxMEM1
RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIuY3BwICovOyB9OwotCQlBODQxNUZBMDBBQzEwQzVE
MDBGN0QwREYgLyogS0NhbnZhc01hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg0MTVGOTcwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXJr
ZXIuaCAqLzsgfTsKLQkJQTg0MTVGQTEwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXJrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVG
OTgwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXJrZXIuY3BwICovOyB9OwogCQlBODQxNUZB
MjBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0ZpbHRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVGOTkwQUMxMEM1RDAwRjdEMERGIC8q
IEtDYW52YXNGaWx0ZXJzLmNwcCAqLzsgfTsKIAkJQTg2NjI5Q0YwOURBMkI0NzAwOTYzM0E1IC8q
IEpTVUlFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTg2NjI5QzkwOURBMkI0NzAwOTYzM0E1IC8qIEpTVUlFdmVudC5oICovOyB9OwogCQlBODY2
MjlEMDA5REEyQjQ4MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NjYyOUNBMDlEQTJCNDcwMDk2MzNBNSAvKiBK
U1VJRXZlbnQuY3BwICovOyB9OwpAQCAtMTg3NCw5ICsxODYwLDYgQEAKIAkJQTg4QUQzQTkwOTUy
NDg2RDAwMUREMTk2IC8qIFdLU3BvdExpZ2h0RmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMzMjkzNDA5M0JCNzMyMDAwQjlDQUMgLyogV0tT
cG90TGlnaHRGaWx0ZXIubSAqLzsgfTsKIAkJQTg4QUQzQUEwOTUyNDg2RDAwMUREMTk2IC8qIEtD
YW52YXNGaWx0ZXJRdWFydHouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QzBGQjY5MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzRmlsdGVyUXVhcnR6
LmggKi87IH07CiAJCUE4OEFEM0FCMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzRmlsdGVyUXVh
cnR6Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MEZCNkEwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJRdWFydHoubW0gKi87IH07Ci0J
CUE4OEFEM0FEMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjZDMDg5NzAxRjgw
MEJBNTExNCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5tbSAqLzsgfTsKLQkJQTg4QUQzQUUwOTUyNDg2
RDAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHouaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjZEMDg5NzAxRjgwMEJBNTExNCAvKiBL
Q2FudmFzUmVzb3VyY2VzUXVhcnR6LmggKi87IH07Ci0JCUE4OEFEM0FGMDk1MjQ4NkQwMDFERDE5
NiAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCNkUwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNS
ZXNvdXJjZXNRdWFydHoubW0gKi87IH07CiAJCUE4OEFEM0IwMDk1MjQ4NkUwMDFERDE5NiAvKiBL
UmVuZGVyaW5nRGV2aWNlUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEMwRkI3MTA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0Rldmlj
ZVF1YXJ0ei5oICovOyB9OwogCQlBODhBRDNCMTA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmlu
Z0RldmljZVF1YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGQjcyMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6
Lm1tICovOyB9OwogCQlBODhBRDNCMjA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmluZ1BhaW50
U2VydmVyR3JhZGllbnRRdWFydHoubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEMwRkI3MzA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ1BhaW50
U2VydmVyR3JhZGllbnRRdWFydHoubW0gKi87IH07CkBAIC0xODg1LDggKzE4NjgsNiBAQAogCQlB
ODhBRDNCNTA5NTI0ODZFMDAxREQxOTYgLyogUXVhcnR6U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCNzYwODk3MDFGODAwQkE1MTE0
IC8qIFF1YXJ0elN1cHBvcnQuaCAqLzsgfTsKIAkJQTg4QUQzQjYwOTUyNDg2RTAwMUREMTk2IC8q
IFF1YXJ0elN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEMwRkI3NzA4OTcwMUY4MDBCQTUxMTQgLyogUXVhcnR6U3VwcG9ydC5tbSAqLzsg
fTsKIAkJQTg4QUQzQkUwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNGaWx0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkI3RjA4OTcwMUY4
MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlcnMuaCAqLzsgfTsKLQkJQTg4QUQzQzAwOTUyNDg2RTAw
MUREMTk2IC8qIEtDYW52YXNJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCODEwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNJbWFnZS5o
ICovOyB9OwotCQlBODhBRDNDNzA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc1Jlc291cmNlTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzBGQjg5MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oICovOyB9
OwogCQlBODhBRDNDQjA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc1RyZWVEZWJ1Zy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMEUzOTMwOEE0MTYw
RjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcuaCAqLzsgfTsKIAkJQTg4QUQzQ0MwOTUyNDg2
RTAwMUREMTk2IC8qIEtDYW52YXNUcmVlRGVidWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52
YXNUcmVlRGVidWcuY3BwICovOyB9OwogCQlBODhBRDQwMTA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
UmVuZGVyU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDMEY2RkYwODk3MDFGMTAwQkE1MTE0IC8qIFNWR1JlbmRlclN0eWxlLmNwcCAqLzsg
fTsKQEAgLTIyNzksMTAgKzIyNjAsMjkgQEAKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8q
IEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07
CiAJCUIyMDk2NEJGMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjA5NjRCRDBBQjc2RUY2MDBFNEM3
NDAgLyogU1ZHQW5nbGUuY3BwICovOyB9OwogCQlCMjA5NjRDMDBBQjc2RUY2MDBFNEM3NDAgLyog
U1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMDk2NEJFMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5oICovOyB9OworCQlCMjExRDMz
NDBBRjI1Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFydHoubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjExRDMzMTBBRjI1
Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFydHoubW0gKi87IH07CisJ
CUIyMTFEMzM1MEFGMjVDRjEwMDI0MkVCMCAvKiBHcmFwaGljc1Jlc291cmNlSW1hZ2VRdWFydHou
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjExRDMz
MjBBRjI1Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZUltYWdlUXVhcnR6Lm1tICovOyB9
OworCQlCMjExRDMzNjBBRjI1Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlclF1
YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MTFEMzMzMEFGMjVDRjEwMDI0MkVCMCAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyUXVhcnR6Lm1t
ICovOyB9OwogCQlCMjIyRjY5ODBBQjc3MTk1MDAyMkVGQUQgLyogSlNTVkdBbmdsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyRjY5NjBBQjc3
MTk1MDAyMkVGQUQgLyogSlNTVkdBbmdsZS5jcHAgKi87IH07CiAJCUIyMjJGNjk5MEFCNzcxOTUw
MDIyRUZBRCAvKiBKU1NWR0FuZ2xlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyRjY5NzBBQjc3MTk1MDAyMkVGQUQgLyogSlNTVkdBbmdsZS5oICov
OyB9OwogCQlCMjIyRjY5QzBBQjc3MUI4MDAyMkVGQUQgLyogSlNTVkdFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjJGNjlBMEFCNzcx
QjgwMDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyRjY5RDBBQjc3MUI4
MDAyMkVGQUQgLyogSlNTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyRjY5QjBBQjc3MUI4MDAyMkVGQUQgLyogSlNTVkdFbGVtZW50
LmggKi87IH07CisJCUIyMjQ5NkJFMEFGMjY5OTkwMDFCOEMyMCAvKiBLQ2FudmFzSXRlbVF1YXJ0
ei5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyNDk2
QkMwQUYyNjk5OTAwMUI4QzIwIC8qIEtDYW52YXNJdGVtUXVhcnR6LmggKi87IH07CisJCUIyMjQ5
NkJGMEFGMjY5OTkwMDFCOEMyMCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjQ5NkJEMEFGMjY5OTkwMDFCOEMy
MCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5tbSAqLzsgfTsKKwkJQjI3RDQyQjAwQUYxNDgyMDAwODhB
RDZDIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjdENDI5RTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NDb250
ZXh0LmNwcCAqLzsgfTsKKwkJQjI3RDQyQjEwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
RDQyOUYwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzQ29udGV4dC5oICovOyB9OworCQlCMjdE
NDJCMjBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBMDBBRjE0ODIwMDA4OEFE
NkMgLyogR3JhcGhpY3NSZXNvdXJjZS5jcHAgKi87IH07CisJCUIyN0Q0MkIzMEFGMTQ4MjAwMDg4
QUQ2QyAvKiBHcmFwaGljc1Jlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBMTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNv
dXJjZS5oICovOyB9OworCQlCMjdENDJCNDBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNv
dXJjZUNsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3RDQyQTIwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVy
LmNwcCAqLzsgfTsKKwkJQjI3RDQyQjUwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3Vy
Y2VDbGlwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjdENDJBMzBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCAq
LzsgfTsKKwkJQjI3RDQyQjYwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdE
NDJBNDBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZUltYWdlLmNwcCAqLzsgfTsK
KwkJQjI3RDQyQjcwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3RDQyQTUwQUYx
NDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oICovOyB9OworCQlCMjdENDJC
ODBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBNjBBRjE0ODIwMDA4
OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAgKi87IH07CisJCUIyN0Q0MkI5MEFG
MTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBNzBBRjE0ODIwMDA4OEFENkMg
LyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5oICovOyB9OworCQlCMjdENDJCQTBBRjE0ODIwMDA4
OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBODBBRjE0ODIwMDA4OEFENkMgLyogR3Jh
cGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgKi87IH07CisJCUIyN0Q0MkJCMEFGMTQ4MjAwMDg4QUQ2
QyAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBOTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NS
ZXNvdXJjZU1hc2tlci5oICovOyB9OworCQlCMjdENDJCQzBBRjE0ODIwMDA4OEFENkMgLyogR3Jh
cGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjdENDJBQTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NUeXBlcy5jcHAgKi87IH07
CisJCUIyN0Q0MkJEMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjdENDJBQjBBRjE0ODIwMDA4
OEFENkMgLyogR3JhcGhpY3NUeXBlcy5oICovOyB9OwogCQlCMkNCNDE5MzBBQjc1OTA0MDA0RDlD
NDUgLyogU1ZHUmVuZGVyaW5nSW50ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkNCNDE0QzBBQjc1OTA0MDA0RDlDNDUgLyogU1ZHUmVuZGVyaW5n
SW50ZW50LmggKi87IH07CiAJCUIyQ0I0MUE2MEFCNzU5MDQwMDREOUM0NSAvKiBTVkdVbml0VHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQ0I0
MTVGMEFCNzU5MDQwMDREOUM0NSAvKiBTVkdVbml0VHlwZXMuaCAqLzsgfTsKIAkJQjJGQTNEMzYw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0M0RTBBQjc1QTZFMDAw
RTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTQyNzMsNyAr
NDI3Myw2IEBACiAJCTkzNTIwODgxMDlCRDQ1RTkwMEYyMDM4RCAvKiBDb29raWVKYXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llSmFyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzNTM2NzNFMDlBRUQ3OTIwMEQzNUNENiAvKiBTY3JvbGxCYXJNb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEJhck1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MzY3NkEwOUFFRDg4QjAwRDM1Q0Q2IC8qIFNj
cm9sbFZpZXdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
Y3JvbGxWaWV3TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzUzNjdFNDA5
QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzUzNjdFODA5QUY3N0VGMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjg2QTA5QUY3OEY2MDBEMzVD
RDYgLyogVGV4dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUM0NzVDMDlB
QzRDQTAwMEE2QUFCNCAvKiBIaXN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhpc3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMDMsOCArNDMw
Miw2IEBACiAJCTkzOEU2NjI1MDlGMDk5NTYwMDhBNDhFQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzhFNjY1RjA5RjA5QjgxMDA4QTQ4RUMgLyogSlNIVE1M
Q2FudmFzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxDYW52YXNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4
RTY2NjEwOUYwOUI4NzAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MQ2FudmFzRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5MzhFNjgzQjA5RjBCRDdBMDA4QTQ4RUMgLyogR3JhcGhpY3NU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc1R5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzOEU2ODUzMDlGMEJFMDQwMDhBNDhFQyAv
KiBHcmFwaGljc1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyRjE0
MTBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzkyRjE0MzBBRDE4NUZFMDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQ291bnRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTJGMTQ1MEFEMTg2MEMwMDY5MUJENCAvKiBDb3Vu
dGVyUmVzZXROb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGVy
UmVzZXROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ2LDggKzQ1NDMs
NiBAQAogCQlBODEzNjlDOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxLZXlnZW5FbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxMzZEMzYwOTczQThFNzAwRDc0
NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9ybURhdGFMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTM2RDM3MDk3
M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE4MTY1NUQyMDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFza2VyUXVhcnR6Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MTY1NUQzMDk2QkJFQUMwMDYwMTA1OCAv
KiBLQ2FudmFzTWFza2VyUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtDYW52YXNNYXNrZXJRdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTWFza0VsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE2NTVFMzA5NkJDMTM5MDA2MDEwNTggLyog
U1ZHTWFza0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01h
c2tFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTg1RjMxMDk3NjU3
NjUwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERvY3VtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU3
MSw3ICs0NTY2LDYgQEAKIAkJQTgyMzk4QTcwOUIzQUNGNTAwQjYwNjQxIC8qIFBsdWdJbkluZm9T
dG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVn
SW5JbmZvU3RvcmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MjM5REZF
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTgyM0E3NUIwOUI2RTUzOTAwQjYwNjQxIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgyNkU4QUMwQTFBOEYyMzAwQ0QxQkI2IC8qIEpTSFRN
TE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MjZFOEFEMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVt
ZW50Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4MkZDMzNCMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQ3Vy
c29yRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTQ1OTAsMTQgKzQ1ODQsNiBAQAogCQlBODMzQzdGNjBBMkNGMUQ4MDBE
NTc2NjQgLyogeG1sYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHhtbGF0dHJzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQg
LyogWE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhN
TE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzM0M4MEIwQTJDRjI1
NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBYTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5MTBBQzEw
QzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS0NhbnZhc0NsaXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTg0MTVGOTIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNDbGlwcGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNS
ZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzUmVzb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTQwQUMxMEM1RDAwRjdE
MERGIC8qIEtDYW52YXNSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBLQ2FudmFzUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBODQxNUY5NTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hc2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFza2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE4NDE1Rjk2MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNNYXNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5NzBBQzEwQzVEMDBGN0QwREYg
LyogS0NhbnZhc01hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2Fu
dmFzTWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4NDE1Rjk4MEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEtDYW52YXNNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBODQxNUY5OTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0ZpbHRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZhc0ZpbHRlcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUE4NUQ3QThDMDg3OUVDNjQwMDZBOTE3
MiAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC00ODk2LDkgKzQ4
ODIsNiBAQAogCQlBOEMwRkI2MzA4OTcwMUY3MDBCQTUxMTQgLyogS1JlbmRlcmluZ1BhaW50U2Vy
dmVyU29saWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCNjkwODk3MDFGODAwQkE1
MTE0IC8qIEtDYW52YXNGaWx0ZXJRdWFydHouaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzRmlsdGVyUXVhcnR6Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRkI2QTA4
OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS0NhbnZhc0ZpbHRlclF1
YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07Ci0JCUE4QzBGQjZDMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gS0NhbnZhc0l0ZW1RdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlBOEMwRkI2RDA4OTcwMUY4MDBCQTUxMTQgLyogS0Nh
bnZhc1Jlc291cmNlc1F1YXJ0ei5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtDYW52YXNSZXNvdXJjZXNRdWFydHouaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGQjZFMDg5NzAx
RjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLQ2FudmFzUmVzb3VyY2Vz
UXVhcnR6Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQThDMEZCNzEwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdEZXZpY2VR
dWFydHouaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRkI3MjA4OTcwMUY4MDBCQTUxMTQgLyog
S1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4
QzBGQjczMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1
YXJ0ei5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtNDkwNyw4
ICs0ODkwLDYgQEAKIAkJQThDMEZCNzYwODk3MDFGODAwQkE1MTE0IC8qIFF1YXJ0elN1cHBvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFy
dHpTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlBOEMwRkI3NzA4OTcwMUY4MDBCQTUxMTQgLyogUXVhcnR6U3VwcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVhcnR6U3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGQjdGMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFz
RmlsdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEtDYW52YXNGaWx0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwotCQlBOEMwRkI4MTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZh
c0ltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gS0NhbnZhc0ltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwotCQlBOEMwRkI4OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1Jl
c291cmNlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMzI5MjAwOTNCQjczMjAw
MEI5Q0FDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzMy
OTIxMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FyaXRobWV0aWNGaWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUE4QzMyOTIyMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0FyaXRo
bWV0aWNGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC01MTA5LDEwICs1MDkwLDI5IEBACiAJCUIyMDExMTA2MEFCNzc0MDUw
MERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDk2
NEJEMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjA5NjRCRTBBQjc2RUY2MDBFNEM3NDAgLyogU1ZHQW5nbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUIyMTFEMzMxMEFGMjVDRjEwMDI0MkVCMCAvKiBHcmFwaGljc1Jlc291cmNlQ2xpcHBl
clF1YXJ0ei5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFw
aGljc1Jlc291cmNlQ2xpcHBlclF1YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjIxMUQzMzIwQUYyNUNGMTAwMjQyRUIwIC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0
ei5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc1Jl
c291cmNlSW1hZ2VRdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyMTFE
MzMzMEFGMjVDRjEwMDI0MkVCMCAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyUXVhcnR6Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzUmVzb3VyY2VN
YXNrZXJRdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjJGNjk2MEFC
NzcxOTUwMDIyRUZBRCAvKiBKU1NWR0FuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NWR0FuZ2xlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMkY2OTcwQUI3NzE5NTAwMjJFRkFEIC8qIEpTU1ZHQW5nbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5nbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjIyMkY2OUEwQUI3NzFCODAwMjJFRkFEIC8qIEpTU1ZHRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMkY2OUIwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyMjQ5NkJDMEFGMjY5OTkwMDFC
OEMyMCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gS0NhbnZhc0l0ZW1RdWFydHouaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjIyNDk2QkQwQUYyNjk5OTAwMUI4QzIwIC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtDYW52YXNJdGVtUXVhcnR6Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjdENDI5RTBBRjE0ODIwMDA4OEFENkMgLyog
R3JhcGhpY3NDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjdE
NDI5RjBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjI3RDQyQTAwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzUmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjdENDJBMTBBRjE0ODIwMDA4
OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR3JhcGhpY3NSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
MjdENDJBMjBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzUmVzb3VyY2VDbGlw
cGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI3RDQyQTMwQUYxNDgyMDAw
ODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCMjdENDJBNDBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJj
ZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c1Jlc291cmNlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjdENDJB
NTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc1Jlc291cmNlSW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI3RDQyQTYwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNz
UmVzb3VyY2VNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCMjdENDJBNzBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjdENDJBODBBRjE0ODIwMDA4OEFENkMg
LyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUIyN0Q0MkE5MEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1Jlc291cmNl
TWFza2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc1Jlc291
cmNlTWFza2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyN0Q0MkFBMEFGMTQ4
MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc1R5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjI3RDQyQUIwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJDQjQxMDEwQUI3NThFNjAwNEQ5QzQ1IC8qIFNWR0FFbGVtZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHQUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMkNCNDEwMjBBQjc1OEU2MDA0RDlDNDUgLyogU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVDb2xv
ckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkNCNDEwMzBBQjc1
OEU2MDA0RDlDNDUgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgxNzYsMTggKzgxNzYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQlBOEMwRkI1MzA4OTcwMUY3MDBCQTUxMTQgLyogZGV2aWNlICovLAotCQkJ
CUE4NDE1RjkyMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5jcHAgKi8sCi0JCQkJ
QTg0MTVGOTEwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmggKi8sCiAJCQkJQTg0
MTVGOTkwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNGaWx0ZXJzLmNwcCAqLywKIAkJCQlBOEMw
RkI3RjA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlcnMuaCAqLywKLQkJCQlBOEMwRkI4
MTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ltYWdlLmggKi8sCi0JCQkJQTg0MTVGOTgwQUMx
MEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXJrZXIuY3BwICovLAotCQkJCUE4NDE1Rjk3MEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggKi8sCi0JCQkJQTg0MTVGOTYwQUMxMEM1RDAw
RjdEMERGIC8qIEtDYW52YXNNYXNrZXIuY3BwICovLAotCQkJCUE4NDE1Rjk1MEFDMTBDNUQwMEY3
RDBERiAvKiBLQ2FudmFzTWFza2VyLmggKi8sCi0JCQkJQTg0MTVGOTQwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNSZXNvdXJjZS5jcHAgKi8sCi0JCQkJQTg0MTVGOTMwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNSZXNvdXJjZS5oICovLAotCQkJCUE4QzBGQjg5MDg5NzAxRjgwMEJBNTExNCAv
KiBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oICovLAogCQkJCUE4MTBFMzk0MDhBNDE2MEYwMDMz
M0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmNwcCAqLywKIAkJCQlBODEwRTM5MzA4QTQxNjBGMDAz
MzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5oICovLAogCQkJKTsKQEAgLTgyMTUsMTMgKzgyMDUs
MTAgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThDMzI5MUYw
OTNCQjczMjAwMEI5Q0FDIC8qIGZpbHRlcnMgKi8sCisJCQkJQjIyNDk2QkMwQUYyNjk5OTAwMUI4
QzIwIC8qIEtDYW52YXNJdGVtUXVhcnR6LmggKi8sCisJCQkJQjIyNDk2QkQwQUYyNjk5OTAwMUI4
QzIwIC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tICovLAogCQkJCUE4QzBGQjY5MDg5NzAxRjgwMEJB
NTExNCAvKiBLQ2FudmFzRmlsdGVyUXVhcnR6LmggKi8sCiAJCQkJQThDMEZCNkEwODk3MDFGODAw
QkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJRdWFydHoubW0gKi8sCi0JCQkJQThDMEZCNkMwODk3MDFG
ODAwQkE1MTE0IC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tICovLAotCQkJCUE4MTY1NUQyMDk2QkJF
QUMwMDYwMTA1OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6LmggKi8sCi0JCQkJQTgxNjU1RDMwOTZC
QkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHoubW0gKi8sCi0JCQkJQThDMEZCNkQw
ODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHouaCAqLywKLQkJCQlBOEMw
RkI2RTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbSAqLywKIAkJ
CQlBOEMwRkI3MTA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oICov
LAogCQkJCUE4QzBGQjcyMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6
Lm1tICovLAogCQkJCUE4QzBGQjczMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbSAqLywKQEAgLTgyODEsNiArODI2OCwzOCBAQAogCQkJcGF0
aCA9IGZpbHRlcnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCMjExRDMz
MDBBRjI1Q0YxMDAyNDJFQjAgLyogcXVhcnR6ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCMjExRDMzMTBBRjI1Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NS
ZXNvdXJjZUNsaXBwZXJRdWFydHoubW0gKi8sCisJCQkJQjIxMUQzMzIwQUYyNUNGMTAwMjQyRUIw
IC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0ei5tbSAqLywKKwkJCQlCMjExRDMzMzBBRjI1
Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlclF1YXJ0ei5tbSAqLywKKwkJCSk7
CisJCQlwYXRoID0gcXVhcnR6OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
QjI3RDQyOUQwQUYxNDgyMDAwODhBRDZDIC8qIGdyYXBoaWNzICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCMjExRDMzMDBBRjI1Q0YxMDAyNDJFQjAgLyog
cXVhcnR6ICovLAorCQkJCUIyN0Q0MjlFMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc0NvbnRl
eHQuY3BwICovLAorCQkJCUIyN0Q0MjlGMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc0NvbnRl
eHQuaCAqLywKKwkJCQlCMjdENDJBMDBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJj
ZS5jcHAgKi8sCisJCQkJQjI3RDQyQTEwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3Vy
Y2UuaCAqLywKKwkJCQlCMjdENDJBMjBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJj
ZUNsaXBwZXIuY3BwICovLAorCQkJCUIyN0Q0MkEzMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlci5oICovLAorCQkJCUIyN0Q0MkE0MEFGMTQ4MjAwMDg4QUQ2QyAvKiBH
cmFwaGljc1Jlc291cmNlSW1hZ2UuY3BwICovLAorCQkJCUIyN0Q0MkE1MEFGMTQ4MjAwMDg4QUQ2
QyAvKiBHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCAqLywKKwkJCQlCMjdENDJBNjBBRjE0ODIwMDA4
OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAgKi8sCisJCQkJQjI3RDQyQTcwQUYx
NDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCAqLywKKwkJCQlCMjdENDJB
ODBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgKi8sCisJCQkJ
QjI3RDQyQTkwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCAqLywK
KwkJCQlCMjdENDJBQTBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NUeXBlcy5jcHAgKi8sCisJ
CQkJQjI3RDQyQUIwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzVHlwZXMuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gZ3JhcGhpY3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtODQzMSw2ICs4NDUwLDcgQEAKIAkJQkNGMUE1
QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCMjdENDI5RDBBRjE0ODIwMDA4OEFENkMgLyogZ3JhcGhp
Y3MgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCiAJCQkJ
MUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovLAogCQkJCTkzMDMyQ0NDMDlBRUMzNjIw
MEY4MkExOCAvKiBjZyAqLywKQEAgLTg0OTAsMTAgKzg1MTAsNiBAQAogCQkJCUJDNkRCMzY4MEEx
QTdDQjcwMEU1Q0QxNCAvKiBHbHlwaE1hcC5oICovLAogCQkJCUJDQzA4OTU1MEExQzRDQzkwMDYx
ODlBNiAvKiBHbHlwaFdpZHRoTWFwLmNwcCAqLywKIAkJCQlCQ0MwODkyOTBBMUM0OTkxMDA2MTg5
QTYgLyogR2x5cGhXaWR0aE1hcC5oICovLAotCQkJCUE4MjNBNzVCMDlCNkU1MzkwMEI2MDY0MSAv
KiBHcmFwaGljc0NvbnRleHQuY3BwICovLAotCQkJCTkzNTM2N0U0MDlBRjc3REQwMEQzNUNENiAv
KiBHcmFwaGljc0NvbnRleHQuaCAqLywKLQkJCQk5MzhFNjg1MzA5RjBCRTA0MDA4QTQ4RUMgLyog
R3JhcGhpY3NUeXBlcy5jcHAgKi8sCi0JCQkJOTM4RTY4M0IwOUYwQkQ3QTAwOEE0OEVDIC8qIEdy
YXBoaWNzVHlwZXMuaCAqLywKIAkJCQkwNjZDNzczQjBBQjYwNTI3MDAyMzhDQzQgLyogSWNvbi5o
ICovLAogCQkJCUJDNkI3QkFFMDk5MzYwM0MwMDUyODY3QiAvKiBJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNENzVBQkIwOTg5QTQ0NjAwM0UyOERGIC8qIEltYWdlLmggKi8sCkBAIC05MTE4LDEzICs5MTM0
LDEwIEBACiAJCQkJQTg4QUQzQTUwOTUyNDg2RDAwMUREMTk2IC8qIFdLU3BlY3VsYXJMaWdodGlu
Z0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQzQTgwOTUyNDg2RDAwMUREMTk2IC8q
IFdLU3BvdExpZ2h0RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNBQTA5NTI0ODZE
MDAxREQxOTYgLyogS0NhbnZhc0ZpbHRlclF1YXJ0ei5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4
QUQzQUUwOTUyNDg2RDAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHouaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4OEFEM0IwMDk1MjQ4NkUwMDFERDE5NiAvKiBLUmVuZGVyaW5nRGV2aWNl
UXVhcnR6LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNCMzA5NTI0ODZFMDAxREQxOTYgLyog
S1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNC
NTA5NTI0ODZFMDAxREQxOTYgLyogUXVhcnR6U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg4QUQzQkUwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNGaWx0ZXJzLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBODhBRDNDMDA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc0ltYWdlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBODhBRDNDNzA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc1Jlc291cmNl
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFEM0NCMDk1MjQ4NkUwMDFERDE5NiAv
KiBLQ2FudmFzVHJlZURlYnVnLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDQwMjA5NTI0OEYw
MDAxREQxOTYgLyogU1ZHUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENDA0
MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCBpbiBIZWFkZXJzICovLApA
QCAtOTI0MSw3ICs5MjU0LDYgQEAKIAkJCQlBODhBRDUwQzA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
Wm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ1MEQwOTUyNDhGMDAwMUREMTk2
IC8qIGtzdmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTJFN0FBMDk2QUExMUIwMDA2RjI0OCAv
KiBXZWJDb3JlRnJhbWVOYW1lc3BhY2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBODE2NTVENDA5
NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxNjU1RTUwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElu
cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDM3LDcgKzk0NDksNiBAQAogCQkJCTY1
OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZE
NkREMzA5QUY5MDY2MDBGNTk3NTkgLyogRm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1MzY3
M0YwOUFFRDc5MjAwRDM1Q0Q2IC8qIFNjcm9sbEJhck1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTkzNTM2N0U1MDlBRjc3REQwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzNTM2ODZCMDlBRjc4RjYwMEQzNUNENiAvKiBUZXh0RGlyZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTdCRDc0RTA5QUZEQzU0MDA1QTIwNTYgLyogU3RyZWFtaW5nVGV4
dERlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1N0JENzUwMDlBRkRDNTQwMDVBMjA1NiAv
KiBUZXh0RW5jb2RpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtOTUzNCw3ICs5NTQ1LDYgQEAKIAkJ
CQkxNENGN0IzNDA5RjZFQ0Q3MDBFQjM2NjUgLyogSlNDU1NSdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzhFNjVGMTA5RjA5ODQwMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzhFNjY2MjA5RjA5Qjg3MDA4QTQ4RUMgLyogSlNI
VE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTM4RTY4M0MwOUYwQkQ3QjAw
OEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxMTY4OTYwMDlG
MkE0QTAwMDc3MkNBMCAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQx
MTVCNTIwOUY4NEI3MTAwQ0E0RkMxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1
QjczMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAwMzIsMTAgKzEwMDQyLDYgQEAKIAkJCQk4NTFFRTgyMTBBQkNBNTgxMDBBNkFBMzMgLyogRE9N
UmFuZ2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1ODAxNUNFMEFCQ0E3NUQwMDgw
NTg4RCAvKiBET01YUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDNzhBNjgw
QUJERTFCNDAwNDRGQzE2IC8qIERPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg0
MTVGOUEwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBODQxNUY5QzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBODQxNUY5RTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hc2tlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTg0MTVGQTAwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNN
YXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0ZDQUE5MEFDM0RCNTgwMEJBNTRBRCAvKiBQ
bGF0Zm9ybVNjcm9sbEJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOEQwQUM1RDUzNTAw
NTMyNzBGIC8qIERPTUF0dHJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOEUw
QUM1RDUzNTAwNTMyNzBGIC8qIERPTUNEQVRBU2VjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNDU1LDYgKzEwNDYxLDE0IEBACiAJCQkJNjU1QTgxQkEwQUVGNjdEMzAwMDk3NUYw
IC8qIFdlYkNvcmVSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1QTgxQkIw
QUVGNjdENDAwMDk3NUYwIC8qIFdlYkNvcmVSZXNvdXJjZUxvYWRlckltcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjU1QTgxQkUwQUVGNjdFNjAwMDk3NUYwIC8qIEhUVFBIZWFkZXJNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUIyN0Q0MkIxMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyN0Q0MkIzMEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFw
aGljc1Jlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMjdENDJCNTBBRjE0ODIwMDA4OEFE
NkMgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyN0Q0
MkI3MEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUIyN0Q0MkI5MEFGMTQ4MjAwMDg4QUQ2QyAvKiBHcmFwaGljc1Jlc291cmNlTWFy
a2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMjdENDJCQjBBRjE0ODIwMDA4OEFENkMgLyogR3Jh
cGhpY3NSZXNvdXJjZU1hc2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjI3RDQyQkQwQUYxNDgy
MDAwODhBRDZDIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyMjQ5NkJF
MEFGMjY5OTkwMDFCOEMyMCAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xMDQ4OSw3ICsxMDUwMyw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlr
bm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTEwNTA0LDcgKzEwNTE3LDYgQEAKIAkJ
CXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAq
LzsKIAkJCXByb2plY3REaXJQYXRoID0gIiI7CiAJCQlwcm9qZWN0Um9vdCA9ICIiOwotCQkJc2hv
dWxkQ2hlY2tDb21wYXRpYmlsaXR5ID0gMTsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4QTUw
ODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBB
RjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTEwNjUxLDggKzEwNjYzLDYgQEAKIAkJCQlB
ODhBRDNBNjA5NTI0ODZEMDAxREQxOTYgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm0gaW4g
U291cmNlcyAqLywKIAkJCQlBODhBRDNBOTA5NTI0ODZEMDAxREQxOTYgLyogV0tTcG90TGlnaHRG
aWx0ZXIubSBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFEM0FCMDk1MjQ4NkQwMDFERDE5NiAvKiBL
Q2FudmFzRmlsdGVyUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTg4QUQzQUQwOTUyNDg2
RDAwMUREMTk2IC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTg4
QUQzQUYwOTUyNDg2RDAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHoubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBODhBRDNCMTA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmluZ0Rldmlj
ZVF1YXJ0ei5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFEM0IyMDk1MjQ4NkUwMDFERDE5NiAv
KiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4OEFEM0I0MDk1MjQ4NkUwMDFERDE5NiAvKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFy
dHoubW0gaW4gU291cmNlcyAqLywKQEAgLTEwNzY5LDcgKzEwNzc5LDYgQEAKIAkJCQlBODhBRDUw
QjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODhBRDVBQTA5NTI1MTMxMDAxREQxOTYgLyogU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NTUyRTdBQjA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1l
TmFtZXNwYWNlcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE4MTY1NUQ1MDk2QkJFQUMwMDYwMTA1
OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxNjU1RTQw
OTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4MTM2OUNCMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MSXNJbmRleEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgxMzY5Q0QwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDk2MCw3ICsxMDk2OSw2IEBACiAJCQkJQTgyMzlF
MDAwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
QjM3NzMwOUI3QkEzOTAwQ0IzOEIxIC8qIEZvbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
NkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUE4MjNBNzVDMDlCNkU1MzkwMEI2MDY0MSAvKiBHcmFwaGljc0Nv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUIyM0EzMTIwOUJCQTc3NjAwNjdDQzUzIC8q
IEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUIyM0Ez
MjcwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzNTIwNzFEMDlCRDNCQkIwMEYyMDM4RCAvKiBUZXh0Qm91bmRhcmllcy5t
bSBpbiBTb3VyY2VzICovLApAQCAtMTEwMjcsNyArMTEwMzUsNiBAQAogCQkJCTE0Q0Y3QjMzMDlG
NkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM4RTY1
RjcwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MzhFNjY2MDA5RjA5QjgxMDA4QTQ4RUMgLyogSlNIVE1MQ2FudmFz
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzhFNjg1NDA5RjBCRTA0MDA4QTQ4RUMg
LyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MTE2ODk1RjA5RjJBNEEw
MDA3NzJDQTAgLyogU1ZHVFJlZkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxMTVC
NzIwOUY4NENENjAwQ0E0RkMxIC8qIEpTTm9kZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTExNTIyLDEwICsxMTUyOSw2IEBACiAJCQkJODUzQkY0REMwQUJCNkI1NTAwODY0N0JCIC8q
IERPTU5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJDQkMxNDBBQkJBODdEMDAzODExNjAg
LyogRE9NSFRNTERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyMUVDQ0EwQUJGMEZC
QTAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QTg0MTVGOUIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUE4NDE1RjlEMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQTg0MTVGOUYwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNN
YXNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTg0MTVGQTEwQUMxMEM1RDAwRjdEMERGIC8q
IEtDYW52YXNNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0MTVGQTIwQUMxMEM1RDAw
RjdEMERGIC8qIEtDYW52YXNGaWx0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NDE2MzZB
MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdUcmFuc2Zvcm1MaXN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODU0MTYzNkMwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1RyYW5zZm9ybS5tbSBpbiBT
b3VyY2VzICovLApAQCAtMTE2OTEsNiArMTE2OTQsMTcgQEAKIAkJCQk4NTNDQTlFQzBBRUVDNjND
MDAyMzcyREMgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTNDQTlGMDBBRUVDNjU3MDAyMzcyREMgLyogUmVuZGVyUGF0aC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTVBODFCQzBBRUY2N0Q0MDAwOTc1RjAgLyogV2ViQ29yZVJlc291cmNlTG9hZGVySW1w
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjI3RDQyQjAwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBo
aWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjdENDJCMjBBRjE0ODIwMDA4OEFE
NkMgLyogR3JhcGhpY3NSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjdENDJCNDBB
RjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQjI3RDQyQjYwQUYxNDgyMDAwODhBRDZDIC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFn
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjdENDJCODBBRjE0ODIwMDA4OEFENkMgLyogR3Jh
cGhpY3NSZXNvdXJjZU1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjdENDJCQTBBRjE0
ODIwMDA4OEFENkMgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCMjdENDJCQzBBRjE0ODIwMDA4OEFENkMgLyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCMjExRDMzNDBBRjI1Q0YxMDAyNDJFQjAgLyogR3JhcGhpY3NSZXNvdXJj
ZUNsaXBwZXJRdWFydHoubW0gaW4gU291cmNlcyAqLywKKwkJCQlCMjExRDMzNTBBRjI1Q0YxMDAy
NDJFQjAgLyogR3JhcGhpY3NSZXNvdXJjZUltYWdlUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQjIxMUQzMzYwQUYyNUNGMTAwMjQyRUIwIC8qIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXJRdWFy
dHoubW0gaW4gU291cmNlcyAqLywKKwkJCQlCMjI0OTZCRjBBRjI2OTk5MDAxQjhDMjAgLyogS0Nh
bnZhc0l0ZW1RdWFydHoubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IENNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIENNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzMzNSkKKysrIENNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsNiBAQAogaW5jbHVkZV9kaXJlY3Rvcmll
cygKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0KICAgICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwotICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtCi0gICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxhdGZv
cm0vbmV0d29yawogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xvYWRlcgogICAgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xvYWRlci9pY29uCiAgICAke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0vY3NzCkBAIC0zNCw2ICszMiwxMiBAQAogICAgJHtDTUFLRV9DVVJSRU5UX0JJ
TkFSWV9ESVJ9L2tzdmcyL21pc2MgCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0va3N2
ZzIvZXZlbnRzCiAgICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcGxhdGZvcm0KKyAgICR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybQorICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtL3F0CisgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxh
dGZvcm0vbmV0d29yaworICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL25l
dHdvcmsvcXQKKyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cworICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3F0CiAg
ICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMKICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYK
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnCkBAIC00MSw4ICs0NSw2IEBACiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nCi0gICAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vcGxhdGZvcm0vcXQKLSAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9y
bS9uZXR3b3JrL3F0CiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vV2ViQ29yZStTVkcK
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi9KYXZhU2NyaXB0Q29yZS9ranMKICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncwpA
QCAtNjM3LDggKzYzOSw2IEBACiAgICAga3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAogICAg
IGtzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKICAgICBrc3ZnMi9zdmcvU1ZHTWV0YWRhdGFF
bGVtZW50LmNwcAotIyAgIGtzdmcyL2VjbWEvR2xvYmFsT2JqZWN0LmNwcAotIyAgIGtzdmcyL2Vj
bWEvRWNtYS5jcHAKICAgICBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcAogICAgIGtzdmcy
L21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAogICAgIGtzdmcyL21pc2MvS1NWR1RpbWVT
Y2hlZHVsZXIuY3BwCkBAIC02NDcsMTAgKzY0Nyw2IEBACiAgICAga3N2ZzIvZXZlbnRzL1NWR1pv
b21FdmVudC5jcHAKICAgICBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuY3BwCiAgICAga2NhbnZh
cy9LQ2FudmFzRmlsdGVycy5jcHAKLSAgICBrY2FudmFzL0tDYW52YXNDbGlwcGVyLmNwcAotICAg
IGtjYW52YXMvS0NhbnZhc01hcmtlci5jcHAKLSAgICBrY2FudmFzL0tDYW52YXNNYXNrZXIuY3Bw
Ci0gICAga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2UuY3BwCiAgICAga2NhbnZhcy9kZXZpY2UvS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCiAgICAga2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ1BhaW50U2VydmVyU29saWQuY3BwCiAgICAga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1Bh
aW50U2VydmVyUGF0dGVybi5jcHAKQEAgLTY2MSw3ICs2NTcsNiBAQAogICAgIGtjYW52YXMvZGV2
aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXQuY3BwCiAgICAga2NhbnZhcy9k
ZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF0LmNwcAogICAgIGtjYW52YXMv
ZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclF0LmNwcAotICAgIGtjYW52YXMvZGV2aWNl
L3F0L0tDYW52YXNDbGlwcGVyUXQuY3BwCiAjICAga2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0Zp
bHRlclF0LmNwcAogIyAgIGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNJbWFnZUl0ZW1RdC5jcHAK
ICAgICByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKQEAgLTk5Miw3ICs5ODcsNiBA
QAogICAgIHBsYXRmb3JtL0Zsb2F0U2l6ZS5jcHAKICAgICBwbGF0Zm9ybS9TdHJpbmcuY3BwCiAg
ICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3BwCi0gICAgcGxhdGZvcm0vR3Jh
cGhpY3NUeXBlcy5jcHAKICAgICBwbGF0Zm9ybS9JbnRSZWN0LmNwcAogICAgIHBsYXRmb3JtL0Fy
ZW5hLmNwcAogICAgIHBsYXRmb3JtL0FycmF5SW1wbC5jcHAKQEAgLTEwMDcsMTQgKzEwMDEsMTIg
QEAKICAgICBwbGF0Zm9ybS9UZXh0RGVjb2Rlci5jcHAKICAgICBwbGF0Zm9ybS9UZXh0RW5jb2Rp
bmcuY3BwCiAgICAgcGxhdGZvcm0vVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCi0gICAgcGxhdGZv
cm0vR3JhcGhpY3NDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAgICAgcGxh
dGZvcm0vQ29sb3IuY3BwCiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3RJbXBsLmNwcAog
ICAgIHBsYXRmb3JtL0tVUkwuY3BwCiAgICAgcGxhdGZvcm0vU3RyaW5nSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9GbG9hdFJlY3QuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRl
ci5jcHAKICAgICBwbGF0Zm9ybS9QYXRoLmNwcAogICAgIHBsYXRmb3JtL3F0L0VkaXRvckNsaWVu
dFF0LmNwcAogICAgIHBsYXRmb3JtL3F0L1NvdW5kUXQuY3BwCkBAIC0xMDM3LDggKzEwMjksNiBA
QAogICAgIHBsYXRmb3JtL3F0L0ZvbnREYXRhUXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvU2hhcmVk
VGltZXJRdC5jcHAKICAgICBwbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAKLSAgICBwbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlTG9hZGVyTWFuYWdlci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3
b3JrL3F0L1Jlc291cmNlTG9hZGVyUXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvRmxvYXRQb2ludFF0
LmNwcAogICAgIHBsYXRmb3JtL3F0L0xpc3RCb3hRdC5jcHAKICAgICBwbGF0Zm9ybS9xdC9GbG9h
dFJlY3RRdC5jcHAKQEAgLTEwNjAsNiArMTA1MCwxOSBAQAogICAgIHBsYXRmb3JtL3F0L1Njcm9s
bFZpZXdDYW52YXNRdC5jcHAKICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5j
cHAKICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZGVyLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VMb2FkZXJNYW5hZ2VyLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3Vy
Y2VMb2FkZXJRdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1Jlc291cmNlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzUmVzb3VyY2VJbWFnZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291
cmNlQ2xpcHBlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFz
a2VyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXJrZXIuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlSW1hZ2VRdC5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlTWFza2VyUXQuY3BwCiAgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKICAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCiAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
</data>
<flag name="review"
          id="3892"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11277</attachid>
            <date>2006-10-29 14:17:13 -0800</date>
            <delta_ts>2006-10-30 16:27:32 -0800</delta_ts>
            <desc>Final patch including ChangeLogs</desc>
            <filename>kcanvas-rework.diff</filename>
            <type>text/plain</type>
            <size>271499</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC02LDggKzYsNiBAQCBpbmNsdWRlIChDaGVja0NYWENvbXBpbGVyRmxh
ZykKIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX0JJTkFS
WV9ESVJ9CiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMK
LSAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybQotICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsKICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9sb2FkZXIKICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sb2FkZXIvaWNv
bgogICAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2NzcwpAQCAtMzQsNiArMzIsMTIgQEAg
aW5jbHVkZV9kaXJlY3RvcmllcygKICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9rc3Zn
Mi9taXNjIAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2tzdmcyL2V2ZW50cwogICAg
JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3BsYXRmb3JtCisgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vcGxhdGZvcm0KKyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0
Zm9ybS9xdAorICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsK
KyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3F0CisgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9xdAogICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzCiAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmCiAgICAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZwpAQCAtNDEsOCAr
NDUsNiBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibQogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcAogICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZwotICAgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L3BsYXRmb3JtL3F0Ci0gICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9xdAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYkNv
cmUrU1ZHCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vSmF2YVNjcmlwdENvcmUv
a2pzCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MKQEAgLTYzNyw4ICs2MzksNiBAQCBzZXQgKFNWR19TT1VSQ0VTCiAgICAga3N2ZzIvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAogICAgIGtzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKICAg
ICBrc3ZnMi9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmNwcAotIyAgIGtzdmcyL2VjbWEvR2xvYmFs
T2JqZWN0LmNwcAotIyAgIGtzdmcyL2VjbWEvRWNtYS5jcHAKICAgICBrc3ZnMi9taXNjL1NWR0lt
YWdlTG9hZGVyLmNwcAogICAgIGtzdmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAog
ICAgIGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCkBAIC02NDcsMTAgKzY0Nyw2IEBA
IHNldCAoU1ZHX1NPVVJDRVMKICAgICBrc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50LmNwcAogICAg
IGtjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5jcHAKICAgICBrY2FudmFzL0tDYW52YXNGaWx0ZXJz
LmNwcAotICAgIGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCi0gICAga2NhbnZhcy9LQ2FudmFz
TWFya2VyLmNwcAotICAgIGtjYW52YXMvS0NhbnZhc01hc2tlci5jcHAKLSAgICBrY2FudmFzL0tD
YW52YXNSZXNvdXJjZS5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudC5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJT
b2xpZC5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
LmNwcApAQCAtNjYxLDcgKzY1Nyw2IEBAIHNldCAoU1ZHX1NPVVJDRVMKICAgICBrY2FudmFzL2Rl
dmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF0LmNwcAogICAgIGtjYW52YXMv
ZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5jcHAKICAgICBrY2FudmFz
L2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdC5jcHAKLSAgICBrY2FudmFzL2Rldmlj
ZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmNwcAogIyAgIGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNG
aWx0ZXJRdC5jcHAKICMgICBrY2FudmFzL2RldmljZS9xdC9LQ2FudmFzSW1hZ2VJdGVtUXQuY3Bw
CiAgICAgcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCkBAIC05OTIsNyArOTg3LDYg
QEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIHBsYXRmb3JtL0Zsb2F0U2l6ZS5jcHAKICAgICBwbGF0
Zm9ybS9TdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3Bw
Ci0gICAgcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5jcHAKICAgICBwbGF0Zm9ybS9JbnRSZWN0LmNw
cAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0FycmF5SW1wbC5jcHAKQEAg
LTEwMDcsMTQgKzEwMDEsMTIgQEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIHBsYXRmb3JtL1RleHRE
ZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL1RleHRFbmNvZGluZy5jcHAKICAgICBwbGF0Zm9ybS9U
ZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKLSAgICBwbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuY3Bw
CiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9ybS9Db2xvci5jcHAKICAgICBw
bGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdEltcGwuY3BwCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAK
ICAgICBwbGF0Zm9ybS9TdHJpbmdJbXBsLmNwcAogICAgIHBsYXRmb3JtL0Zsb2F0UmVjdC5jcHAK
LSAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL1Bh
dGguY3BwCiAgICAgcGxhdGZvcm0vcXQvRWRpdG9yQ2xpZW50UXQuY3BwCiAgICAgcGxhdGZvcm0v
cXQvU291bmRRdC5jcHAKQEAgLTEwMzcsNiArMTAyOSw3IEBAIHNldChXZWJDb3JlX1NSQ1MKICAg
ICBwbGF0Zm9ybS9xdC9Gb250RGF0YVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L1NoYXJlZFRpbWVy
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCisgICAgcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxl
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvRmxvYXRQb2ludFF0LmNwcApAQCAtMTA2MCw2ICsxMDUz
LDE4IEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBwbGF0Zm9ybS9xdC9TY3JvbGxWaWV3Q2FudmFz
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCiAgICAgcGxh
dGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUxvYWRlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlTG9h
ZGVyTWFuYWdlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlTG9hZGVyUXQu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NSZXNvdXJjZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNl
Q2xpcHBlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFza2Vy
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXJrZXIuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdC5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlSW1hZ2VRdC5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlTWFza2VyUXQuY3BwCiAgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCiAgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQyNSkKKysr
IFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjY5IEBACisyMDA2
LTEwLTI5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXM6IGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDM2CisKKyAgICAgICAgQmV0dGVyIFNW
RyBpbnRlZ3JhdGlvbiBpbiBXZWJLaXQsIFBhcnQgSS4KKworICAgICAgICBUaGUgcGF0Y2ggaXMg
bW9zdGx5IGFib3V0IGNyZWF0aW5nIGEgbmV3IHBsYXRmb3JtL2dyYXBoaWNzIGRpcmVjdG9yeSwg
YW5kCisgICAgICAgIG1vdmluZyB0aGUga2NhbnZhcyByZXNvdXJjZXMgKGNsaXBwZXIvbWFza2Vy
L21hcmtlcikgdGhlcmUsIHdpdGggYSBuZXcKKyAgICAgICAgbmFtZSAoS0NhbnZhc0NsaXBwZXIg
LT4gR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIpLiBBbHNvIGZpeCBzZXZlcmFsIG93bmVyc2hpcAor
ICAgICAgICBpc3N1ZXMsIGJ5IHVzaW5nIHJlZiBjb3VudGluZyAodGhlIFNWRyBjbGFzc2VzIG5v
dyBzdG9yZSBSZWZQdHJzIHRvIHRoZSByZXNvdXJjZXMpLgorCisgICAgICAgIEtDYW52YXNGaWx0
ZXJzIGlzIHN0aWxsIGxlZnQgaW4ga2NhbnZhcy8gc3ViZGlyZWN0b3J5LCB0byBiZSBjb252ZXJ0
ZWQgaW4gYSBuZXh0IHBhdGNoLgorICAgICAgICBBbGwgZGV0YWlscyBvZiB0aGUgcGF0Y2gsIGFu
ZCB1cGNvbWluZyBwYXRjaGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgYnVnIHJlcG9ydC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNDbGlwcGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNDbGlwcGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICoga2NhbnZhcy9LQ2FudmFzQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICoga2NhbnZh
cy9LQ2FudmFzQ3JlYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc0Zp
bHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsdGVyQnlJZCk6CisgICAgICAgICog
a2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oOgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc0ltYWdl
Lmg6IFJlbW92ZWQuCisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzTWFya2VyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNNYXJrZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBrY2FudmFzL0tDYW52YXNNYXNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMv
S0NhbnZhc01hc2tlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1Jlc291
cmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNSZXNvdXJjZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVSZW5kZXJSZXNvdXJjZXMpOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNl
L0tSZW5kZXJpbmdEZXZpY2UuaDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlcjo6
S1JlbmRlcmluZ1BhaW50U2VydmVyKToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudDo6bGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6S1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OnNldExpc3RlbmVyKToKKyAgICAgICAgKiBrY2FudmFz
L2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oOgorICAgICAgICAqIGtjYW52
YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6S1JlbmRlcmluZ1BhaW50U2VydmVy
UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
Ojp+S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OktSZW5k
ZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6S1Jl
bmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6bGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0TGlzdGVuZXIpOgorICAgICAgICAqIGtj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaDoKKyAgICAgICAgKiBr
Y2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oOgorICAgICAgICAqIGtj
YW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVyUXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVyUXQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S1JlbmRlcmluZ0RldmljZVF0Ojpjb250ZXh0Rm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6S1JlbmRlcmluZ0RldmljZVF0OjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpLUmVuZGVyaW5nRGV2aWNlUXQ6OmNyZWF0ZVBhaW50U2VydmVyKToKKyAgICAgICAgKiBr
Y2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuaDoKKyAgICAgICAgKiBrY2FudmFz
L2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF0LmNwcDoKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3BwOgor
ICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclF0LmNwcDoK
KyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF0
LmNwcDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdC9SZW5kZXJQYXRoUXQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5t
bToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGaWx0ZXJRdWFydHo6OmdldENJRmlsdGVyU3Rh
Y2spOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5t
bToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01hc2tlclF1YXJ0ei5o
OiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzTWFza2Vy
UXVhcnR6Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2Fu
dmFzUmVzb3VyY2VzUXVhcnR6Lmg6IFJlbW92ZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW06IFJlbW92ZWQuCisgICAgICAgICoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaDoKKyAgICAgICAgKiBr
Y2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbToKKyAgICAgICAg
KFdlYkNvcmU6OktSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNvbnRleHRGb3JJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVQYWludFNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50UXVhcnR6Lm1tOgorICAgICAgICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnRRdWFydHo6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KToK
KyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojp+
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHopOgorICAgICAgICAoV2ViQ29yZTo6
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnNldHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bik6Cisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0
ei5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJRdWFydHoubW06CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6c2V0dXApOgor
ICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1tOgorICAgICAg
ICAqIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpT
VkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50
Ojp+U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxl
bWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6On5TVkdHcmFk
aWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpjYW52
YXNSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnJlc291
cmNlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
On5TVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTWFza0VsZW1lbnQ6On5TVkdNYXNrRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXNrRWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFz
a0VsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFza0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojp+U1ZHUGF0dGVybkVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVzRnJvbVJl
ZmVyZW5jZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmRy
YXdQYXR0ZXJuQ29udGVudEludG9UaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5F
bGVtZW50OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3Jh
ZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3JhcGhp
Y3NDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFByaXZhdGU6OkdyYXBo
aWNzQ29udGV4dFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVHcmFwaGljc0NvbnRleHRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZvbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGb250KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0UGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRpbmdDb250cm9s
VGludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRVcGRhdGluZ0Nv
bnRyb2xUaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBhaW50
aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwYWludGlu
Z0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SGlnaGxpZ2h0Rm9yVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmluaXRGb2N1c1JpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhckZvY3VzUmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0JvdW5kaW5nUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1Jlc291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jl
c291cmNlOjpHcmFwaGljc1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVz
b3VyY2U6On5HcmFwaGljc1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVz
b3VyY2U6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZTo6
YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2U6OmNsaWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZTo6aWRJblJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2U6OnNldElkSW5SZWdpc3RyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFJlc291cmNlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRQYWludFNlcnZlckJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlOjppc1Bh
aW50U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2U6OmlzRmlsdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2U6OmlzQ2xpcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlOjppc01hcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1Jlc291cmNlOjppc01hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc1Jlc291cmNlTGlzdGVuZXI6On5HcmFwaGljc1Jlc291cmNlTGlzdGVuZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlQ2xpcHBlcjo6R3JhcGhpY3NSZXNv
dXJjZUNsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXI6
On5HcmFwaGljc1Jlc291cmNlQ2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jl
c291cmNlQ2xpcHBlcjo6cmVzZXRDbGlwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlcjo6YWRkQ2xpcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NSZXNvdXJjZUNsaXBwZXI6OmNsaXBEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
UmVzb3VyY2VDbGlwcGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xpcHBlckJ5SWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q2xpcERhdGFMaXN0OjphZGRQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyOjppc0NsaXBwZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFya2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFya2VyOjpHcmFwaGljc1Jlc291cmNl
TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6On5HcmFw
aGljc1Jlc291cmNlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VN
YXJrZXI6OnNldE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFy
a2VyOjpzZXRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZU1hcmtlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFya2VyOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE1hcmtlckJ5SWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFya2VyOjpyZWZYKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OnJlZlkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NSZXNvdXJjZU1hcmtlcjo6c2V0QW5nbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NSZXNvdXJjZU1hcmtlcjo6c2V0QXV0b0FuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzUmVzb3VyY2VNYXJrZXI6OnNldFVzZVN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OnVzZVN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OmlzTWFya2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFza2VyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFza2VyOjpHcmFwaGljc1Jlc291cmNlTWFza2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VNYXNrZXI6On5HcmFwaGljc1Jl
c291cmNlTWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VNYXNrZXI6
OnNldE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZU1hc2tlcjo6bWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFza2VyOjpleHRlcm5hbFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE1hc2tlckJ5SWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291cmNlTWFza2VyOjppc01hc2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29tcG9zaXRlT3BlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcG9zaXRlT3BlcmF0b3JOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlTGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpsaW5lQ2FwTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUxpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVK
b2luTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZUltYWdlUXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzUmVzb3VyY2VJbWFnZTo6aW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1Jlc291cmNlSW1hZ2U6OnNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzUmVzb3VyY2VNYXNrZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZU1hc2tlcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdWFydHovR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFydHoubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXI6OmFwcGx5
Q2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVzb3Vy
Y2VJbWFnZVF1YXJ0ei5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jlc291
cmNlSW1hZ2U6OkdyYXBoaWNzUmVzb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc1Jlc291cmNlSW1hZ2U6On5HcmFwaGljc1Jlc291cmNlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NSZXNvdXJjZUltYWdlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzUmVzb3VyY2VJbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1Jl
c291cmNlSW1hZ2U6OmNnTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNvdXJj
ZUltYWdlOjpzZXRDR0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdWFydHov
R3JhcGhpY3NSZXNvdXJjZU1hc2tlclF1YXJ0ei5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjphcHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlF
eHBhbmRBbHBoYXRvR3JheXNjYWxlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9y
bUltYWdlSW50b0dyYXlzY2FsZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NSZXNv
dXJjZU1hc2tlcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd01h
cmtlcnNEYXRhOjpEcmF3TWFya2Vyc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0
aDo6ZHJhd01hcmtlcnNJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFNWR0lubGluZUZsb3cpOgor
CiAyMDA2LTEwLTI5ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3JlIHNlbWktZml4ZXMuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQxNyw3ICsxNDE3LDYgQEAKIAkJOTM1
MjA4ODIwOUJENDVFOTAwRjIwMzhEIC8qIENvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MjA4ODEwOUJENDVFOTAwRjIwMzhEIC8qIENv
b2tpZUphci5oICovOyB9OwogCQk5MzUzNjczRjA5QUVENzkyMDBEMzVDRDYgLyogU2Nyb2xsQmFy
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1
MzY3M0UwOUFFRDc5MjAwRDM1Q0Q2IC8qIFNjcm9sbEJhck1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUzNjc2QjA5QUVEODhCMDBEMzVD
RDYgLyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1t
ICovOyB9OwotCQk5MzUzNjdFNTA5QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUzNjdFNDA5
QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi87IH07CiAJCTkzNTM2N0U5MDlB
Rjc3RUYwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUzNjdFODA5QUY3N0VGMDBEMzVDRDYgLyog
R3JhcGhpY3NDb250ZXh0TWFjLm1tICovOyB9OwogCQk5MzUzNjg2QjA5QUY3OEY2MDBEMzVDRDYg
LyogVGV4dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1MzY4NkEwOUFGNzhGNjAwRDM1Q0Q2IC8qIFRleHREaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVDNDc1RDA5
QUM0Q0EwMDBBNkFBQjQgLyogSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NUMwOUFDNENBMDAwQTZBQUI0IC8qIEhpc3RvcnkuaCAq
LzsgfTsKQEAgLTE0NDYsOCArMTQ0NSw2IEBACiAJCTkzOEU2NUY3MDlGMDk4NUQwMDhBNDhFQyAv
KiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi87IH07CiAJCTkzOEU2NjYwMDlGMDlCODEwMDhB
NDhFQyAvKiBKU0hUTUxDYW52YXNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOEU2NjVGMDlGMDlCODEwMDhBNDhFQyAvKiBKU0hUTUxD
YW52YXNFbGVtZW50LmNwcCAqLzsgfTsKIAkJOTM4RTY2NjIwOUYwOUI4NzAwOEE0OEVDIC8qIEpT
SFRNTENhbnZhc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzOEU2NjYxMDlGMDlCODcwMDhBNDhFQyAvKiBKU0hUTUxDYW52YXNFbGVtZW50
LmggKi87IH07Ci0JCTkzOEU2ODNDMDlGMEJEN0IwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzhFNjgzQjA5
RjBCRDdBMDA4QTQ4RUMgLyogR3JhcGhpY3NUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzOEU2ODU0MDlGMEJFMDQwMDhBNDhFQyAvKiBH
cmFwaGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOEU2ODUzMDlGMEJFMDQwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLzsg
fTsKIAkJOTM5MkYxNDIwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTJGMTQxMEFEMTg1RjQw
MDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmggKi87IH07CiAJCTkzOTJGMTQ0MEFEMTg1RkUwMDY5
MUJENCAvKiBSZW5kZXJDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzOTJGMTQzMEFEMTg1RkUwMDY5MUJENCAvKiBSZW5kZXJDb3VudGVy
LmNwcCAqLzsgfTsKIAkJOTM5MkYxNDYwQUQxODYwQzAwNjkxQkQ0IC8qIENvdW50ZXJSZXNldE5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTJG
MTQ1MEFEMTg2MEMwMDY5MUJENCAvKiBDb3VudGVyUmVzZXROb2RlLmggKi87IH07CkBAIC0xNzM2
LDggKzE3MzMsNiBAQAogCQlBODEzNjlFNTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgxMzY5QzkwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxLZXlnZW5FbGVtZW50LmNwcCAqLzsgfTsK
IAkJQTgxMzZEMzgwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzZEMzYwOTczQThFNzAwRDc0
NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovOyB9OwogCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMg
LyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwICov
OyB9OwotCQlBODE2NTVENDA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxNjU1RDIw
OTZCQkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHouaCAqLzsgfTsKLQkJQTgxNjU1
RDUwOTZCQkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHoubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE2NTVEMzA5NkJCRUFDMDA2MDEw
NTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5tbSAqLzsgfTsKIAkJQTgxNjU1RTQwOTZCQzEzOTAw
NjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5jcHAgKi87IH07CiAJCUE4MTY1NUU1MDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgx
NjU1RTMwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmggKi87IH07CiAJCUE4MTg1
RjM5MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBE
b2N1bWVudFR5cGUuaCAqLzsgfTsKQEAgLTE3NjEsNyArMTc1Niw2IEBACiAJCUE4MjM5OEE4MDlC
M0FDRjUwMEI2MDY0MSAvKiBQbHVnSW5JbmZvU3RvcmVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODIzOThBNzA5QjNBQ0Y1MDBCNjA2NDEgLyog
UGx1Z0luSW5mb1N0b3JlTWFjLm1tICovOyB9OwogCQlBODIzOUUwMDA5QjNDRjhBMDBCNjA2NDEg
LyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi87IH07CiAJCUE4
MjM5RTAxMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9n
Z2luZy5oICovOyB9OwotCQlBODIzQTc1QzA5QjZFNTM5MDBCNjA2NDEgLyogR3JhcGhpY3NDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MjNBNzVCMDlCNkU1MzkwMEI2MDY0MSAvKiBHcmFwaGljc0NvbnRleHQuY3BwICovOyB9OwogCQlB
ODI2RThBRTBBMUE4RjIzMDBDRDFCQjYgLyogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODI2RThB
QzBBMUE4RjIzMDBDRDFCQjYgLyogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmggKi87
IH07CiAJCUE4MjZFQzQ4MEExQjBDQkUwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgyNkU4QUQwQTFBOEYyMzAwQ0QxQkI2IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CiAJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFF
ODA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuY3BwICovOyB9OwpAQCAtMTc2OSwxNCArMTc2
Myw2IEBACiAJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2
MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2
NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlB
ODMzQzg1MjBBMkNGNTI4MDBENTc2NjQgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAw
MEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKLQkJQTg0MTVGOUEwQUMxMEM1
RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODQxNUY5MTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0Ns
aXBwZXIuaCAqLzsgfTsKLQkJQTg0MTVGOUIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlw
cGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
NDE1RjkyMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5jcHAgKi87IH07Ci0JCUE4
NDE1RjlDMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1RjkzMEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzUmVzb3VyY2UuaCAqLzsgfTsKLQkJQTg0MTVGOUQwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODQxNUY5NDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNl
LmNwcCAqLzsgfTsKLQkJQTg0MTVGOUUwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk1
MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmggKi87IH07Ci0JCUE4NDE1RjlGMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk2MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2Fu
dmFzTWFza2VyLmNwcCAqLzsgfTsKLQkJQTg0MTVGQTAwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52
YXNNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4NDE1Rjk3MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggKi87IH07Ci0JCUE4
NDE1RkExMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk4MEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLzsgfTsKIAkJQTg0MTVGQTIwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNGaWx0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4NDE1Rjk5MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5j
cHAgKi87IH07CiAJCUE4NjYyOUNGMDlEQTJCNDcwMDk2MzNBNSAvKiBKU1VJRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NjYyOUM5MDlEQTJC
NDcwMDk2MzNBNSAvKiBKU1VJRXZlbnQuaCAqLzsgfTsKIAkJQTg2NjI5RDAwOURBMkI0ODAwOTYz
M0E1IC8qIEpTVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODY2MjlDQTA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCAqLzsg
fTsKQEAgLTE4NzcsOCArMTg2Myw2IEBACiAJCUE4OEFEM0FBMDk1MjQ4NkQwMDFERDE5NiAvKiBL
Q2FudmFzRmlsdGVyUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlclF1YXJ0
ei5oICovOyB9OwogCQlBODhBRDNBQjA5NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0ZpbHRlclF1
YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzBGQjZBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzRmlsdGVyUXVhcnR6Lm1tICovOyB9Owog
CQlBODhBRDNBRDA5NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0l0ZW1RdWFydHoubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkI2QzA4OTcwMUY4
MDBCQTUxMTQgLyogS0NhbnZhc0l0ZW1RdWFydHoubW0gKi87IH07Ci0JCUE4OEFEM0FFMDk1MjQ4
NkQwMDFERDE5NiAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkI2RDA4OTcwMUY4MDBCQTUxMTQgLyog
S0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oICovOyB9OwotCQlBODhBRDNBRjA5NTI0ODZEMDAxREQx
OTYgLyogS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjZFMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFz
UmVzb3VyY2VzUXVhcnR6Lm1tICovOyB9OwogCQlBODhBRDNCMDA5NTI0ODZFMDAxREQxOTYgLyog
S1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCNzEwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHouaCAqLzsgfTsKIAkJQTg4QUQzQjEwOTUyNDg2RTAwMUREMTk2IC8qIEtSZW5kZXJp
bmdEZXZpY2VRdWFydHoubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEMwRkI3MjA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0
ei5tbSAqLzsgfTsKIAkJQTg4QUQzQjIwOTUyNDg2RTAwMUREMTk2IC8qIEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCNzMwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tICovOyB9OwpAQCAtMTg4Nyw4ICsxODcxLDYgQEAKIAkJ
QTg4QUQzQjUwOTUyNDg2RTAwMUREMTk2IC8qIFF1YXJ0elN1cHBvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjc2MDg5NzAxRjgwMEJBNTEx
NCAvKiBRdWFydHpTdXBwb3J0LmggKi87IH07CiAJCUE4OEFEM0I2MDk1MjQ4NkUwMDFERDE5NiAv
KiBRdWFydHpTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDMEZCNzcwODk3MDFGODAwQkE1MTE0IC8qIFF1YXJ0elN1cHBvcnQubW0gKi87
IH07CiAJCUE4OEFEM0JFMDk1MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzRmlsdGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCN0YwODk3MDFG
ODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJzLmggKi87IH07Ci0JCUE4OEFEM0MwMDk1MjQ4NkUw
MDFERDE5NiAvKiBLQ2FudmFzSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QzBGQjgxMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzSW1hZ2Uu
aCAqLzsgfTsKLQkJQTg4QUQzQzcwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZUxp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEMwRkI4OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCAqLzsg
fTsKIAkJQTg4QUQzQ0IwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNUcmVlRGVidWcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTBFMzkzMDhBNDE2
MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi87IH07CiAJCUE4OEFEM0NDMDk1MjQ4
NkUwMDFERDE5NiAvKiBLQ2FudmFzVHJlZURlYnVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTBFMzk0MDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2Fu
dmFzVHJlZURlYnVnLmNwcCAqLzsgfTsKIAkJQTg4QUQ0MDEwOTUyNDhGMDAwMUREMTk2IC8qIFNW
R1JlbmRlclN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGNkZGMDg5NzAxRjEwMEJBNTExNCAvKiBTVkdSZW5kZXJTdHlsZS5jcHAgKi87
IH07CkBAIC0yMjg1LDYgKzIyNjcsMjIgQEAKIAkJQjIyMkY2OTkwQUI3NzE5NTAwMjJFRkFEIC8q
IEpTU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjJGNjk3MEFCNzcxOTUwMDIyRUZBRCAvKiBKU1NWR0FuZ2xlLmggKi87IH07CiAJCUIy
MjJGNjlDMEFCNzcxQjgwMDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMkY2OUEwQUI3NzFCODAwMjJFRkFE
IC8qIEpTU1ZHRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjJGNjlEMEFCNzcxQjgwMDIyRUZBRCAv
KiBKU1NWR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjJGNjlCMEFCNzcxQjgwMDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuaCAqLzsgfTsK
KwkJQjI4NjE2OUYwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjg2MTY4OTBBRjQxODkw
MDA0NTQzNzYgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjI4NjE2QTAwQUY0MTg5
MDAwNDU0Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI4NjE2OEEwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNz
Q29udGV4dC5oICovOyB9OworCQlCMjg2MTZBMTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjg2MTY4QjBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZS5jcHAgKi87IH07
CisJCUIyODYxNkEyMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjg2MTY4QzBBRjQxODkw
MDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZS5oICovOyB9OworCQlCMjg2MTZBMzBBRjQxODkw
MDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI4NjE2OEQwQUY0MTg5MDAwNDU0Mzc2IC8q
IEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmNwcCAqLzsgfTsKKwkJQjI4NjE2QTQwQUY0MTg5MDAw
NDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjg2MTY4RTBBRjQxODkwMDA0NTQzNzYgLyogR3Jh
cGhpY3NSZXNvdXJjZUNsaXBwZXIuaCAqLzsgfTsKKwkJQjI4NjE2QTYwQUY0MTg5MDAwNDU0Mzc2
IC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI4NjE2OTAwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVz
b3VyY2VJbWFnZS5oICovOyB9OworCQlCMjg2MTZBNzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhp
Y3NSZXNvdXJjZU1hcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjg2MTY5MTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1h
cmtlci5jcHAgKi87IH07CisJCUIyODYxNkE4MEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jl
c291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjg2MTY5MjBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5o
ICovOyB9OworCQlCMjg2MTZBOTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1h
c2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Mjg2MTY5MzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5jcHAgKi87
IH07CisJCUIyODYxNkFBMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFza2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjg2MTY5
NDBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oICovOyB9OworCQlC
Mjg2MTZBQjBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjg2MTY5NTBBRjQxODkwMDA0NTQz
NzYgLyogR3JhcGhpY3NUeXBlcy5jcHAgKi87IH07CisJCUIyODYxNkFDMEFGNDE4OTAwMDQ1NDM3
NiAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjg2MTY5NjBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NUeXBlcy5oICov
OyB9OworCQlCMjg2MTZCMDBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBw
ZXJRdWFydHoubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjg2MTY5QzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFy
dHoubW0gKi87IH07CisJCUIyODYxNkIxMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291
cmNlSW1hZ2VRdWFydHoubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjg2MTY5RDBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUltYWdl
UXVhcnR6Lm1tICovOyB9OworCQlCMjg2MTZCMjBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NS
ZXNvdXJjZU1hc2tlclF1YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyODYxNjlFMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNl
TWFza2VyUXVhcnR6Lm1tICovOyB9OwogCQlCMkNCNDE5MzBBQjc1OTA0MDA0RDlDNDUgLyogU1ZH
UmVuZGVyaW5nSW50ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMkNCNDE0QzBBQjc1OTA0MDA0RDlDNDUgLyogU1ZHUmVuZGVyaW5nSW50ZW50Lmgg
Ki87IH07CiAJCUIyQ0I0MUE2MEFCNzU5MDQwMDREOUM0NSAvKiBTVkdVbml0VHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQ0I0MTVGMEFCNzU5
MDQwMDREOUM0NSAvKiBTVkdVbml0VHlwZXMuaCAqLzsgfTsKIAkJQjJGQTNEMzYwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0M0RTBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTQyODAsNyArNDI3OCw2IEBA
CiAJCTkzNTIwODgxMDlCRDQ1RTkwMEYyMDM4RCAvKiBDb29raWVKYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llSmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNTM2NzNFMDlBRUQ3OTIwMEQzNUNENiAvKiBTY3JvbGxCYXJNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEJhck1vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MzY3NkEwOUFFRDg4QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzUzNjdFNDA5QUY3N0REMDBE
MzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUz
NjdFODA5QUY3N0VGMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjg2QTA5QUY3OEY2MDBEMzVDRDYgLyogVGV4
dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RGlyZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUM0NzVDMDlBQzRDQTAwMEE2
QUFCNCAvKiBIaXN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMTAsOCArNDMwNyw2IEBACiAJ
CTkzOEU2NjI1MDlGMDk5NTYwMDhBNDhFQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzhFNjY1RjA5RjA5QjgxMDA4QTQ4RUMgLyogSlNIVE1MQ2FudmFzRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxDYW52
YXNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY2NjEwOUYw
OUI4NzAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNIVE1MQ2FudmFzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk5MzhFNjgzQjA5RjBCRDdBMDA4QTQ4RUMgLyogR3JhcGhpY3NUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc1R5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzOEU2ODUzMDlGMEJFMDQwMDhBNDhFQyAvKiBHcmFwaGlj
c1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyRjE0MTBBRDE4NUY0
MDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzky
RjE0MzBBRDE4NUZFMDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzOTJGMTQ1MEFEMTg2MEMwMDY5MUJENCAvKiBDb3VudGVyUmVzZXRO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGVyUmVzZXROb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTUxLDggKzQ1NDYsNiBAQAogCQlB
ODEzNjlDOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxLZXlnZW5FbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZv
cm1EYXRhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTM2RDM3MDk3M0E4RTcwMEQ3
NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvcm1EYXRhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4
MTY1NUQyMDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFza2VyUXVhcnR6Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MTY1NUQzMDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2FudmFz
TWFza2VyUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEtDYW52YXNNYXNrZXJRdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTWFza0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODE2NTVFMzA5NkJDMTM5MDA2MDEwNTggLyogU1ZHTWFza0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01hc2tFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTg1RjMxMDk3NjU3NjUwMDU4MjZE
OSAvKiBEb2N1bWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
Y3VtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU3Niw3ICs0NTY5
LDYgQEAKIAkJQTgyMzk4QTcwOUIzQUNGNTAwQjYwNjQxIC8qIFBsdWdJbkluZm9TdG9yZU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnSW5JbmZvU3Rv
cmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MjM5REZFMDlCM0NGOEEw
MEI2MDY0MSAvKiBMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgyMzlERkYw
OUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTgyM0E3NUIw
OUI2RTUzOTAwQjYwNjQxIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTgyNkU4QUMwQTFBOEYyMzAwQ0QxQkI2IC8qIEpTSFRNTE9wdGlvbkVs
ZW1lbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNI
VE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4MjZFOEFEMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50Q29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9w
dGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4MkZDMzNCMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQ3Vyc29yRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKQEAgLTQ1OTUsMTQgKzQ1ODcsNiBAQAogCQlBODMzQzdGNjBBMkNGMUQ4MDBENTc2NjQgLyog
eG1sYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHhtbGF0dHJzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFt
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTE5hbWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0
IC8qIFhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxOYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5MTBBQzEwQzVEMDBGN0Qw
REYgLyogS0NhbnZhc0NsaXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
S0NhbnZhc0NsaXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTIw
QUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNDbGlwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTg0MTVGOTMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzUmVzb3VyY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTQwQUMxMEM1RDAwRjdEMERGIC8qIEtD
YW52YXNSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBL
Q2FudmFzUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5
NTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hc2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFza2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE4NDE1Rjk2MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNNYXNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5NzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZh
c01hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFya2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4NDE1Rjk4MEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEtDYW52YXNNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODQx
NUY5OTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0ZpbHRlcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZhc0ZpbHRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUE4NUQ3QThDMDg3OUVDNjQwMDZBOTE3MiAvKiBBZmZp
bmVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC00OTAyLDggKzQ4ODYsNiBAQAog
CQlBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlclF1YXJ0ei5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtDYW52YXNGaWx0
ZXJRdWFydHouaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUE4QzBGQjZBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzRmlsdGVyUXVh
cnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBLQ2FudmFzRmlsdGVyUXVhcnR6Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCNkMwODk3MDFGODAwQkE1MTE0
IC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLQ2FudmFzSXRlbVF1YXJ0ei5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGQjZE
MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Jlc291cmNlc1F1
YXJ0ei5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKLQkJQThDMEZCNkUwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFy
dHoubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEtDYW52YXNSZXNvdXJjZXNRdWFydHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRkI3MTA4OTcwMUY4MDBCQTUx
MTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtSZW5kZXJpbmdEZXZpY2VRdWFydHouaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBG
QjcyMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCNzMwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFk
aWVudFF1YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC00OTEyLDggKzQ4OTQsNiBAQAogCQlBOEMwRkI3NjA4OTcwMUY4MDBC
QTUxMTQgLyogUXVhcnR6U3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJ0elN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGQjc3MDg5NzAxRjgwMEJB
NTExNCAvKiBRdWFydHpTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWFydHpTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCN0YwODk3
MDFGODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc0ZpbHRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGQjgxMDg5
NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGQjg5MDg5NzAx
RjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlBOEMzMjkyMDA5M0JCNzMyMDAwQjlDQUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmNpa2Vy
bmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tBcml0aG1ldGlj
RmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJQThDMzI5MjEwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJpdGhtZXRp
Y0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQXJpdGhtZXRpY0ZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMzI5MjIwOTNCQjczMjAwMEI5Q0FDIC8qIFdL
QXJpdGhtZXRpY0ZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdLQXJpdGhtZXRpY0ZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTUxMTgsNiArNTA5OCwyMiBA
QAogCQlCMjIyRjY5NzBBQjc3MTk1MDAyMkVGQUQgLyogSlNTVkdBbmdsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjIyRjY5QTBBQjc3MUI4MDAyMkVGQUQgLyogSlNTVkdFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0VsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyRjY5QjBBQjc3MUI4MDAyMkVGQUQgLyog
SlNTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0Vs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI4NjE2ODkwQUY0MTg5MDAw
NDU0Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjI4NjE2OEEwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYxNjhCMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGlj
c1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFw
aGljc1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI4NjE2OEMw
QUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjI4NjE2OEQwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlw
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc1Jl
c291cmNlQ2xpcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYxNjhF
MEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI4NjE2OTAwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBo
aWNzUmVzb3VyY2VJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NSZXNvdXJjZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYx
NjkxMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFya2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc1Jlc291cmNlTWFya2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI4NjE2OTIwQUY0MTg5MDAwNDU0Mzc2
IC8qIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjI4NjE2OTMwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzUmVzb3Vy
Y2VNYXNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjg2MTY5NDBBRjQx
ODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMjg2MTY5NTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NUeXBl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NUeXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYxNjk2MEFGNDE4OTAwMDQ1
NDM3NiAvKiBHcmFwaGljc1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc1R5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYxNjlD
MEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlQ2xpcHBlclF1YXJ0ei5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc1Jlc291cmNlQ2xp
cHBlclF1YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI4NjE2OUQwQUY0
MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0ei5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc1Jlc291cmNlSW1hZ2VRdWFy
dHoubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyODYxNjlFMEFGNDE4OTAwMDQ1
NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzUmVzb3VyY2VNYXNrZXJRdWFydHoubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQ0I0MTAxMEFCNzU4RTYwMDREOUM0NSAv
KiBTVkdBRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FFbGVtZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDQjQxMDIwQUI3NThFNjAwNEQ5QzQ1
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
VkdBbmltYXRlQ29sb3JFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjJDQjQxMDMwQUI3NThFNjAwNEQ5QzQ1IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTc1LDE4ICs4MTcxLDggQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThDMEZCNTMwODk3MDFGNzAwQkE1MTE0IC8qIGRl
dmljZSAqLywKLQkJCQlBODQxNUY5MjBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIu
Y3BwICovLAotCQkJCUE4NDE1RjkxMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5o
ICovLAogCQkJCUE4NDE1Rjk5MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5jcHAg
Ki8sCiAJCQkJQThDMEZCN0YwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJzLmggKi8s
Ci0JCQkJQThDMEZCODEwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNJbWFnZS5oICovLAotCQkJ
CUE4NDE1Rjk4MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLywKLQkJCQlB
ODQxNUY5NzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hcmtlci5oICovLAotCQkJCUE4NDE1
Rjk2MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCAqLywKLQkJCQlBODQxNUY5
NTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hc2tlci5oICovLAotCQkJCUE4NDE1Rjk0MEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuY3BwICovLAotCQkJCUE4NDE1RjkzMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuaCAqLywKLQkJCQlBOEMwRkI4OTA4OTcw
MUY4MDBCQTUxMTQgLyogS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCAqLywKIAkJCQlBODEwRTM5
NDA4QTQxNjBGMDAzMzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5jcHAgKi8sCiAJCQkJQTgxMEUz
OTMwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcuaCAqLywKIAkJCSk7CkBAIC04
MjE3LDEwICs4MjAzLDYgQEAKIAkJCQlBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZh
c0ZpbHRlclF1YXJ0ei5oICovLAogCQkJCUE4QzBGQjZBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2Fu
dmFzRmlsdGVyUXVhcnR6Lm1tICovLAogCQkJCUE4QzBGQjZDMDg5NzAxRjgwMEJBNTExNCAvKiBL
Q2FudmFzSXRlbVF1YXJ0ei5tbSAqLywKLQkJCQlBODE2NTVEMjA5NkJCRUFDMDA2MDEwNTggLyog
S0NhbnZhc01hc2tlclF1YXJ0ei5oICovLAotCQkJCUE4MTY1NUQzMDk2QkJFQUMwMDYwMTA1OCAv
KiBLQ2FudmFzTWFza2VyUXVhcnR6Lm1tICovLAotCQkJCUE4QzBGQjZEMDg5NzAxRjgwMEJBNTEx
NCAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggKi8sCi0JCQkJQThDMEZCNkUwODk3MDFGODAw
QkE1MTE0IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHoubW0gKi8sCiAJCQkJQThDMEZCNzEwODk3
MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdEZXZpY2VRdWFydHouaCAqLywKIAkJCQlBOEMwRkI3
MjA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbSAqLywKIAkJCQlB
OEMwRkI3MzA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRR
dWFydHoubW0gKi8sCkBAIC04MjgwLDYgKzgyNjIsMzcgQEAKIAkJCXBhdGggPSBmaWx0ZXJzOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQjI4NjE2ODgwQUY0MTg5MDAwNDU0
Mzc2IC8qIGdyYXBoaWNzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlCMjg2MTY4OTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAq
LywKKwkJCQlCMjg2MTY4QTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NDb250ZXh0LmggKi8s
CisJCQkJQjI4NjE2OEIwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2UuY3BwICov
LAorCQkJCUIyODYxNjhDMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlLmggKi8s
CisJCQkJQjI4NjE2OEQwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVy
LmNwcCAqLywKKwkJCQlCMjg2MTY4RTBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJj
ZUNsaXBwZXIuaCAqLywKKwkJCQlCMjg2MTY5MDBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NS
ZXNvdXJjZUltYWdlLmggKi8sCisJCQkJQjI4NjE2OTEwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBo
aWNzUmVzb3VyY2VNYXJrZXIuY3BwICovLAorCQkJCUIyODYxNjkyMEFGNDE4OTAwMDQ1NDM3NiAv
KiBHcmFwaGljc1Jlc291cmNlTWFya2VyLmggKi8sCisJCQkJQjI4NjE2OTMwQUY0MTg5MDAwNDU0
Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuY3BwICovLAorCQkJCUIyODYxNjk0MEFGNDE4
OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyLmggKi8sCisJCQkJQjI4NjE2OTUw
QUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzVHlwZXMuY3BwICovLAorCQkJCUIyODYxNjk2MEFG
NDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1R5cGVzLmggKi8sCisJCQkJQjI4NjE2OUIwQUY0MTg5
MDAwNDU0Mzc2IC8qIHF1YXJ0eiAqLywKKwkJCSk7CisJCQlwYXRoID0gZ3JhcGhpY3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCMjg2MTY5QjBBRjQxODkwMDA0NTQzNzYg
LyogcXVhcnR6ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlCMjg2MTY5QzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFy
dHoubW0gKi8sCisJCQkJQjI4NjE2OUQwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3Vy
Y2VJbWFnZVF1YXJ0ei5tbSAqLywKKwkJCQlCMjg2MTY5RTBBRjQxODkwMDA0NTQzNzYgLyogR3Jh
cGhpY3NSZXNvdXJjZU1hc2tlclF1YXJ0ei5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gcXVhcnR6
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQkMxQTM3OTAwOTdDNkY5NzAw
MTlGM0Q4IC8qIGJpbmRpbmdzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTg0MzEsNiArODQ0NCw3IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAv
KiBwbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQjI4NjE2ODgwQUY0MTg5MDAwNDU0Mzc2IC8qIGdyYXBoaWNzICovLAogCQkJCTY1NkI4NEQ3
MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4
NjEyRCAvKiBjZiAqLywKIAkJCQk5MzAzMkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8sCkBA
IC04NDkwLDEwICs4NTA0LDYgQEAKIAkJCQlCQzZEQjM2ODBBMUE3Q0I3MDBFNUNEMTQgLyogR2x5
cGhNYXAuaCAqLywKIAkJCQlCQ0MwODk1NTBBMUM0Q0M5MDA2MTg5QTYgLyogR2x5cGhXaWR0aE1h
cC5jcHAgKi8sCiAJCQkJQkNDMDg5MjkwQTFDNDk5MTAwNjE4OUE2IC8qIEdseXBoV2lkdGhNYXAu
aCAqLywKLQkJCQlBODIzQTc1QjA5QjZFNTM5MDBCNjA2NDEgLyogR3JhcGhpY3NDb250ZXh0LmNw
cCAqLywKLQkJCQk5MzUzNjdFNDA5QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCi0JCQkJOTM4RTY4NTMwOUYwQkUwNDAwOEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuY3BwICov
LAotCQkJCTkzOEU2ODNCMDlGMEJEN0EwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmggKi8sCiAJ
CQkJMDY2Qzc3M0IwQUI2MDUyNzAwMjM4Q0M0IC8qIEljb24uaCAqLywKIAkJCQlCQzZCN0JBRTA5
OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwICovLAogCQkJCUJDRDc1QUJCMDk4OUE0NDYwMDNF
MjhERiAvKiBJbWFnZS5oICovLApAQCAtOTExOSwxMyArOTEyOSwxMCBAQAogCQkJCUE4OEFEM0E1
MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4OEFEM0E4MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQzQUEwOTUyNDg2RDAwMUREMTk2IC8qIEtDYW52YXNG
aWx0ZXJRdWFydHouaCBpbiBIZWFkZXJzICovLAotCQkJCUE4OEFEM0FFMDk1MjQ4NkQwMDFERDE5
NiAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNC
MDA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg4QUQzQjMwOTUyNDg2RTAwMUREMTk2IC8qIEtSZW5kZXJpbmdQYWludFNlcnZl
clF1YXJ0ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQzQjUwOTUyNDg2RTAwMUREMTk2IC8q
IFF1YXJ0elN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFEM0JFMDk1MjQ4NkUwMDFE
RDE5NiAvKiBLQ2FudmFzRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQzQzAwOTUy
NDg2RTAwMUREMTk2IC8qIEtDYW52YXNJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQz
QzcwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODhBRDNDQjA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc1RyZWVEZWJ1Zy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0MDIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1JlbmRl
clN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDQwNDA5NTI0OEYwMDAxREQxOTYgLyog
U1ZHUmVuZGVyU3R5bGVEZWZzLmggaW4gSGVhZGVycyAqLywKQEAgLTkyNDIsNyArOTI0OSw2IEBA
CiAJCQkJQTg4QUQ1MEMwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4OEFENTBEMDk1MjQ4RjAwMDFERDE5NiAvKiBrc3ZnLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTUyRTdBQTA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNw
YWNlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTgxNjU1RDQwOTZCQkVBQzAwNjAxMDU4IC8qIEtD
YW52YXNNYXNrZXJRdWFydHouaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTY1NUU1MDk2QkMxMzkw
MDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5Q0Ew
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxMzY5Q0MwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTQzOCw3ICs5NDQ0LDYgQEAKIAkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUz
MUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2RDZERDMwOUFGOTA2NjAwRjU5NzU5
IC8qIEZvbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTM2NzNGMDlBRUQ3OTIwMEQzNUNENiAv
KiBTY3JvbGxCYXJNb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5MzUzNjdFNTA5QUY3N0REMDBE
MzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUzNjg2QjA5
QUY3OEY2MDBEMzVDRDYgLyogVGV4dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3
QkQ3NEUwOUFGREM1NDAwNUEyMDU2IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTdCRDc1MDA5QUZEQzU0MDA1QTIwNTYgLyogVGV4dEVuY29kaW5nLmggaW4g
SGVhZGVycyAqLywKQEAgLTk1MzUsNyArOTU0MCw2IEBACiAJCQkJMTRDRjdCMzQwOUY2RUNENzAw
RUIzNjY1IC8qIEpTQ1NTUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4RTY1RjEwOUYwOTg0
MDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM4RTY2NjIwOUYwOUI4NzAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzOEU2ODNDMDlGMEJEN0IwMDhBNDhFQyAvKiBHcmFwaGljc1R5
cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MTE2ODk2MDA5RjJBNEEwMDA3NzJDQTAgLyogU1ZH
VFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1QjUyMDlGODRCNzEwMENBNEZD
MSAvKiBOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI3MzA5Rjg0Q0Q2MDBDQTRGQzEg
LyogSlNOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDMzLDEwICsxMDAzNyw2IEBA
CiAJCQkJODUxRUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTgwMTVDRTBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1Qzc4QTY4MEFCREUxQjQwMDQ0RkMxNiAvKiBE
T01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUE4NDE1RjlBMEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzQ2xpcHBlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg0MTVGOUMwQUMxMEM1
RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg0MTVG
OUUwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE4NDE1RkEwMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzNGQ0FBOTBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMThEMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01BdHRySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMThFMEFDNUQ1MzUwMDUzMjcwRiAvKiBE
T01DREFUQVNlY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQ1NSw2ICsxMDQ1
NSwxMyBAQAogCQkJCTY1NUE4MUJFMEFFRjY3RTYwMDA5NzVGMCAvKiBIVFRQSGVhZGVyTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzA1MDAyMDBBRjAyNUQzMDBGRkY0OTEgLyogQ2xpcGJvYXJk
QWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA3RjFEODBBRjJENTkwMDBEQkEz
MUEgLyogSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjI4NjE2QTAwQUY0MTg5
MDAwNDU0Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjI4NjE2
QTIwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCUIyODYxNkE0MEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQjI4NjE2QTYwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNz
UmVzb3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjI4NjE2QTgwQUY0MTg5MDAwNDU0
Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyODYx
NkFBMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCMjg2MTZBQzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xMDY0OSw3ICsxMDY1Niw2IEBACiAJCQkJQTg4QUQzQTkwOTUyNDg2
RDAwMUREMTk2IC8qIFdLU3BvdExpZ2h0RmlsdGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBODhB
RDNBQjA5NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4OEFEM0FEMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUE4OEFEM0FGMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFz
UmVzb3VyY2VzUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQjEwOTUyNDg2RTAw
MUREMTk2IC8qIEtSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
ODhBRDNCMjA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRR
dWFydHoubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNCNDA5NTI0ODZFMDAxREQxOTYgLyog
S1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDc2Niw3
ICsxMDc3Miw2IEBACiAJCQkJQTg4QUQ1MEIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1pvb21BbmRQ
YW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ1QUEwOTUyNTEzMTAwMUREMTk2IC8qIFNW
R0NTU1N0eWxlU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MkU3QUIwOTZBQTEx
QjAwMDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlBODE2NTVENTA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUE4MTY1NUU0MDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlDQjA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TElzSW5kZXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUNEMDk3Mzc0RjYw
MEQ3NDQ2MyAvKiBIVE1MSW5wdXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5NTcs
NyArMTA5NjIsNiBAQAogCQkJCUE4MjM5RTAwMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUIzNzczMDlCN0JBMzkwMENCMzhCMSAvKiBGb250TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODIzQTc1QzA5QjZF
NTM5MDBCNjA2NDEgLyogR3JhcGhpY3NDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFC
MjNBMzEyMDlCQkE3NzYwMDY3Q0M1MyAvKiBIVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFCMjNBMzI3MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzUyMDcxRDA5QkQzQkJCMDBG
MjAzOEQgLyogVGV4dEJvdW5kYXJpZXMubW0gaW4gU291cmNlcyAqLywKQEAgLTExMDI0LDcgKzEx
MDI4LDYgQEAKIAkJCQkxNENGN0IzMzA5RjZFQ0Q3MDBFQjM2NjUgLyogSlNDU1NSdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzOEU2NUY3MDlGMDk4NUQwMDhBNDhFQyAvKiBKU0hUTUxFbGVt
ZW50V3JhcHBlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM4RTY2NjAwOUYwOUI4
MTAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTM4RTY4NTQwOUYwQkUwNDAwOEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODExNjg5NUYwOUYyQTRBMDAwNzcyQ0EwIC8qIFNWR1RSZWZFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MTE1QjcyMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFODM3ODQwOUY4NUQxQzAwQjg1QUU0IC8qIEpT
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTUxOSwxMCArMTE1MjIsNiBAQAogCQkJCTg1
M0JGNERDMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODVCQ0JDMTQwQUJCQTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUFBMjFFQ0NBMEFCRjBGQkEwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4NDE1RjlCMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2Fu
dmFzQ2xpcHBlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODQxNUY5RDBBQzEwQzVEMDBGN0Qw
REYgLyogS0NhbnZhc1Jlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4NDE1RjlGMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4
NDE1RkExMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NDE1RkEyMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTQxNjM2QTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHVHJhbnNm
b3JtTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1NDE2MzZDMEFDNzE4MEIwMDAxRTAxQiAv
KiBET01TVkdUcmFuc2Zvcm0ubW0gaW4gU291cmNlcyAqLywKQEAgLTExNjg4LDYgKzExNjg3LDE1
IEBACiAJCQkJODUzQ0E5RjAwQUVFQzY1NzAwMjM3MkRDIC8qIFJlbmRlclBhdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjU0RjY4ODgwQUYxQjdDNTAwNjVCREQ2IC8qIENhY2hlZFJlc291cmNl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwN0YxRDcwQUYyRDU5MDAwREJBMzFBIC8qIEhp
dFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjI4NjE2OUYwQUY0MTg5MDAwNDU0
Mzc2IC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjg2MTZBMTBB
RjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjg2MTZBMzBBRjQxODkwMDA0NTQzNzYgLyogR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQjI4NjE2QTcwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNz
UmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjI4NjE2QTkwQUY0MTg5MDAw
NDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjI4NjE2QUIwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQjI4NjE2QjAwQUY0MTg5MDAwNDU0Mzc2IC8qIEdyYXBoaWNzUmVzb3VyY2VDbGlw
cGVyUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjI4NjE2QjEwQUY0MTg5MDAwNDU0Mzc2
IC8qIEdyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0ei5tbSBpbiBTb3VyY2VzICovLAorCQkJCUIy
ODYxNkIyMEFGNDE4OTAwMDQ1NDM3NiAvKiBHcmFwaGljc1Jlc291cmNlTWFza2VyUXVhcnR6Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzQ2xpcHBlci5jcHAJKHJldmlz
aW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNDbGlwcGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NV
UFBPUlQKLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgotCi0jaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgotI2luY2x1ZGUgIktDYW52YXNUcmVlRGVidWcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBXaW5kUnVsZSBydWxl
KQotewotICAgIHN3aXRjaCAocnVsZSkgewotICAgICAgICBjYXNlIFJVTEVfTk9OWkVSTzoKLSAg
ICAgICAgICAgIHRzIDw8ICJOT04tWkVSTyI7IGJyZWFrOwotICAgICAgICBjYXNlIFJVTEVfRVZF
Tk9ERDoKLSAgICAgICAgICAgIHRzIDw8ICJFVkVOLU9ERCI7IGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEtDQ2xpcERhdGEgJmQpCi17Ci0gICAgdHMgPDwgIlt3aW5kaW5nPSIgPDwgZC53aW5kUnVs
ZSgpIDw8ICJdIjsKLSAgICBpZiAoZC5iYm94VW5pdHMpCi0gICAgICAgIHRzIDw8ICIgW2JvdW5k
aW5nIGJveCBtb2RlPSIgPDwgZC5iYm94VW5pdHMgIDw8ICJdIjsgICAgCi0gICAgdHMgPDwgIiBb
cGF0aD0iIDw8IGQucGF0aC5kZWJ1Z1N0cmluZygpIDw8ICJdIjsKLSAgICByZXR1cm4gdHM7Ci19
Ci0KLUtDYW52YXNDbGlwcGVyOjpLQ2FudmFzQ2xpcHBlcigpIDogS0NhbnZhc1Jlc291cmNlKCkK
LXsKLX0KLQotS0NhbnZhc0NsaXBwZXI6On5LQ2FudmFzQ2xpcHBlcigpCi17Ci19Ci0KLXZvaWQg
S0NhbnZhc0NsaXBwZXI6OnJlc2V0Q2xpcERhdGEoKQotewotICAgIG1fY2xpcERhdGEuY2xlYXIo
KTsKLX0KLQotdm9pZCBLQ2FudmFzQ2xpcHBlcjo6YWRkQ2xpcERhdGEoY29uc3QgUGF0aCYgcGF0
aCwgV2luZFJ1bGUgcnVsZSwgYm9vbCBiYm94VW5pdHMpCi17Ci0gICAgbV9jbGlwRGF0YS5hZGRQ
YXRoKHBhdGgsIHJ1bGUsIGJib3hVbml0cyk7Ci19Ci0KLUtDQ2xpcERhdGFMaXN0IEtDYW52YXND
bGlwcGVyOjpjbGlwRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpcERhdGE7Ci19Ci0K
LVRleHRTdHJlYW0mIEtDYW52YXNDbGlwcGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1DTElQUEVSXSI7Ci0gICAgdHMg
PDwgIiBbY2xpcCBkYXRhPSIgPDwgY2xpcERhdGEoKSA8PCAiXSI7Ci0gICAgcmV0dXJuIHRzOwot
fQotCi1LQ2FudmFzQ2xpcHBlciAqZ2V0Q2xpcHBlckJ5SWQoRG9jdW1lbnQgKmRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcgJmlkKQotewotICAgIEtDYW52YXNSZXNvdXJjZSAqcmVzb3VyY2Ug
PSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlkKTsKLSAgICBpZiAocmVzb3VyY2UgJiYgcmVz
b3VyY2UtPmlzQ2xpcHBlcigpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc0Ns
aXBwZXIqPihyZXNvdXJjZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6
bm9ldAotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2Fu
dmFzQ2xpcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzQ2xpcHBl
ci5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzQ2xpcHBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc0NsaXBwZXJfaAot
I2RlZmluZSBLQ2FudmFzQ2xpcHBlcl9oCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLQotI2luY2x1ZGUg
IktDYW52YXNSZXNvdXJjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgRGVw
cmVjYXRlZFZhbHVlTGlzdDxjb25zdCBSZW5kZXJQYXRoKj4gUmVuZGVyUGF0aExpc3Q7Ci0KLWNs
YXNzIFRleHRTdHJlYW07Ci0KLXN0cnVjdCBLQ0NsaXBEYXRhCi17Ci0gICAgV2luZFJ1bGUgd2lu
ZFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9Ci0gICAgV2luZFJ1bGUgbV93aW5k
UnVsZTsKLSAgICBib29sIGJib3hVbml0cyA6IDE7Ci0gICAgUGF0aCBwYXRoOwotfTsKLQotY2xh
c3MgS0NDbGlwRGF0YUxpc3QgOiBwdWJsaWMgRGVwcmVjYXRlZFZhbHVlTGlzdDxLQ0NsaXBEYXRh
PgotewotcHVibGljOgotICAgIEtDQ2xpcERhdGFMaXN0KCkgeyB9Ci0KLSAgICBpbmxpbmUgdm9p
ZCBhZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGhEYXRhLCBXaW5kUnVsZSB3aW5kUnVsZSwgYm9vbCBi
Ym94VW5pdHMpCi0gICAgewotICAgICAgICBLQ0NsaXBEYXRhIGNsaXBEYXRhOwotICAgICAgICBj
bGlwRGF0YS5iYm94VW5pdHMgPSBiYm94VW5pdHM7Ci0gICAgICAgIGNsaXBEYXRhLm1fd2luZFJ1
bGUgPSB3aW5kUnVsZTsKLSAgICAgICAgY2xpcERhdGEucGF0aCA9IHBhdGhEYXRhOwotICAgICAg
ICBhcHBlbmQoY2xpcERhdGEpOwotICAgIH0KLX07Ci0KLWNsYXNzIEtDYW52YXNDbGlwcGVyIDog
cHVibGljIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNDbGlwcGVyKCk7
Ci0gICAgdmlydHVhbCB+S0NhbnZhc0NsaXBwZXIoKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNDbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdm9pZCByZXNldENsaXBE
YXRhKCk7Ci0gICAgdm9pZCBhZGRDbGlwRGF0YShjb25zdCBQYXRoJiwgV2luZFJ1bGUsIGJvb2wg
YmJveFVuaXRzKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDbGlwKGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0ID0gMDsKLQotICAgIEtDQ2xpcERhdGFMaXN0IGNsaXBE
YXRhKCkgY29uc3Q7Ci0KLSAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mKSBjb25zdDsgCi1wcm90ZWN0ZWQ6Ci0gICAgS0NDbGlwRGF0YUxpc3QgbV9jbGlw
RGF0YTsKLX07Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdpbmRSdWxl
KTsKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEtDQ2xpcERhdGEm
KTsKLQotS0NhbnZhc0NsaXBwZXIqIGdldENsaXBwZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRv
bWljU3RyaW5nJik7Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKLQotLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rY2FudmFzL0tDYW52YXNDcmVhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0NyZWF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAJKHJldmlzaW9uIDE3NDI1KQor
KysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsOSArOTAsOSBAQCBUZXh0U3RyZWFtJiBLQ2FudmFzRmlsdGVyOjpleHRlcm5hbFJlcHJlCiAg
ICAgcmV0dXJuIHRzOwogfQogCi1LQ2FudmFzRmlsdGVyICpnZXRGaWx0ZXJCeUlkKERvY3VtZW50
ICpkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZpZCkKK0tDYW52YXNGaWx0ZXIqIGdldEZp
bHRlckJ5SWQoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcgJmlkKQogewot
ICAgIEtDYW52YXNSZXNvdXJjZSAqcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQs
IGlkKTsKKyAgICBHcmFwaGljc1Jlc291cmNlKiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChk
b2N1bWVudCwgaWQpOwogICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNGaWx0ZXIoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtDYW52YXNGaWx0ZXIqPihyZXNvdXJjZSk7CiAg
ICAgcmV0dXJuIDA7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkocmV2aXNpb24gMTc0
MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsMTEgQEAKICNkZWZpbmUgS0NhbnZhc0ZpbHRlcnNfSAogI2lmZGVmIFNWR19T
VVBQT1JUCiAKLSNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRJ
bWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNl
LmgiCiAKICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIENJRmlsdGVyOwpAQCAtMzUsNyArMzksOSBA
QCBjbGFzcyBDSUZpbHRlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0o
TUFDKQogY2xhc3MgS0NhbnZhc0ZpbHRlclF1YXJ0ejsKKyNlbmRpZgogCiAvLyBFbnVtZXJhdGlv
bnMKIHR5cGVkZWYgZW51bSB7CkBAIC05Niw3ICsxMDIsNyBAQCBwcml2YXRlOgogY2xhc3MgS0Nh
bnZhc0ZpbHRlckVmZmVjdDsKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2U7CiAKLWNsYXNzIEtDYW52
YXNGaWx0ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlIHsKK2NsYXNzIEtDYW52YXNGaWx0ZXIg
OiBwdWJsaWMgR3JhcGhpY3NSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgS0NhbnZhc0ZpbHRlcigp
IHsgfQogICAgIHZpcnR1YWwgfktDYW52YXNGaWx0ZXIoKSB7IH0KQEAgLTE0OCw3ICsxNTQsNyBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlc3VsdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzdWx0
KGNvbnN0IFN0cmluZyYpOwogCi0jaWYgX19BUFBMRV9fCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZpcnR1YWwgQ0lGaWx0ZXIqIGdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHoqKSBjb25z
dCA9IDA7CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9rY2FudmFzL0tDYW52YXNJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzSW1hZ2UuaAkocmV2aXNpb24gMTc0
MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNDkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2Vp
ZGVsIDxlcmljLnNlaWRlbEBrZGVtYWlsLm5ldD4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCi0qLwotCi0jaWZuZGVmIEtDYW52YXNJbWFnZV9ICi0jZGVmaW5lIEtDYW52YXNJ
bWFnZV9ICi0jaWZkZWYgU1ZHX1NVUFBPUlQKLQotI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbWFnZTsKLQotY2xhc3MgS0NhbnZhc0lt
YWdlIDogcHVibGljIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNJbWFn
ZSgpIHsgfTsKLSAgICB2aXJ0dWFsIH5LQ2FudmFzSW1hZ2UoKSB7IH07Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgaW5pdChjb25zdCBJbWFnZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdChJbnRT
aXplKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpID0gMDsKLX07Ci0KLX0KLQot
I2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKLQpJbmRleDogV2ViQ29yZS9rY2FudmFzL0tD
YW52YXNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWFy
a2VyLmNwcAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hcmtl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUzICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIKLQotI2luY2x1
ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgot
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBLQ2Fu
dmFzTWFya2VyCi1LQ2FudmFzTWFya2VyOjpLQ2FudmFzTWFya2VyKFJlbmRlclNWR0NvbnRhaW5l
ciogbWFya2VyKQotICAgIDogS0NhbnZhc1Jlc291cmNlKCkKLSAgICAsIG1fcmVmWCgwKQotICAg
ICwgbV9yZWZZKDApCi0gICAgLCBtX21hcmtlcihtYXJrZXIpCi0gICAgLCBtX3VzZVN0cm9rZVdp
ZHRoKHRydWUpCi17Ci0gICAgc2V0QXV0b0FuZ2xlKCk7Ci19Ci0KLUtDYW52YXNNYXJrZXI6On5L
Q2FudmFzTWFya2VyKCkKLXsKLX0KLQotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRNYXJrZXIoUmVu
ZGVyU1ZHQ29udGFpbmVyKiBtYXJrZXIpCi17Ci0gICAgbV9tYXJrZXIgPSBtYXJrZXI7Ci19Ci0K
LXZvaWQgS0NhbnZhc01hcmtlcjo6c2V0UmVmKGRvdWJsZSByZWZYLCBkb3VibGUgcmVmWSkKLXsK
LSAgICBtX3JlZlggPSByZWZYOwotICAgIG1fcmVmWSA9IHJlZlk7Ci19Ci0KLWRvdWJsZSBLQ2Fu
dmFzTWFya2VyOjpyZWZYKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWZYOwotfQotCi1kb3Vi
bGUgS0NhbnZhc01hcmtlcjo6cmVmWSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVmWTsKLX0K
LQotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRBbmdsZShmbG9hdCBhbmdsZSkKLXsKLSAgICBtX2Fu
Z2xlID0gYW5nbGU7Ci19Ci0KLWZsb2F0IEtDYW52YXNNYXJrZXI6OmFuZ2xlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9hbmdsZTsKLX0KLQotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRBdXRvQW5n
bGUoKQotewotICAgIG1fYW5nbGUgPSAtMTsKLX0KLQotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRV
c2VTdHJva2VXaWR0aChib29sIHVzZVN0cm9rZVdpZHRoKQotewotICAgIG1fdXNlU3Ryb2tlV2lk
dGggPSB1c2VTdHJva2VXaWR0aDsKLX0KLQotYm9vbCBLQ2FudmFzTWFya2VyOjp1c2VTdHJva2VX
aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXNlU3Ryb2tlV2lkdGg7Ci19Ci0KLXZvaWQg
S0NhbnZhc01hcmtlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgc3Ryb2tlV2lkdGgsIGRvdWJs
ZSBhbmdsZSkKLXsKLSAgICBpZiAoIW1fbWFya2VyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHgs
IHkpOwotICAgIHRyYW5zZm9ybS5yb3RhdGUobV9hbmdsZSA+IC0xID8gbV9hbmdsZSA6IGFuZ2xl
KTsKLSAgICAKLSAgICAvLyByZWZYIGFuZCByZWZZIGFyZSBnaXZlbiBpbiBjb29yZGluYXRlcyBy
ZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQgZXN0YWJsaXNoZWQgYnkgdGhlIG1hcmtlciwgeWV0IHRo
ZXkgYWZmZWN0Ci0gICAgLy8gdGhlIHRyYW5zbGF0aW9uIHBlcmZvcm1lZCBvbiB0aGUgdmlld3Bv
cnQgaXRzZWxmLgotICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybTsKLSAgICBp
ZiAobV91c2VTdHJva2VXaWR0aCkKLSAgICAgICAgdmlld3BvcnRUcmFuc2Zvcm0uc2NhbGUoc3Ry
b2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKLSAgICBpZiAoIW1fbWFya2VyLT52aWV3Qm94KCkuaXNF
bXB0eSgpKQotICAgICAgICB2aWV3cG9ydFRyYW5zZm9ybSAqPSBtX21hcmtlci0+dmlld3BvcnRU
cmFuc2Zvcm0oKTsKLSAgICBkb3VibGUgcmVmWCwgcmVmWTsKLSAgICB2aWV3cG9ydFRyYW5zZm9y
bS5tYXAobV9yZWZYLCBtX3JlZlksICZyZWZYLCAmcmVmWSk7Ci0gICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgtcmVmWCwgLXJlZlkpOwotICAgIAotICAgIGlmIChtX3VzZVN0cm9rZVdpZHRoKQotICAg
ICAgICB0cmFuc2Zvcm0uc2NhbGUoc3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKLSAgICAKLSAg
ICAvLyBGSVhNRTogUGFpbnRJbmZvIHNob3VsZCBiZSBwYXNzZWQgaW50byB0aGlzIG1ldGhvZCBp
bnN0ZWFkIG9mIGJlaW5nIGNyZWF0ZWQgaGVyZQotICAgIC8vIEZJWE1FOiBib3VuZGluZyBib3gg
ZnJhY3Rpb25zIGFyZSBsb3N0Ci0gICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbyhjb250
ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpLCBQYWludFBoYXNlRm9yZWdyb3VuZCwgMCwgMCwg
MCk7Ci0gICAgCi0gICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRleHQtPmNvbmNhdENUTSh0
cmFuc2Zvcm0pOwotICAgIG1fbWFya2VyLT5zZXREcmF3c0NvbnRlbnRzKHRydWUpOwotICAgIG1f
bWFya2VyLT5wYWludChpbmZvLCAwLCAwKTsKLSAgICBtX21hcmtlci0+c2V0RHJhd3NDb250ZW50
cyhmYWxzZSk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwotfQotCi1UZXh0U3RyZWFtJiBLQ2Fu
dmFzTWFya2VyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAot
ewotICAgIHRzIDw8ICJbdHlwZT1NQVJLRVJdIgotICAgICAgIDw8ICIgW2FuZ2xlPSI7Ci0gICAg
aWYgKGFuZ2xlKCkgPT0gLTEpIAotICAgICAgICB0cyA8PCAiYXV0byIgPDwgIl0iOwotICAgIGVs
c2UgCi0gICAgICAgIHRzIDw8IGFuZ2xlKCkgPDwgIl0iOyAgICAgICAgCi0gICAgdHMgPDwgIiBb
cmVmIHg9IiA8PCByZWZYKCkgPDwgIiB5PSIgPDwgcmVmWSgpIDw8ICJdIjsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KLUtDYW52YXNNYXJrZXIgKmdldE1hcmtlckJ5SWQoRG9jdW1lbnQgKmRvY3VtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcgJmlkKQotewotICAgIEtDYW52YXNSZXNvdXJjZSAqcmVzb3Vy
Y2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlkKTsKLSAgICBpZiAocmVzb3VyY2UgJiYg
cmVzb3VyY2UtPmlzTWFya2VyKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxLQ2FudmFz
TWFya2VyKj4ocmVzb3VyY2UpOwotICAgIHJldHVybiAwOwotfQotCi19Ci0KLS8vIHZpbTp0cz00
Om5vZXQKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0Nh
bnZhc01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWFya2Vy
LmgJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXJrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLQotICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaWZuZGVmIEtDYW52YXNNYXJrZXJfSAotI2Rl
ZmluZSBLQ2FudmFzTWFya2VyX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiS0Nh
bnZhc1Jlc291cmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgS0NhbnZhc01h
cmtlciA6IHB1YmxpYyBLQ2FudmFzUmVzb3VyY2UKLXsKLXB1YmxpYzoKLSAgICBLQ2FudmFzTWFy
a2VyKFJlbmRlclNWR0NvbnRhaW5lciogPSAwKTsKLSAgICB2aXJ0dWFsIH5LQ2FudmFzTWFya2Vy
KCk7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzTWFya2VyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgdm9pZCBzZXRNYXJrZXIoUmVuZGVyU1ZHQ29udGFpbmVyKik7Ci0gICAgCi0g
ICAgdm9pZCBzZXRSZWYoZG91YmxlIHJlZlgsIGRvdWJsZSByZWZZKTsKLSAgICBkb3VibGUgcmVm
WCgpIGNvbnN0OyAgICAKLSAgICBkb3VibGUgcmVmWSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQg
c2V0QW5nbGUoZmxvYXQgYW5nbGUpOwotICAgIHZvaWQgc2V0QXV0b0FuZ2xlKCk7Ci0gICAgZmxv
YXQgYW5nbGUoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0VXNlU3Ryb2tlV2lkdGgoYm9vbCB1c2VT
dHJva2VXaWR0aCA9IHRydWUpOwotICAgIGJvb2wgdXNlU3Ryb2tlV2lkdGgoKSBjb25zdDsKLQot
ICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUg
eCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCA9IDEsIGRvdWJsZSBhbmdsZSA9IDApOwot
Ci0gICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29u
c3Q7IAotCi1wcml2YXRlOgotICAgIGRvdWJsZSBtX3JlZlgsIG1fcmVmWTsKLSAgICBmbG9hdCBt
X2FuZ2xlOwotICAgIFJlbmRlclNWR0NvbnRhaW5lciogbV9tYXJrZXI7Ci0gICAgYm9vbCBtX3Vz
ZVN0cm9rZVdpZHRoOwotfTsKLQotS0NhbnZhc01hcmtlciogZ2V0TWFya2VyQnlJZChEb2N1bWVu
dCosIGNvbnN0IEF0b21pY1N0cmluZyYpOwotCi19Ci0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAot
I2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFz
TWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hc2tlci5j
cHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRl
ZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52YXNNYXNrZXIuaCIKLQotI2luY2x1ZGUgIktD
YW52YXNJbWFnZS5oIgotI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1LQ2FudmFzTWFza2VyOjpLQ2FudmFzTWFza2VyKCkKLSAgICA6IEtDYW52YXNSZXNv
dXJjZSgpCi0gICAgLCBtX21hc2soMCkKLXsKLX0KLQotS0NhbnZhc01hc2tlcjo6fktDYW52YXNN
YXNrZXIoKQotewotICAgIGRlbGV0ZSBtX21hc2s7Ci19Ci0KLXZvaWQgS0NhbnZhc01hc2tlcjo6
c2V0TWFzayhLQ2FudmFzSW1hZ2UqIG1hc2spCi17Ci0gICAgaWYgKG1fbWFzayAhPSBtYXNrKSB7
Ci0gICAgICAgIGRlbGV0ZSBtX21hc2s7Ci0gICAgICAgIG1fbWFzayA9IG1hc2s7Ci0gICAgfQot
fQotCi1UZXh0U3RyZWFtJiBLQ2FudmFzTWFza2VyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1NQVNLRVJdIjsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KLUtDYW52YXNNYXNrZXIqIGdldE1hc2tlckJ5SWQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQotewotICAgIEtDYW52YXNSZXNvdXJjZSog
cmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlkKTsKLSAgICBpZiAocmVzb3Vy
Y2UgJiYgcmVzb3VyY2UtPmlzTWFza2VyKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxL
Q2FudmFzTWFza2VyKj4ocmVzb3VyY2UpOwotICAgIHJldHVybiAwOwotfQotCi19Ci0KLS8vIHZp
bTp0cz00Om5vZXQKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tjYW52
YXMvS0NhbnZhc01hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFz
TWFza2VyLmgJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLQotICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
Ci0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaWZuZGVmIEtDYW52YXNNYXNrZXJf
SAotI2RlZmluZSBLQ2FudmFzTWFza2VyX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVk
ZSAiS0NhbnZhc1Jlc291cmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4
dFN0cmVhbTsKLWNsYXNzIEtDYW52YXNJbWFnZTsKLQotY2xhc3MgS0NhbnZhc01hc2tlciA6IHB1
YmxpYyBLQ2FudmFzUmVzb3VyY2UKLXsKLXB1YmxpYzoKLSAgICBLQ2FudmFzTWFza2VyKCk7Ci0g
ICAgdmlydHVhbCB+S0NhbnZhc01hc2tlcigpOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc01h
c2tlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldE1hc2soS0NhbnZhc0lt
YWdlKik7Ci0gICAgS0NhbnZhc0ltYWdlKiBtYXNrKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrOyB9
Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5TWFzayhjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94KSBjb25zdCA9IDA7Ci0KLSAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mKSBjb25zdDsgCi1wcm90ZWN0ZWQ6Ci0gICAgS0NhbnZhc0ltYWdlKiBt
X21hc2s7Ci19OwotCi1LQ2FudmFzTWFza2VyKiBnZXRNYXNrZXJCeUlkKERvY3VtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYK
LQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJjZS5jcHAJ
KHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRl
ZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZS5oIgotCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaCIKLSNpbmNsdWRl
ICJTVkdTdHlsZWRFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgS0NhbnZhc1Jlc291cmNlJiByKSAK
LXsgCi0gICAgcmV0dXJuIHIuZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7IAotfQotCi1LQ2Fu
dmFzUmVzb3VyY2U6OktDYW52YXNSZXNvdXJjZSgpCi17Ci19Ci0KLUtDYW52YXNSZXNvdXJjZTo6
fktDYW52YXNSZXNvdXJjZSgpCi17Ci19Ci0KLXZvaWQgS0NhbnZhc1Jlc291cmNlOjphZGRDbGll
bnQoY29uc3QgUmVuZGVyUGF0aCAqaXRlbSkKLXsKLSAgICBpZihtX2NsaWVudHMuZmluZChpdGVt
KSAhPSBtX2NsaWVudHMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50cy5h
cHBlbmQoaXRlbSk7Ci19Ci0KLWNvbnN0IFJlbmRlclBhdGhMaXN0ICZLQ2FudmFzUmVzb3VyY2U6
OmNsaWVudHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudHM7Ci19Ci0KLXZvaWQgS0Nh
bnZhc1Jlc291cmNlOjppbnZhbGlkYXRlKCkKLXsKLSAgICBSZW5kZXJQYXRoTGlzdDo6Q29uc3RJ
dGVyYXRvciBpdCA9IG1fY2xpZW50cy5iZWdpbigpOwotICAgIFJlbmRlclBhdGhMaXN0OjpDb25z
dEl0ZXJhdG9yIGVuZCA9IG1fY2xpZW50cy5lbmQoKTsKLQotICAgIGZvcig7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJQYXRoKj4oKml0KS0+cmVwYWludCgpOwot
fQotCi1TdHJpbmcgS0NhbnZhc1Jlc291cmNlOjppZEluUmVnaXN0cnkoKSBjb25zdAotewotICAg
IHJldHVybiBtX3JlZ2lzdHJ5SWQ7Ci19Ci0KLXZvaWQgS0NhbnZhc1Jlc291cmNlOjpzZXRJZElu
UmVnaXN0cnkoY29uc3QgU3RyaW5nJiBuZXdJZCkKLXsKLSAgICBtX3JlZ2lzdHJ5SWQgPSBuZXdJ
ZDsKLX0gCi0KLVRleHRTdHJlYW0mIEtDYW52YXNSZXNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLUtDYW52
YXNSZXNvdXJjZSogZ2V0UmVzb3VyY2VCeUlkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCkKLXsKLSAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsK
LSAgICBTVkdFbGVtZW50ICpzdmdFbGVtZW50ID0gc3ZnX2R5bmFtaWNfY2FzdChlbGVtZW50KTsK
LSAgICBpZiAoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50LT5pc1N0eWxlZCgpKQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHN2Z0VsZW1lbnQpLT5jYW52YXNS
ZXNvdXJjZSgpOwotICAgIHJldHVybiAwOwotfQotCi1LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIGdl
dFBhaW50U2VydmVyQnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpCi17Ci0gICAgS0NhbnZhc1Jlc291cmNlKiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChk
b2N1bWVudCwgaWQpOwotICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNQYWludFNlcnZl
cigpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyKj4o
cmVzb3VyY2UpOwotICAgIHJldHVybiAwOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNl
bmRpZiAvLyBTVkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJjZS5oCShy
ZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw4NiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaWZuZGVmIEtDYW52YXNSZXNvdXJjZV9ICi0jZGVm
aW5lIEtDYW52YXNSZXNvdXJjZV9ICi0jaWZkZWYgU1ZHX1NVUFBPUlQKLQotI2luY2x1ZGUgIkRl
cHJlY2F0ZWRWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiUmVuZGVy
UGF0aC5oIgotI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdHlwZWRlZiBEZXByZWNhdGVkVmFsdWVMaXN0PGNvbnN0IFJlbmRlclBh
dGgqPiBSZW5kZXJQYXRoTGlzdDsKLQotY2xhc3MgVGV4dFN0cmVhbTsKLQotdHlwZWRlZiBlbnVt
Ci17Ci0gICAgLy8gUGFpbnRpbmcgbW9kZQotICAgIFJTX0NMSVBQRVIgPSAwLAotICAgIFJTX01B
UktFUiA9IDEsCi0gICAgUlNfSU1BR0UgPSAyLAotICAgIFJTX0ZJTFRFUiA9IDMsCi0gICAgUlNf
TUFTS0VSID0gNAotfSBLQ1Jlc291cmNlVHlwZTsKLQotY2xhc3MgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyOwotCi1jbGFzcyBLQ2FudmFzUmVzb3VyY2UKLXsKLXB1YmxpYzoKLSAgICBLQ2FudmFzUmVz
b3VyY2UoKTsKLSAgICB2aXJ0dWFsIH5LQ2FudmFzUmVzb3VyY2UoKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9pZCBhZGRDbGllbnQoY29uc3QgUmVuZGVyUGF0aCop
OwotCi0gICAgY29uc3QgUmVuZGVyUGF0aExpc3QgJmNsaWVudHMoKSBjb25zdDsKLSAgICAKLSAg
ICBTdHJpbmcgaWRJblJlZ2lzdHJ5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJZEluUmVnaXN0cnko
Y29uc3QgU3RyaW5nJik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzUGFpbnRTZXJ2ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2xpcHBlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTWFya2VyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIAotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJikgY29uc3Q7IAotcHJpdmF0ZToKLSAgICBSZW5kZXJQYXRoTGlzdCBt
X2NsaWVudHM7Ci0gICAgU3RyaW5nIG1fcmVnaXN0cnlJZDsKLX07Ci0KLUtDYW52YXNSZXNvdXJj
ZSogZ2V0UmVzb3VyY2VCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci1LUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXIqIGdldFBhaW50U2VydmVyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0
b21pY1N0cmluZyYpOwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBLQ2FudmFzUmVzb3VyY2UmKTsKLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRp
ZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291
cmNlTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291
cmNlTGlzdGVuZXIuaAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZh
c1Jlc291cmNlTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT
dWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaWZuZGVm
IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyX0gKLSNkZWZpbmUgS0NhbnZhc1Jlc291cmNlTGlzdGVu
ZXJfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLWNsYXNzIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVy
Ci17Ci1wdWJsaWM6Ci0gICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIoKSB7IH0KLSAgICB2aXJ0
dWFsIH5LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lcigpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJl
c291cmNlTm90aWZpY2F0aW9uKCkgY29uc3QgPSAwOwotfTsKLQotI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCi0jZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rY2FudmFzL0tD
YW52YXNUcmVlRGVidWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFz
VHJlZURlYnVnLmNwcAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZh
c1RyZWVEZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMSBAQAogI2lmZGVm
IFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiS0NhbnZhc1RyZWVEZWJ1Zy5oIgogCisjaW5jbHVkZSAi
R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgi
CiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVy
bi5oIgpAQCAtMzYyLDE0ICszNjIsMTUgQEAgdm9pZCB3cml0ZVJlbmRlclJlc291cmNlcyhUZXh0
U3RyZWFtJiB0cwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU1ZHU3R5bGVkRWxl
bWVudCAqc3R5bGVkID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHN2Z0VsZW1lbnQp
OwotICAgICAgICBLQ2FudmFzUmVzb3VyY2UgKnJlc291cmNlID0gc3R5bGVkLT5jYW52YXNSZXNv
dXJjZSgpOworICAgICAgICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZT4gcmVzb3VyY2Uoc3R5bGVk
LT5jYW52YXNSZXNvdXJjZSgpKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBlbGVtZW50SWQg
PSBzdmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpLmRlcHJlY2F0ZWRT
dHJpbmcoKTsKLSAgICAgICAgaWYgKHJlc291cmNlLT5pc1BhaW50U2VydmVyKCkpCi0gICAgICAg
ICAgICB0cyA8PCAiS1JlbmRlcmluZ1BhaW50U2VydmVyIHtpZD1cIiIgPDwgZWxlbWVudElkIDw8
ICJcIiAiIDw8ICpzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqPihyZXNvdXJjZSkg
PDwgIn0iIDw8IGVuZGw7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKHJlc291cmNlLT5pc1Bh
aW50U2VydmVyKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI+
IHBhaW50U2VydmVyID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PEtSZW5kZXJpbmdQYWludFNl
cnZlcj4ocmVzb3VyY2UpOworICAgICAgICAgICAgdHMgPDwgIktSZW5kZXJpbmdQYWludFNlcnZl
ciB7aWQ9XCIiIDw8IGVsZW1lbnRJZCA8PCAiXCIgIiA8PCAqcGFpbnRTZXJ2ZXIgPDwgIn0iIDw8
IGVuZGw7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdHMgPDwgIktDYW52YXNSZXNvdXJj
ZSB7aWQ9XCIiIDw8IGVsZW1lbnRJZCA8PCAiXCIgIiA8PCAqcmVzb3VyY2UgPDwgIn0iIDw8IGVu
ZGw7CiAgICAgfSB3aGlsZSAoKG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHBhcmVudCkp
KTsKIH0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oCShy
ZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0Rldmlj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2Ns
YXNzIFBhdGg7CisKIC8vIGFrYSB3aGVyZSB0byBkcmF3CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dAogewpAQCAtNDUsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGlj
c0NvbnRleHQqIGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpID0gMDsKIH07CiAKLWNsYXNzIEtDYW52
YXNJbWFnZTsKK2NsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTsKIGNsYXNzIEtDYW52YXNGaWx0
ZXJFZmZlY3Q7CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlCiB7CkBAIC02MywxMiArNjcsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHBvcENvbnRleHQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaENvbnRleHQoS1JlbmRlcmluZ0RldmljZUNvbnRleHQq
KTsKICAgICAKLSAgICB2aXJ0dWFsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0Rm9y
SW1hZ2UoS0NhbnZhc0ltYWdlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgS1JlbmRlcmluZ0Rl
dmljZUNvbnRleHQqIGNvbnRleHRGb3JJbWFnZShHcmFwaGljc1Jlc291cmNlSW1hZ2UqKSBjb25z
dCA9IDA7CiAKICAgICAvLyBDcmVhdGlvbiB0b29scwotICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291
cmNlKiBjcmVhdGVSZXNvdXJjZShjb25zdCBLQ1Jlc291cmNlVHlwZSYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZT4gY3JlYXRlUmVzb3VyY2UoY29u
c3QgR3JhcGhpY3NSZXNvdXJjZVR5cGUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBLQ2FudmFz
RmlsdGVyRWZmZWN0KiBjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgS0NGaWx0ZXJFZmZlY3RUeXBl
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgS1JlbmRlcmluZ1BhaW50U2VydmVyKiBjcmVhdGVQ
YWludFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyPiBjcmVhdGVQYWludFNlcnZlcihj
b25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0ID0gMDsKIAogcHJpdmF0ZToKICAgICBWZWN0
b3I8S1JlbmRlcmluZ0RldmljZUNvbnRleHQqPiBtX2NvbnRleHRTdGFjazsKSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaAkocmV2aXNpb24g
MTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTIgQEAKICNkZWZpbmUgS1JlbmRlcmluZ1Bh
aW50U2VydmVyX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiS0NhbnZhc1Jlc291
cmNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OworY2xhc3MgUmVuZGVyT2JqZWN0
OwogY2xhc3MgUmVuZGVyUGF0aDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVGV4dFN0cmVh
bTsKQEAgLTQ5LDExICs1MCwxMSBAQCBlbnVtIEtDUGFpbnRUYXJnZXRUeXBlIHsKICAgICBBUFBM
WV9UT19TVFJPS0UgPSAyCiB9OwogCi1jbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgOiBwdWJs
aWMgS0NhbnZhc1Jlc291cmNlCitjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgOiBwdWJsaWMg
R3JhcGhpY3NSZXNvdXJjZQogewogcHVibGljOgogICAgIEtSZW5kZXJpbmdQYWludFNlcnZlcigp
Ci0gICAgICAgIDogS0NhbnZhc1Jlc291cmNlKCkKKyAgICAgICAgOiBHcmFwaGljc1Jlc291cmNl
KCkKICAgICAgICAgLCBtX2FjdGl2ZUNsaWVudCgwKQogICAgICAgICAsIG1fcGFpbnRpbmdUZXh0
KGZhbHNlKQogICAgIHsgfQpAQCAtNjQsOSArNjUsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVu
ZGVyUGF0aCogYWN0aXZlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVDbGllbnQ7fQog
ICAgIHZvaWQgc2V0QWN0aXZlQ2xpZW50KGNvbnN0IFJlbmRlclBhdGgqIGNsaWVudCkgeyBtX2Fj
dGl2ZUNsaWVudCA9IGNsaWVudDsgfQogCi0gICAgU3RyaW5nIGlkSW5SZWdpc3RyeSgpIGNvbnN0
IHsgIHJldHVybiBtX3JlZ2lzdHJ5SWQ7IH0KLSAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25z
dCBTdHJpbmcmIG5ld0lkKSB7IG1fcmVnaXN0cnlJZCA9IG5ld0lkOyB9IAotICAgIAogICAgIHZp
cnR1YWwgS0NQYWludFNlcnZlclR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBB
Y3R1YWwgcmVuZGVyaW5nIGZ1bmN0aW9uCkBAIC04MywxNCArODEsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3Qg
UmVuZGVyUGF0aCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdCA9IDA7CiBwcml2YXRlOgogICAg
IGNvbnN0IFJlbmRlclBhdGgqIG1fYWN0aXZlQ2xpZW50OwotICAgIFN0cmluZyBtX3JlZ2lzdHJ5
SWQ7CiAgICAgYm9vbCBtX3BhaW50aW5nVGV4dDsKIH07CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlciYpOwogCi1LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIqIGdldFBhaW50U2VydmVyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21p
Y1N0cmluZyYpOwotCiB9CiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9r
Y2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVu
dC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMiArMjI2
LDEyIEBAIEtDUGFpbnRTZXJ2ZXJUeXBlIEtSZW5kZXJpbmdQYWludFNlcnZlclIKICAgICByZXR1
cm4gUFNfUkFESUFMX0dSQURJRU5UOwogfQogCi1LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciogS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6Omxpc3RlbmVyKCkgY29uc3QKK0dyYXBoaWNzUmVz
b3VyY2VMaXN0ZW5lciogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6Omxpc3RlbmVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9saXN0ZW5lcjsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIGxp
c3RlbmVyKQordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIo
R3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBtX2xpc3RlbmVyID0g
bGlzdGVuZXI7CiB9CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogI2RlZmluZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJH
cmFkaWVudF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
Myw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zv
cm0oKSBjb25zdDsKICAgICB2b2lkIHNldEdyYWRpZW50VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOwogICAgIAotICAgIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKiBsaXN0ZW5lcigp
IGNvbnN0OwotICAgIHZvaWQgc2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqKTsK
KyAgICBHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRMaXN0ZW5lcihHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIqKTsKIAogICAgIFRleHRTdHJl
YW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogcHJpdmF0ZToK
QEAgLTcyLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kIG1f
c3ByZWFkTWV0aG9kOwogICAgIGJvb2wgbV9ib3VuZGluZ0JveE1vZGU7CiAgICAgQWZmaW5lVHJh
bnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07Ci0gICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIq
IG1fbGlzdGVuZXI7CisgICAgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKiBtX2xpc3RlbmVyOwog
fTsKIAogY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQgOiBwdWJsaWMg
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAkocmV2aXNp
b24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52YXNJbWFnZS5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgogI2luY2x1ZGUgIktSZW5kZXJp
bmdQYWludFNlcnZlclBhdHRlcm4uaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgpA
QCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEtSZW5kZXJpbmdQYWludFNl
cnZlclBhdHRlcm46OktSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4oKQogICAgIDogS1JlbmRl
cmluZ1BhaW50U2VydmVyKCkKLSAgICAsIG1fdGlsZSgwKQogICAgICwgbV91c2VCb3VuZGluZ0Jv
eE1vZGUodHJ1ZSkKICAgICAsIG1fbGlzdGVuZXIoMCkKIHsKQEAgLTQxLDcgKzQwLDYgQEAgS1Jl
bmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6S1JlbmRlcmluZwogCiBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJQYXR0ZXJuOjp+S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybigpCiB7Ci0gICAgZGVs
ZXRlIG1fdGlsZTsKIH0KIAogdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRC
Ym94KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTY0LDEyICs2MiwxMiBAQCB2b2lkIEtSZW5k
ZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldEJvCiAgICAgbV91c2VCb3VuZGluZ0JveE1vZGUg
PSBtb2RlOwogfQogCi1LQ2FudmFzSW1hZ2UqIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46
OnRpbGUoKSBjb25zdAorR3JhcGhpY3NSZXNvdXJjZUltYWdlKiBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJQYXR0ZXJuOjp0aWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90aWxlOworICAgIHJldHVy
biBtX3RpbGUuZ2V0KCk7CiB9CiAKLXZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6
c2V0VGlsZShLQ2FudmFzSW1hZ2UqIHRpbGUpCit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclBh
dHRlcm46OnNldFRpbGUoY29uc3QgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNlSW1hZ2U+JiB0
aWxlKQogewogICAgIG1fdGlsZSA9IHRpbGU7CiB9CkBAIC04OSwxMiArODcsMTIgQEAgS0NQYWlu
dFNlcnZlclR5cGUgS1JlbmRlcmluZ1BhaW50U2VydmVyUAogICAgIHJldHVybiBQU19QQVRURVJO
OwogfQogCi1LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciogS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0
dGVybjo6bGlzdGVuZXIoKSBjb25zdAorR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKiBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpsaXN0ZW5lcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
bGlzdGVuZXI7CiB9CiAKLXZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0TGlz
dGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKQordm9pZCBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRMaXN0ZW5lcihHcmFwaGljc1Jlc291cmNlTGlzdGVuZXIq
IGxpc3RlbmVyKQogewogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVy
bi5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMTMgQEAK
ICNkZWZpbmUgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybl9ICiAjaWZkZWYgU1ZHX1NVUFBP
UlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEtDYW52YXNJbWFnZTsKK2NsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTsK
IAogY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybiA6IHB1YmxpYyBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIKIHsKQEAgLTQ4LDIyICs1MCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRC
b3VuZGluZ0JveE1vZGUoYm9vbCBtb2RlID0gdHJ1ZSk7CiAgICAgCiAgICAgLy8gJ1BhdHRlcm4n
IGludGVyZmFjZQotICAgIEtDYW52YXNJbWFnZSogdGlsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
VGlsZShLQ2FudmFzSW1hZ2UqKTsKKyAgICBHcmFwaGljc1Jlc291cmNlSW1hZ2UqIHRpbGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFRpbGUoY29uc3QgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNl
SW1hZ2U+Jik7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
IAotICAgIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0OwotICAgIHZv
aWQgc2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqKTsKKyAgICBHcmFwaGljc1Jl
c291cmNlTGlzdGVuZXIqIGxpc3RlbmVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMaXN0ZW5lcihH
cmFwaGljc1Jlc291cmNlTGlzdGVuZXIqKTsKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBLQ2FudmFzSW1h
Z2UqIG1fdGlsZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZUltYWdlPiBtX3RpbGU7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVyblRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgbV9i
Ym94OwogICAgIGJvb2wgbV91c2VCb3VuZGluZ0JveE1vZGU7Ci0gICAgS0NhbnZhc1Jlc291cmNl
TGlzdGVuZXIqIG1fbGlzdGVuZXI7CisgICAgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKiBtX2xp
c3RlbmVyOwogCiB9OwogCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUv
a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZF9I
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiS1Jl
bmRlcmluZ1BhaW50U2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0NsaXBwZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmNwcAkocmV2aXNpb24g
MTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVyUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAgICAgICAgICAgICAgICAgIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJLQ2FudmFzQ2xpcHBlclF0LmgiCi0jaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZVF0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBLQ2FudmFzQ2xpcHBlclF0OjphcHBs
eUNsaXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKLXsKLSAgICBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29u
dGV4dCgpOwotICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXQqIHF0Q29udGV4dCA9IHN0YXRp
Y19jYXN0PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXQqPihjb250ZXh0KTsKLSAgICBpZiAobV9j
bGlwRGF0YS5jb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC0+Y2xl
YXJQYXRoKCk7Ci0KLSAgICBRUGFpbnRlclBhdGggbmV3UGF0aDsKLQotICAgIGJvb2wgaGV0ZXJv
Z2Vub3VzQ2xpcFJ1bGVzID0gZmFsc2U7Ci0gICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBtX2NsaXBE
YXRhWzBdLndpbmRSdWxlKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCB4ID0gMDsgeCA8IG1f
Y2xpcERhdGEuY291bnQoKTsgeCsrKSB7Ci0gICAgICAgIEtDQ2xpcERhdGEgY2xpcERhdGEgPSBt
X2NsaXBEYXRhW3hdOwotICAgICAgICBpZiAoY2xpcERhdGEud2luZFJ1bGUoKSAhPSBjbGlwUnVs
ZSkKLSAgICAgICAgICAgIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IHRydWU7Ci0gICAgICAgCi0g
ICAgICAgIFFQYWludGVyUGF0aCBwYXRoID0gKihjbGlwRGF0YS5wYXRoLnBsYXRmb3JtUGF0aCgp
KTsKLSAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgaWYgKCFuZXdQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5ld1BhdGguY2xv
c2VTdWJwYXRoKCk7Ci0KLSAgICAgICAgLy8gUmVzcGVjdCBjbGlwcGluZyB1bml0cy4uLgotICAg
ICAgICBRTWF0cml4IHRyYW5zZm9ybTsKLQotICAgICAgICBpZiAoY2xpcERhdGEuYmJveFVuaXRz
KSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGJvdW5kaW5nQm94LngoKSwgYm91
bmRpbmdCb3gueSgpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybS5zY2FsZShib3VuZGluZ0JveC53
aWR0aCgpLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBU
T0RPOiBzdXBwb3J0IGhldGVyb2dlbm91cyBjbGlwIHJ1bGVzIQotICAgICAgICAvL2NsaXBSdWxl
ID0gKGNsaXBEYXRhLndpbmRSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gUXQ6Ok9kZEV2ZW5GaWxs
IDogUXQ6OldpbmRpbmdGaWxsKTsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhdGgu
ZWxlbWVudENvdW50KCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpF
bGVtZW50ICZjdXIgPSBwYXRoLmVsZW1lbnRBdChpKTsKLQotICAgICAgICAgICAgc3dpdGNoIChj
dXIudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpNb3ZlVG9FbGVt
ZW50OgotICAgICAgICAgICAgICAgICAgICBuZXdQYXRoLm1vdmVUbyhRUG9pbnRGKGN1ci54LCBj
dXIueSkgKiB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6TGluZVRvRWxlbWVudDoKLSAgICAgICAgICAgICAg
ICAgICAgbmV3UGF0aC5saW5lVG8oUVBvaW50RihjdXIueCwgY3VyLnkpICogdHJhbnNmb3JtKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRl
clBhdGg6OkN1cnZlVG9FbGVtZW50OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjMSA9IHBhdGguZWxlbWVudEF0KGkg
KyAxKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZj
MiA9IHBhdGguZWxlbWVudEF0KGkgKyAyKTsKLQotICAgICAgICAgICAgICAgICAgICBRX0FTU0VS
VChjMS50eXBlID09IFFQYWludGVyUGF0aDo6Q3VydmVUb0RhdGFFbGVtZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgUV9BU1NFUlQoYzIudHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRh
RWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbmV3UGF0aC5jdWJpY1RvKFFQb2ludEYo
Y3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFFQb2ludEYoYzEueCwgYzEueSkgKiB0cmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBRUG9pbnRGKGMyLngsIGMyLnkpICogdHJhbnNmb3JtKTsKLQot
ICAgICAgICAgICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6Q3Vy
dmVUb0RhdGFFbGVtZW50OgotICAgICAgICAgICAgICAgICAgICBRX0FTU0VSVChmYWxzZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKG1fY2xpcERhdGEuY291bnQoKSkgewotICAgICAgICAvLyBGSVhNRSEKLSAg
ICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFsbG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBy
dWxlcy4KLSAgICAgICAgLy8gd2Ugd291bGQgaGF2ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBh
IG1hc2ssIGFuZCB0aGVuIGNsaXAKLSAgICAgICAgLy8gdG8gdGhhdCBtYXNrCi0gICAgICAgIC8v
IGlmICghQ0dDb250ZXh0SXNQYXRoRW1wdHkoY2dDb250ZXh0KSkgewotICAgICAgICAgICAgaWYg
KGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAgICAgICAgICBuZXdQYXRoLnNldEZp
bGxSdWxlKFF0OjpPZGRFdmVuRmlsbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbmV3UGF0aC5zZXRGaWxsUnVsZShRdDo6V2luZGluZ0ZpbGwpOwotICAgICAgICAvLyB9Ci0g
ICAgfQotCi0gICAgcXRDb250ZXh0LT5wYWludGVyKCkuc2V0Q2xpcFBhdGgobmV3UGF0aCk7Ci19
Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dC9LQ2FudmFzQ2xpcHBlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmgJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2Fu
dmFzL2RldmljZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA1IEFw
cGxlIENvbXB1dGVyLCBJbmMuCi0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot
Ki8KLQotI2lmbmRlZiBLQ2FudmFzQ2xpcHBlclF0X2gKLSNkZWZpbmUgS0NhbnZhc0NsaXBwZXJR
dF9oCi0KLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEtDYW52YXNDbGlwcGVyUXQgOiBwdWJsaWMgS0NhbnZhc0NsaXBwZXIgewotcHVi
bGljOgotICAgIEtDYW52YXNDbGlwcGVyUXQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdmly
dHVhbCB2b2lkIGFwcGx5Q2xpcChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsK
LX07Ci0KLX0KLQotI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0RldmljZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdEZXZpY2VRdC5jcHAJKHJldmlzaW9uIDE3
NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aFF0
LmgiCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXJRdC5oIgotI2luY2x1ZGUgIktDYW52YXNN
YXJrZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlUXQu
aCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF0LmgiCiAjaW5jbHVkZSAi
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdC5oIgpAQCAtMTM1LDIzICsxMzUsMjMgQEAg
S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCogS1JlbmRlcmluZ0RldgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0Kj4oY3VycmVudENvbnRleHQoKSk7CiB9
CiAKLUtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBLUmVuZGVyaW5nRGV2aWNlUXQ6OmNvbnRleHRG
b3JJbWFnZShLQ2FudmFzSW1hZ2UqIGltYWdlKSBjb25zdAorS1JlbmRlcmluZ0RldmljZUNvbnRl
eHQqIEtSZW5kZXJpbmdEZXZpY2VRdDo6Y29udGV4dEZvckltYWdlKEdyYXBoaWNzUmVzb3VyY2VJ
bWFnZSogaW1hZ2UpIGNvbnN0CiB7CiAgICAgcURlYnVnKCJLUmVuZGVyaW5nRGV2aWNlUXQ6OmNv
bnRleHRGb3JJbWFnZSgpIFRPRE8hIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIC8vIFJlc291cmNl
IGNyZWF0aW9uCi1LQ2FudmFzUmVzb3VyY2UqIEtSZW5kZXJpbmdEZXZpY2VRdDo6Y3JlYXRlUmVz
b3VyY2UoY29uc3QgS0NSZXNvdXJjZVR5cGUmIHR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEdyYXBo
aWNzUmVzb3VyY2U+IEtSZW5kZXJpbmdEZXZpY2VRdDo6Y3JlYXRlUmVzb3VyY2UoY29uc3QgR3Jh
cGhpY3NSZXNvdXJjZVR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAg
IHsKICAgICAgICAgY2FzZSBSU19DTElQUEVSOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBLQ2Fu
dmFzQ2xpcHBlclF0KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VD
bGlwcGVyKCk7CiAgICAgICAgIGNhc2UgUlNfTUFSS0VSOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBLQ2FudmFzTWFya2VyKCk7IC8vIFVzZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLi4uCisgICAg
ICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIoKTsgLy8gVXNlIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24uLi4KICAgICAgICAgY2FzZSBSU19JTUFHRToKLSAgICAgICAgICAg
IC8vIHJldHVybiBuZXcgS0NhbnZhc0ltYWdlUXQoKTsKKyAgICAgICAgICAgIC8vIHJldHVybiBu
ZXcgR3JhcGhpY3NSZXNvdXJjZUltYWdlUXQoKTsKICAgICAgICAgY2FzZSBSU19GSUxURVI6CiAg
ICAgICAgICAgICAvLyByZXR1cm4gbmV3IEtDYW52YXNGaWx0ZXJRdCgpOwogICAgICAgICBjYXNl
IFJTX01BU0tFUjoKQEAgLTE2MSw3ICsxNjEsNyBAQCBLQ2FudmFzUmVzb3VyY2UqIEtSZW5kZXJp
bmdEZXZpY2VRdDo6Y3JlCiAgICAgfQogfQogCi1LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIEtSZW5k
ZXJpbmdEZXZpY2VRdDo6Y3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3QgS0NQYWludFNlcnZlclR5cGUm
IHR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlcj4gS1JlbmRlcmlu
Z0RldmljZVF0OjpjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYgdHlw
ZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpJbmRleDogV2ViQ29yZS9rY2Fu
dmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdEZXZpY2VRdC5oCShyZXZpc2lvbiAxNzQyNSkK
KysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0RldmljZVF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDExICs3NCwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBjb250ZXh0IG1h
bmFnZW1lbnQuCiAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCogcXRDb250ZXh0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dEZvckltYWdl
KEtDYW52YXNJbWFnZSopIGNvbnN0OworICAgIHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRl
eHQqIGNvbnRleHRGb3JJbWFnZShHcmFwaGljc1Jlc291cmNlSW1hZ2UqKSBjb25zdDsKIAogICAg
IC8vIFJlc291cmNlIGNyZWF0aW9uCi0gICAgdmlydHVhbCBLQ2FudmFzUmVzb3VyY2UqIGNyZWF0
ZVJlc291cmNlKGNvbnN0IEtDUmVzb3VyY2VUeXBlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXIqIGNyZWF0ZVBhaW50U2VydmVyKGNvbnN0IEtDUGFpbnRTZXJ2ZXJU
eXBlJikgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2U+IGNy
ZWF0ZVJlc291cmNlKGNvbnN0IEdyYXBoaWNzUmVzb3VyY2VUeXBlJikgY29uc3Q7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlcj4gY3JlYXRlUGFpbnRTZXJ2ZXIo
Y29uc3QgS0NQYWludFNlcnZlclR5cGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIEtDYW52YXNGaWx0
ZXJFZmZlY3QqIGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBLQ0ZpbHRlckVmZmVjdFR5cGUmKSBj
b25zdDsKIH07CiAKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2Rl
dmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF0LmNwcAkocmV2aXNpb24gMTc0
MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8
bWF0aC5oPgogI2luY2x1ZGUgPFFQb2ludEY+CiAKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlUXQuaCIKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5j
cHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
MTIgQEAKICNpbmNsdWRlIDxRUG9pbnRGPgogI2luY2x1ZGUgPFFQYWludGVyUGF0aD4KIAorI2lu
Y2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IktSZW5kZXJpbmdEZXZpY2VRdC5oIgogI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5o
IgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5oIgotI2luY2x1ZGUg
IktDYW52YXNJbWFnZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1Jl
bmRlcmluZ1BhaW50U2VydmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9k
ZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyUXQuY3BwCShyZXZpc2lvbiAxNzQyNSkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyUXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8UVBlbj4KICNpbmNsdWRl
IDxRVmVjdG9yPgogCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJLQ2FudmFz
UmVuZGVyaW5nU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdC5oIgog
CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclNv
bGlkUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRl
cmluZ1BhaW50U2VydmVyU29saWRRdC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9r
Y2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPFFCcnVzaD4KICNpbmNsdWRlIDxR
UGFpbnRlcj4KIAorI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2VRdC5oIgogI2luY2x1ZGUgIktDYW52YXNS
ZW5kZXJpbmdTdHlsZS5oIgpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9SZW5kZXJQ
YXRoUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzRmlsdGVyUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JKHJldmlzaW9uIDE3NDI1KQorKysgV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw3IEBAIE5TQXJyYXkgKktDYW52YXNGaWx0ZXJRdWFydHo6
OmdldENJRmlsdGUKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8S0NhbnZhc0ZpbHRl
ckVmZmVjdCo+IGVuZCA9IG1fZWZmZWN0cy5lbmQoKTsKIAogICAgIHNldEltYWdlRm9yTmFtZShp
bnB1dEltYWdlLCAiU291cmNlR3JhcGhpYyIpOyAvLyBpbnB1dAorCiAgICAgZm9yICg7aXQgIT0g
ZW5kOyBpdCsrKSB7CiAgICAgICAgIENJRmlsdGVyICpmaWx0ZXIgPSAoKml0KS0+Z2V0Q0lGaWx0
ZXIodGhpcyk7CiAgICAgICAgIGlmIChmaWx0ZXIpCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQkocmV2aXNpb24gMTc0MjUp
CisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KIAogI2ltcG9ydCAiS0NhbnZhc0ZpbHRlclF1YXJ0ei5oIgotI2ltcG9ydCAiS0NhbnZhc01h
c2tlclF1YXJ0ei5oIgogI2ltcG9ydCAiS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgiCi0jaW1wb3J0
ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVh
cnR6LmgiCiAjaW1wb3J0ICJRdWFydHpTdXBwb3J0LmgiCiAjaW1wb3J0ICJSZW5kZXJQYXRoLmgi
CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzTWFza2VyUXVhcnR6
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01h
c2tlclF1YXJ0ei5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogICAgICAgICAgICAgICAyMDA1LCAyMDA2IEFsZXhhbmRlciBL
ZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJLQ2FudmFzTWFza2Vy
LmgiCi0jaW5jbHVkZSAiS0NhbnZhc0ltYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgS0NhbnZhc01hc2tlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFzTWFza2VyIHsKLXB1Ymxp
YzoKLSAgICBLQ2FudmFzTWFza2VyUXVhcnR6KCkgeyB9Ci0gICAgCi0gICAgdmlydHVhbCB2b2lk
IGFwcGx5TWFzayhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKLX07Ci0KLX0K
SW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHou
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01h
c2tlclF1YXJ0ei5tbQkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzTWFza2VyUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFsZXhhbmRlciBLZWxsZXR0
IDxseXBhbm92QGtkZS5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVm
IFNWR19TVVBQT1JUCi0jaW1wb3J0ICJLQ2FudmFzTWFza2VyUXVhcnR6LmgiCi0KLSNpbXBvcnQg
IlNWR1JlbmRlclN0eWxlLmgiCi0KLSNpbXBvcnQgIktDYW52YXNSZXNvdXJjZXNRdWFydHouaCIK
LSNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKLSNpbXBvcnQgIlF1YXJ0elN1cHBv
cnQuaCIKLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgQ0lJbWFnZSAqYXBwbHlMdW1pbmFuY2VUb0FscGhhRmlsdGVyKENJ
SW1hZ2UgKmlucHV0SW1hZ2UpCi17Ci0gICAgQ0lGaWx0ZXIgKmx1bWluYW5jZVRvQWxwaGEgPSBb
Q0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yTWF0cml4Il07Ci0gICAgW2x1bWluYW5j
ZVRvQWxwaGEgc2V0RGVmYXVsdHNdOwotICAgIENHRmxvYXQgYWxwaGFbNF0gPSB7MC4yMTI1LCAw
LjcxNTQsIDAuMDcyMSwgMH07Ci0gICAgQ0dGbG9hdCB6ZXJvWzRdID0gezAsIDAsIDAsIDB9Owot
ICAgIFtsdW1pbmFuY2VUb0FscGhhIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJ
bWFnZSJdOyAgCi0gICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3Rv
cldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dFJWZWN0b3IiXTsKLSAgICBb
bHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJv
IGNvdW50OjRdIGZvcktleTpAImlucHV0R1ZlY3RvciJdOwotICAgIFtsdW1pbmFuY2VUb0FscGhh
IHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5
OkAiaW5wdXRCVmVjdG9yIl07Ci0gICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6W0NJVmVj
dG9yIHZlY3RvcldpdGhWYWx1ZXM6YWxwaGEgY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRBVmVjdG9y
Il07Ci0gICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhW
YWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEJpYXNWZWN0b3IiXTsKLSAgICByZXR1
cm4gW2x1bWluYW5jZVRvQWxwaGEgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOwotfQotCi1z
dGF0aWMgQ0lJbWFnZSAqYXBwbHlFeHBhbmRBbHBoYXRvR3JheXNjYWxlRmlsdGVyKENJSW1hZ2Ug
KmlucHV0SW1hZ2UpCi17Ci0gICAgQ0lGaWx0ZXIgKmFscGhhVG9HcmF5c2NhbGUgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yTWF0cml4Il07Ci0gICAgQ0dGbG9hdCB6ZXJvWzRd
ID0gezAsIDAsIDAsIDB9OwotICAgIFthbHBoYVRvR3JheXNjYWxlIHNldERlZmF1bHRzXTsKLSAg
ICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1h
Z2UiXTsKLSAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0
aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0UlZlY3RvciJdOwotICAgIFthbHBo
YVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291
bnQ6NF0gZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0
VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJp
bnB1dEJWZWN0b3IiXTsKLSAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTpbQ0lWZWN0b3Ig
dmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXSBmb3JLZXk6QCJpbnB1dEFWZWN0b3Ii
XTsKLSAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6
MS4wIFk6MS4wIFo6MS4wIFc6MC4wXSBmb3JLZXk6QCJpbnB1dEJpYXNWZWN0b3IiXTsKLSAgICBy
ZXR1cm4gW2FscGhhVG9HcmF5c2NhbGUgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOwotfQot
Ci1zdGF0aWMgQ0lJbWFnZSAqdHJhbnNmb3JtSW1hZ2VJbnRvR3JheXNjYWxlTWFzayhDSUltYWdl
ICppbnB1dEltYWdlKQotewotICAgIENJRmlsdGVyICpibGFja0JhY2tncm91bmQgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50Q29sb3JHZW5lcmF0b3IiXTsKLSAgICBbYmxh
Y2tCYWNrZ3JvdW5kIHNldFZhbHVlOltDSUNvbG9yIGNvbG9yV2l0aFJlZDowLjAgZ3JlZW46MC4w
IGJsdWU6MC4wIGFscGhhOjEuMF0gZm9yS2V5OkAiaW5wdXRDb2xvciJdOwotCi0gICAgQ0lGaWx0
ZXIgKmxheWVyT3ZlckJsYWNrID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lTb3VyY2VP
dmVyQ29tcG9zaXRpbmciXTsKLSAgICBbbGF5ZXJPdmVyQmxhY2sgc2V0VmFsdWU6W2JsYWNrQmFj
a2dyb3VuZCB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gZm9yS2V5OkAiaW5wdXRCYWNrZ3Jv
dW5kSW1hZ2UiXTsgIAotICAgIFtsYXllck92ZXJCbGFjayBzZXRWYWx1ZTppbnB1dEltYWdlIGZv
cktleTpAImlucHV0SW1hZ2UiXTsgIAotCi0gICAgQ0lJbWFnZSAqbHVtaW5hbmNlQWxwaGEgPSBh
cHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIoW2xheWVyT3ZlckJsYWNrIHZhbHVlRm9yS2V5OkAi
b3V0cHV0SW1hZ2UiXSk7Ci0gICAgQ0lJbWFnZSAqbHVtaW5hbmNlQXNHcmF5c2NhbGUgPSBhcHBs
eUV4cGFuZEFscGhhdG9HcmF5c2NhbGVGaWx0ZXIobHVtaW5hbmNlQWxwaGEpOwotICAgIENJSW1h
Z2UgKmFscGhhQXNHcmF5c2NhbGUgPSBhcHBseUV4cGFuZEFscGhhdG9HcmF5c2NhbGVGaWx0ZXIo
aW5wdXRJbWFnZSk7Ci0KLSAgICBDSUZpbHRlciAqbXVsdGlwbGllZEdyYXlzY2FsZSA9IFtDSUZp
bHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJTXVsdGlwbHlDb21wb3NpdGluZyJdOwotICAgIFttdWx0
aXBsaWVkR3JheXNjYWxlIHNldFZhbHVlOmx1bWluYW5jZUFzR3JheXNjYWxlIGZvcktleTpAImlu
cHV0QmFja2dyb3VuZEltYWdlIl07ICAKLSAgICBbbXVsdGlwbGllZEdyYXlzY2FsZSBzZXRWYWx1
ZTphbHBoYUFzR3JheXNjYWxlIGZvcktleTpAImlucHV0SW1hZ2UiXTsgIAotICAgIHJldHVybiBb
bXVsdGlwbGllZEdyYXlzY2FsZSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Ci19Ci0KLXZv
aWQgS0NhbnZhc01hc2tlclF1YXJ0ejo6YXBwbHlNYXNrKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21hc2spCi0gICAgICAgIHJldHVybjsKLSAgICAv
LyBDcmVhdGUgZ3JheXNjYWxlIGJpdG1hcCBjb250ZXh0Ci0gICAgaW50IHdpZHRoID0gbV9tYXNr
LT5zaXplKCkud2lkdGgoKTsKLSAgICBpbnQgaGVpZ2h0ID0gbV9tYXNrLT5zaXplKCkuaGVpZ2h0
KCk7Ci0gICAgdm9pZCAqaW1hZ2VCdWZmZXIgPSBmYXN0TWFsbG9jKHdpZHRoICogaGVpZ2h0KTsK
LSAgICBDR0NvbG9yU3BhY2VSZWYgZ3JheUNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VHcmF5KCk7Ci0gICAgQ0dDb250ZXh0UmVmIGdyYXlzY2FsZUNvbnRleHQgPSBDR0JpdG1h
cENvbnRleHRDcmVhdGUoaW1hZ2VCdWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoLCBncmF5
Q29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmUpOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2Uo
Z3JheUNvbG9yU3BhY2UpOwotICAgIENJQ29udGV4dCAqY2lHcmF5c2NhbGVDb250ZXh0ID0gW0NJ
Q29udGV4dCBjb250ZXh0V2l0aENHQ29udGV4dDpncmF5c2NhbGVDb250ZXh0IG9wdGlvbnM6bmls
XTsKLQotICAgIEtDYW52YXNJbWFnZVF1YXJ0eiogbWFza0ltYWdlID0gc3RhdGljX2Nhc3Q8S0Nh
bnZhc0ltYWdlUXVhcnR6Kj4obV9tYXNrKTsKLSAgICBDSUltYWdlICpncmF5c2NhbGVNYXNrID0g
dHJhbnNmb3JtSW1hZ2VJbnRvR3JheXNjYWxlTWFzayhbQ0lJbWFnZSBpbWFnZVdpdGhDR0xheWVy
Om1hc2tJbWFnZS0+Y2dMYXllcigpXSk7Ci0gICAgW2NpR3JheXNjYWxlQ29udGV4dCBkcmF3SW1h
Z2U6Z3JheXNjYWxlTWFzayBhdFBvaW50OkNHUG9pbnRaZXJvIGZyb21SZWN0OkNHUmVjdE1ha2Uo
MCwgMCwgd2lkdGgsIGhlaWdodCldOwotCi0gICAgQ0dJbWFnZVJlZiBncmF5c2NhbGVJbWFnZSA9
IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGdyYXlzY2FsZUNvbnRleHQpOwotICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Kj4o
cmVuZGVyaW5nRGV2aWNlKCkpLT5jdXJyZW50Q0dDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0Q2xp
cFRvTWFzayhjZ0NvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIGdyYXlz
Y2FsZUltYWdlKTsKLSAgICAKLSAgICBDR0ltYWdlUmVsZWFzZShncmF5c2NhbGVJbWFnZSk7Ci0g
ICAgQ0dDb250ZXh0UmVsZWFzZShncmF5c2NhbGVDb250ZXh0KTsKLSAgICBmYXN0RnJlZShpbWFn
ZUJ1ZmZlcik7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0
ei5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tD
YW52YXNSZXNvdXJjZXNRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEtDYW52YXNSZXNvdXJjZXNRdWFydHpfaAotI2Rl
ZmluZSBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6X2gKLQotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVy
LmgiCi0KLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJTVkdDb250
YWluZXIuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLQotdHlwZWRlZiBzdHJ1Y3Qg
Q0dDb250ZXh0ICpDR0NvbnRleHRSZWY7Ci10eXBlZGVmIHN0cnVjdCBDR0xheWVyICpDR0xheWVy
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEtDYW52YXNDbGlwcGVyUXVhcnR6
IDogcHVibGljIEtDYW52YXNDbGlwcGVyIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzQ2xpcHBlclF1
YXJ0eigpIHsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNsaXAoY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7Ci19OwotCi1jbGFzcyBLQ2FudmFzSW1hZ2VRdWFydHog
OiBwdWJsaWMgS0NhbnZhc0ltYWdlIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzSW1hZ2VRdWFydHoo
KSA6IG1fY2dMYXllcigwKSB7IH0KLSAgICB+S0NhbnZhc0ltYWdlUXVhcnR6KCk7Ci0gICAgdm9p
ZCBpbml0KGNvbnN0IEltYWdlJikgeyB9Ci0gICAgdm9pZCBpbml0KEludFNpemUgc2l6ZSkgeyBt
X3NpemUgPSBzaXplOyB9Ci0gICAgCi0gICAgQ0dMYXllclJlZiBjZ0xheWVyKCk7Ci0gICAgdm9p
ZCBzZXRDR0xheWVyKENHTGF5ZXJSZWYgbGF5ZXIpOwotCi0gICAgSW50U2l6ZSBzaXplKCkgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIEludFNpemUgbV9zaXplOwotICAg
IENHTGF5ZXJSZWYgbV9jZ0xheWVyOwotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUv
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0
ei5tbQkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogICAgICAgICAgICAgICAyMDA1IEFsZXhhbmRlciBLZWxsZXR0IDxs
eXBhbm92QGtkZS5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNW
R19TVVBQT1JUCi0jaW1wb3J0ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCi0KLSNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiS0NhbnZhc0ZpbHRlclF1YXJ0ei5oIgotI2lt
cG9ydCAiS0NhbnZhc01hc2tlclF1YXJ0ei5oIgotI2ltcG9ydCAiS1JlbmRlcmluZ0RldmljZVF1
YXJ0ei5oIgotI2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgS0NhbnZhc0NsaXBwZXJRdWFydHo6OmFwcGx5Q2xpcChjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94KSBjb25zdAotewotICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250
ZXh0ID0gcmVuZGVyaW5nRGV2aWNlKCktPmN1cnJlbnRDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6
Kj4oY29udGV4dCktPmNnQ29udGV4dCgpOwotICAgIGlmIChtX2NsaXBEYXRhLmNvdW50KCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBCT09MIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IE5P
OwotICAgIFdpbmRSdWxlIGNsaXBSdWxlID0gbV9jbGlwRGF0YVswXS53aW5kUnVsZSgpOwotCi0g
ICAgY29udGV4dC0+Y2xlYXJQYXRoKCk7Ci0KLSAgICBDR0FmZmluZVRyYW5zZm9ybSBiYm94VHJh
bnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdE1ha2Uo
MCwwLDEsMSksIENHUmVjdChib3VuZGluZ0JveCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCB4ID0g
MDsgeCA8IG1fY2xpcERhdGEuY291bnQoKTsgeCsrKSB7Ci0gICAgICAgIEtDQ2xpcERhdGEgZGF0
YSA9IG1fY2xpcERhdGFbeF07Ci0gICAgICAgIGlmIChkYXRhLndpbmRSdWxlKCkgIT0gY2xpcFJ1
bGUpCi0gICAgICAgICAgICBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSBZRVM7Ci0gICAgICAgIAot
ICAgICAgICBDR1BhdGhSZWYgY2xpcFBhdGggPSBkYXRhLnBhdGgucGxhdGZvcm1QYXRoKCk7Ci0K
LSAgICAgICAgaWYgKGRhdGEuYmJveFVuaXRzKSB7Ci0gICAgICAgICAgICBDR011dGFibGVQYXRo
UmVmIHRyYW5zZm9ybWVkUGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICAgICAgICAg
IENHUGF0aEFkZFBhdGgodHJhbnNmb3JtZWRQYXRoLCAmYmJveFRyYW5zZm9ybSwgY2xpcFBhdGgp
OwotICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjZ0NvbnRleHQsIHRyYW5zZm9ybWVkUGF0
aCk7Ci0gICAgICAgICAgICBDR1BhdGhSZWxlYXNlKHRyYW5zZm9ybWVkUGF0aCk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjZ0NvbnRleHQsIGNsaXBQYXRo
KTsKLSAgICB9Ci0KLSAgICBpZiAobV9jbGlwRGF0YS5jb3VudCgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FIQotICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgYWxsb3cgZm9yIGhldGVyb2dlbm91
cyBjbGlwIHJ1bGVzLgotICAgICAgICAvLyB3ZSB3b3VsZCBoYXZlIHRvIGRldGVjdCBzdWNoLCBk
cmF3IHRvIGEgbWFzaywgYW5kIHRoZW4gY2xpcAotICAgICAgICAvLyB0byB0aGF0IG1hc2sgICAg
ICAgICAgICAgICAgCi0gICAgICAgIGlmICghQ0dDb250ZXh0SXNQYXRoRW1wdHkoY2dDb250ZXh0
KSkgewotICAgICAgICAgICAgaWYgKGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAg
ICAgICAgICBDR0NvbnRleHRFT0NsaXAoY2dDb250ZXh0KTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNnQ29udGV4dCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLUtDYW52YXNJbWFnZVF1YXJ0ejo6fktDYW52YXNJbWFnZVF1YXJ0eigpCi17Ci0gICAg
Q0dMYXllclJlbGVhc2UobV9jZ0xheWVyKTsKLX0KLQotQ0dMYXllclJlZiBLQ2FudmFzSW1hZ2VR
dWFydHo6OmNnTGF5ZXIoKQotewotICAgIHJldHVybiBtX2NnTGF5ZXI7Ci19Ci0KLXZvaWQgS0Nh
bnZhc0ltYWdlUXVhcnR6OjpzZXRDR0xheWVyKENHTGF5ZXJSZWYgbGF5ZXIpCi17Ci0gICAgaWYg
KG1fY2dMYXllciAhPSBsYXllcikgewotICAgICAgICBDR0xheWVyUmVsZWFzZShtX2NnTGF5ZXIp
OwotICAgICAgICBtX2NnTGF5ZXIgPSBDR0xheWVyUmV0YWluKGxheWVyKTsKLSAgICB9Ci19Ci0K
LX0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaAkocmV2aXNpb24gMTc0
MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVh
cnR6LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDExICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
Y29udGV4dCBtYW5hZ2VtZW50LgogICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6KiBx
dWFydHpDb250ZXh0KCkgY29uc3Q7CiAgICAgQ0dDb250ZXh0UmVmIGN1cnJlbnRDR0NvbnRleHQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0Rm9y
SW1hZ2UoS0NhbnZhc0ltYWdlKikgY29uc3Q7CisgICAgdmlydHVhbCBLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dCogY29udGV4dEZvckltYWdlKEdyYXBoaWNzUmVzb3VyY2VJbWFnZSopIGNvbnN0Owog
CiAgICAgLy8gUmVzb3VyY2UgY3JlYXRpb24KLSAgICB2aXJ0dWFsIEtDYW52YXNSZXNvdXJjZSAq
Y3JlYXRlUmVzb3VyY2UoY29uc3QgS0NSZXNvdXJjZVR5cGUmKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEtSZW5kZXJpbmdQYWludFNlcnZlciAqY3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3QgS0NQYWludFNl
cnZlclR5cGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NSZXNvdXJj
ZT4gY3JlYXRlUmVzb3VyY2UoY29uc3QgR3JhcGhpY3NSZXNvdXJjZVR5cGUmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyPiBjcmVhdGVQYWludFNl
cnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgS0NhbnZh
c0ZpbHRlckVmZmVjdCAqY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IEtDRmlsdGVyRWZmZWN0VHlw
ZSYpIGNvbnN0OwogICAgIAogICAgIC8vIGZpbHRlcnMgKG1vc3RseSBkZWJ1Z2dpbmcpCkluZGV4
OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdE
ZXZpY2VRdWFydHoubW0JKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
MTUgKzI1LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKICNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKIAogI2ltcG9ydCAiRm91
bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
S0NhbnZhc01hcmtlci5oIgorI2ltcG9ydCAiR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCIKKyNp
bXBvcnQgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgorI2ltcG9ydCAiR3JhcGhpY3NSZXNvdXJj
ZU1hcmtlci5oIgogI2ltcG9ydCAiS0NhbnZhc0ZpbHRlclF1YXJ0ei5oIgotI2ltcG9ydCAiS0Nh
bnZhc01hc2tlclF1YXJ0ei5oIgotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgor
I2ltcG9ydCAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ1Bh
aW50U2VydmVyUXVhcnR6LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJRdWFydHpT
dXBwb3J0LmgiCkBAIC0xMTgsMTYgKzEyMCwxNSBAQCBDR0NvbnRleHRSZWYgS1JlbmRlcmluZ0Rl
dmljZVF1YXJ0ejo6Y3VyCiAgICAgcmV0dXJuIHF1YXJ0ekNvbnRleHQoKS0+Y2dDb250ZXh0KCk7
CiB9CiAKLUtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Ojpj
b250ZXh0Rm9ySW1hZ2UoS0NhbnZhc0ltYWdlICppbWFnZSkgY29uc3QKK0tSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0KiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Ojpjb250ZXh0Rm9ySW1hZ2UoR3JhcGhp
Y3NSZXNvdXJjZUltYWdlICppbWFnZSkgY29uc3QKIHsKLSAgICBLQ2FudmFzSW1hZ2VRdWFydHoq
IHF1YXJ0ekltYWdlID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ltYWdlUXVhcnR6Kj4oaW1hZ2UpOwot
ICAgIENHTGF5ZXJSZWYgY2dMYXllciA9IHF1YXJ0ekltYWdlLT5jZ0xheWVyKCk7CisgICAgQ0dM
YXllclJlZiBjZ0xheWVyID0gaW1hZ2UtPmNnTGF5ZXIoKTsKICAgICBpZiAoIWNnTGF5ZXIpIHsK
ICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG5vdCBnZXQgYmFjayBhIGxheWVyIGlmIHRoaXMg
aXMgYSBsb2FkZWQgaW1hZ2UKLSAgICAgICAgLy8gbWF5YmUgdGhpcyBsb2dpYyBzaG91bGQgZ28g
aW50byBLQ2FudmFzSW1hZ2U/CisgICAgICAgIC8vIG1heWJlIHRoaXMgbG9naWMgc2hvdWxkIGdv
IGludG8gR3JhcGhpY3NSZXNvdXJjZUltYWdlPwogICAgICAgICBjZ0xheWVyID0gQ0dMYXllckNy
ZWF0ZVdpdGhDb250ZXh0KGN1cnJlbnRDR0NvbnRleHQoKSwgQ0dTaXplKGltYWdlLT5zaXplKCkg
KyBJbnRTaXplKDEsMSkpLCBOVUxMKTsgIC8vIEZJWE1FICsgMSBpcyBhIGhhY2sKICAgICAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBjb21wb3NpdGUgdGhlIG9yaWdpbmFsIGltYWdlIG9udG8gdGhl
IGxheWVyLi4uCi0gICAgICAgIHF1YXJ0ekltYWdlLT5zZXRDR0xheWVyKGNnTGF5ZXIpOworICAg
ICAgICBpbWFnZS0+c2V0Q0dMYXllcihjZ0xheWVyKTsKICAgICAgICAgQ0dMYXllclJlbGVhc2Uo
Y2dMYXllcik7CiAgICAgfQogICAgIHJldHVybiBuZXcgS1JlbmRlcmluZ0RldmljZUNvbnRleHRR
dWFydHooQ0dMYXllckdldENvbnRleHQoY2dMYXllcikpOwpAQCAtMTM2LDcgKzEzNyw3IEBAIEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBLUmVuZGVyaW5nRGV2aWMKICNwcmFnbWEgbWFyayAtCiAj
cHJhZ21hIG1hcmsgUmVzb3VyY2UgQ3JlYXRpb24KIAotS1JlbmRlcmluZ1BhaW50U2VydmVyICpL
UmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2Vy
dmVyVHlwZSYgdHlwZSkgY29uc3QKK1Bhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyPiBL
UmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2Vy
dmVyVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKm5ld1Nl
cnZlciA9IE5VTEw7CiAgICAgc3dpdGNoKHR5cGUpIHsKQEAgLTE1NiwxOSArMTU3LDE5IEBAIEtS
ZW5kZXJpbmdQYWludFNlcnZlciAqS1JlbmRlcmluZ0RldmljZVEKICAgICByZXR1cm4gbmV3U2Vy
dmVyOwogfQogCi1LQ2FudmFzUmVzb3VyY2UgKktSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNyZWF0
ZVJlc291cmNlKGNvbnN0IEtDUmVzb3VyY2VUeXBlJiB0eXBlKSBjb25zdAorUGFzc1JlZlB0cjxH
cmFwaGljc1Jlc291cmNlPiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVSZXNvdXJjZShj
b25zdCBHcmFwaGljc1Jlc291cmNlVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICBjYXNlIFJTX0NMSVBQRVI6Ci0gICAgICAgIHJldHVybiBuZXcgS0NhbnZhc0Ns
aXBwZXJRdWFydHooKTsKKyAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljc1Jlc291cmNlQ2xpcHBl
cigpOwogICAgIGNhc2UgUlNfTUFSS0VSOgotICAgICAgICByZXR1cm4gbmV3IEtDYW52YXNNYXJr
ZXIoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljc1Jlc291cmNlTWFya2VyKCk7CiAgICAg
Y2FzZSBSU19JTUFHRToKLSAgICAgICAgcmV0dXJuIG5ldyBLQ2FudmFzSW1hZ2VRdWFydHooKTsK
KyAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljc1Jlc291cmNlSW1hZ2UoKTsKICAgICBjYXNlIFJT
X0ZJTFRFUjoKICAgICAgICAgcmV0dXJuIG5ldyBLQ2FudmFzRmlsdGVyUXVhcnR6KCk7CiAgICAg
Y2FzZSBSU19NQVNLRVI6Ci0gICAgICAgIHJldHVybiBuZXcgS0NhbnZhc01hc2tlclF1YXJ0eigp
OworICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIoKTsKICAgICB9CiAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHJlc291cmNlIG9mIHR5cGU6ICVpIiwgdHlw
ZSk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1
YXJ0ei5tbQkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTYgKzI3LDE0IEBACiAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKICNpbXBvcnQgIktSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oIgotCi0jaW1w
b3J0ICJLQ2FudmFzSW1hZ2UuaCIKLSNpbXBvcnQgIktDYW52YXNSZXNvdXJjZXNRdWFydHouaCIK
KyNpbXBvcnQgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ0Rl
dmljZVF1YXJ0ei5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ1BhaW50U2VydmVyLmgiCiAjaW1wb3J0
ICJRdWFydHpTdXBwb3J0LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQorI2ltcG9ydCAi
UmVuZGVyUGF0aC5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTM3LDcgKzEzNSw2IEBAIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6OjpLUmUKICAgICA6IG1fc3RvcHNDYWNoZSgwKQogICAgICwgbV9zdG9wc0NvdW50KDAp
CiAgICAgLCBtX3NoYWRpbmdDYWNoZSgwKQotICAgICwgbV9tYXNrSW1hZ2UoMCkKIHsKIH0KIApA
QCAtMTQ1LDcgKzE0Miw2IEBAIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojp+
S1IKIHsKICAgICBkZWxldGUgbV9zdG9wc0NhY2hlOwogICAgIENHU2hhZGluZ1JlbGVhc2UobV9z
aGFkaW5nQ2FjaGUpOwotICAgIGRlbGV0ZSBtX21hc2tJbWFnZTsKIH0KIAogdm9pZCBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dXBkYXRlUXVhcnR6R3JhZGllbnRDYWNoZShj
b25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAqc2VydmVyKQpAQCAtMjIwLDkgKzIx
Niw2IEBAIGJvb2wgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoKICAgICBpZiAo
c2VydmVyLT5saXN0ZW5lcigpKSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwg
c2hvdWxkIGJlIGluIGEgY29tbW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQogICAgICAgICBz
ZXJ2ZXItPmxpc3RlbmVyKCktPnJlc291cmNlTm90aWZpY2F0aW9uKCk7CiAgICAgCi0gICAgZGVs
ZXRlIG1fbWFza0ltYWdlOwotICAgIG1fbWFza0ltYWdlID0gMDsKLQogICAgIC8vIEZJWE1FOiB0
b3RhbCBjb25zdCBIQUNLIQogICAgIC8vIFdlIG5lZWQgYSBob29rIHRvIGNhbGwgdGhpcyB3aGVu
IHRoZSBncmFkaWVudCBnZXRzIHVwZGF0ZWQsIGJlZm9yZSBkcmF3bi4KICAgICBpZiAoIW1fc2hh
ZGluZ0NhY2hlKQpAQCAtMjQ2LDEyICsyMzksMTIgQEAgYm9vbCBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudFF1YXJ0egogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwog
ICAgICAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHJlbmRlclN0eWxlLCBy
ZW5kZXJPYmplY3QpOyAvLyBGSVhNRTogdGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBwbGFjZSBm
b3IgdGhpcy4KICAgICAgICAgaWYgKHNlcnZlci0+aXNQYWludGluZ1RleHQoKSkgewotICAgICAg
ICAgICAgbV9tYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxLQ2FudmFzSW1hZ2UqPihxdWFydHpEZXZp
Y2UtPmNyZWF0ZVJlc291cmNlKFJTX0lNQUdFKSk7CisgICAgICAgICAgICBtX21hc2tJbWFnZSA9
IG5ldyBHcmFwaGljc1Jlc291cmNlSW1hZ2UoKTsKICAgICAgICAgICAgIGludCB3aWR0aCAgPSAy
MDQ4OwogICAgICAgICAgICAgaW50IGhlaWdodCA9IDIwNDg7IC8vIEZJWE1FPz8/CiAgICAgICAg
ICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAg
bV9tYXNrSW1hZ2UtPmluaXQoc2l6ZSk7Ci0gICAgICAgICAgICBLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCogbWFza0ltYWdlQ29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y29udGV4dEZvckltYWdlKG1f
bWFza0ltYWdlKTsKKyAgICAgICAgICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBtYXNrSW1h
Z2VDb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jb250ZXh0Rm9ySW1hZ2UobV9tYXNrSW1hZ2UuZ2V0
KCkpOwogICAgICAgICAgICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dChtYXNrSW1hZ2VDb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBtYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0
PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6Kj4obWFza0ltYWdlQ29udGV4dCktPmNnQ29u
dGV4dCgpOwogICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihyZW5kZXJPYmpl
Y3QpLT5zdHlsZSgpLT5zZXRDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CkBAIC0yOTIsNyAr
Mjg1LDYgQEAgdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0egogdm9pZCBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dGVhcmRvd24oY29uc3QgS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQgKnNlcnZlciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQq
IHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1Bh
aW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAogeyAKICAgICBDR1NoYWRpbmdSZWYgc2hhZGluZyA9
IG1fc2hhZGluZ0NhY2hlOwotICAgIEtDYW52YXNJbWFnZSogbWFza0ltYWdlID0gbV9tYXNrSW1h
Z2U7CiAgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiogcXVhcnR6RGV2aWNlID0gc3RhdGljX2Nh
c3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eio+KHJlbmRlcmluZ0RldmljZSgpKTsKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOwogICAg
IFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSA9IHJlbmRlck9iamVjdC0+c3R5bGUoKTsKQEAgLTMx
NSw4ICszMDcsNyBAQCB2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6CiAg
ICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYgZ3JheUNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VD
cmVhdGVEZXZpY2VHcmF5KCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29u
dGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwg
OCwgd2lkdGgsIGdyYXlDb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZSk7CiAgICAgICAgICAg
ICBDR0NvbG9yU3BhY2VSZWxlYXNlKGdyYXlDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIEtDYW52
YXNJbWFnZVF1YXJ0eiogcU1hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZVF1YXJ0
eio+KG1hc2tJbWFnZSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJBdFBvaW50KGdy
YXlzY2FsZUNvbnRleHQsIENHUG9pbnRNYWtlKDAsIDApLCBxTWFza0ltYWdlLT5jZ0xheWVyKCkp
OworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVyQXRQb2ludChncmF5c2NhbGVDb250ZXh0
LCBDR1BvaW50TWFrZSgwLCAwKSwgbV9tYXNrSW1hZ2UtPmNnTGF5ZXIoKSk7CiAgICAgICAgICAg
ICBDR0ltYWdlUmVmIGdyYXlzY2FsZUltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Z3JheXNjYWxlQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRl
eHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIGdyYXlzY2FsZUltYWdlKTsKICAg
ICAgICAgICAgIENHQ29udGV4dFJlbGVhc2UoZ3JheXNjYWxlQ29udGV4dCk7CkluZGV4OiBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHouaAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtDYW52YXNJ
bWFnZTsKK2NsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTsKIAogY2xhc3MgS1JlbmRlcmluZ1Bh
aW50U2VydmVyUXVhcnR6SGVscGVyIHsKIHB1YmxpYzoKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcygpOwogICAgIENHU2hhZGlu
Z1JlZiBtX3NoYWRpbmdDYWNoZTsKLSAgICBtdXRhYmxlIEtDYW52YXNJbWFnZSAqbV9tYXNrSW1h
Z2U7CisgICAgbXV0YWJsZSBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZUltYWdlPiBtX21hc2tJbWFn
ZTsKIH07CiAKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6
IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6LApJbmRleDogV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQ
YWludFNlcnZlclF1YXJ0ei5tbQkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEwICsyNywxMiBAQAogCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVm
IFNWR19TVVBQT1JUCisjaW1wb3J0ICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKICNpbXBvcnQg
IktSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oIgorI2ltcG9ydCAiUmVuZGVyUGF0aC5oIgog
I2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5oIgotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0
ei5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgogCiAjaW1wb3J0ICJLQ2Fu
dmFzUmVuZGVyaW5nU3R5bGUuaCIKQEAgLTEzMyw3ICsxMzUsNyBAQCB2b2lkIEtSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkUXVhcnR6Ojp0CiAKIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQgKmlu
Zm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogewotICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSByZWlu
dGVycHJldF9jYXN0PEtDYW52YXNJbWFnZVF1YXJ0eio+KGluZm8pLT5jZ0xheWVyKCk7CisgICAg
Q0dMYXllclJlZiBsYXllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NSZXNvdXJjZUltYWdl
Kj4oaW5mbyktPmNnTGF5ZXIoKTsKICAgICBDR0NvbnRleHREcmF3TGF5ZXJBdFBvaW50KGNvbnRl
eHQsIENHUG9pbnRaZXJvLCBsYXllcik7CiB9CiAKQEAgLTE1NSw3ICsxNTcsNyBAQCBib29sIEtS
ZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdWFydHo6CiAgICAgS1JlbmRlcmluZ0RldmljZUNv
bnRleHRRdWFydHoqIHF1YXJ0ekNvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dFF1YXJ0eio+KHJlbmRlcmluZ0NvbnRleHQpOwogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcXVhcnR6Q29udGV4dC0+Y2dDb250ZXh0KCk7CiAKLSAgICBLQ2FudmFzSW1hZ2UqIGNl
bGwgPSB0aWxlKCk7CisgICAgUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2VJbWFnZT4gY2VsbCA9IHRp
bGUoKTsKICAgICBpZiAoIWNlbGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1tCShyZXZpc2lv
biAxNzQyNSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKICNpbXBvcnQgIlF1YXJ0elN1cHBv
cnQuaCIKIAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJLQ2FudmFzUmVz
b3VyY2VzUXVhcnR6LmgiCiAjaW1wb3J0ICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKKyNpbXBv
cnQgIlJlbmRlclN0eWxlLmgiCiAjaW1wb3J0ICJ3dGYvQXNzZXJ0aW9ucy5oIgogCiAjaW1wb3J0
IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgpJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52
YXNSZW5kZXJpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tD
YW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rc3Zn
Mi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI2
ICsyMywyOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKKyNp
bmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0
eWxlLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVy
U29saWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRo
LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIK
ICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAia3N2Zy5oIgogCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
S1JlbmRlcmluZ1BhaW50U2VydmVyU29saWQqIHNoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIoKQogewog
ICAgIHN0YXRpYyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCogX3NoYXJlZFNvbGlkUGFpbnRT
ZXJ2ZXIgPSAwOwogICAgIGlmICghX3NoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIpCi0gICAgICAgIF9z
aGFyZWRTb2xpZFBhaW50U2VydmVyID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVy
U29saWQqPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFpbnRTZXJ2ZXIoUFNfU09MSUQpKTsK
KyAgICAgICAgX3NoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJTb2xpZCo+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihQ
U19TT0xJRCkucmVsZWFzZVJlZigpKTsKICAgICByZXR1cm4gX3NoYXJlZFNvbGlkUGFpbnRTZXJ2
ZXI7CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTAgQEAgU1ZHQ2xpcFBhdGhFbGVtZW50
OjpTVkdDbGlwUGF0aEVsZW1lbnQoYwogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFKQogewotICAgIG1fY2xpcHBlciA9IDA7CiB9CiAKIFNWR0NsaXBQYXRoRWxl
bWVudDo6flNWR0NsaXBQYXRoRWxlbWVudCgpCiB7Ci0gICAgZGVsZXRlIG1fY2xpcHBlcjsKIH0K
IAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2xpcFBhdGhFbGVtZW50LCBpbnQs
IEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywg
U1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX2NsaXBQYXRoVW5pdHMp
CkBAIC03MSwxMiArNjksMTMgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cgogICAgIH0KIH0KIAotS0NhbnZhc0NsaXBwZXIqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2Fu
dmFzUmVzb3VyY2UoKQorR3JhcGhpY3NSZXNvdXJjZSogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52
YXNSZXNvdXJjZSgpCiB7CiAgICAgaWYgKCF2aWV3KCkpCiAgICAgICAgIHJldHVybiAwOworCiAg
ICAgaWYgKCFtX2NsaXBwZXIpCi0gICAgICAgIG1fY2xpcHBlciA9IHN0YXRpY19jYXN0PEtDYW52
YXNDbGlwcGVyKj4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX0NMSVBQRVIp
KTsKKyAgICAgICAgbV9jbGlwcGVyID0gbmV3IEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKCk7CiAg
ICAgZWxzZQogICAgICAgICBtX2NsaXBwZXItPnJlc2V0Q2xpcERhdGEoKTsKIApAQCAtOTcsNyAr
OTYsNyBAQCBLQ2FudmFzQ2xpcHBlciogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52CiAgICAgICAg
IH0KICAgICB9CiAgICAgY2xpcFBhdGhTdHlsZS0+ZGVyZWYodmlldygpLT5yZW5kZXJBcmVuYSgp
KTsKLSAgICByZXR1cm4gbV9jbGlwcGVyOworICAgIHJldHVybiBtX2NsaXBwZXIuZ2V0KCk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lv
biAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjZGVmaW5lIEtTVkdfU1ZHQ2xpcFBhdGhFbGVt
ZW50SW1wbF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVy
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAj
aW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKQEAgLTQzLDcgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZp
cnR1YWwgS0NhbnZhc0NsaXBwZXIqIGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwg
R3JhcGhpY3NSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyAnU1ZHQ2xp
cFBhdGhFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDbGlw
UGF0aEVsZW1lbnQsIGludCwgaW50LCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzKQogCi0g
ICAgICAgIEtDYW52YXNDbGlwcGVyKiBtX2NsaXBwZXI7CisgICAgICAgIFJlZlB0cjxHcmFwaGlj
c1Jlc291cmNlQ2xpcHBlcj4gbV9jbGlwcGVyOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE3NDI1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IktDYW52YXNJbWFnZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgogI2lu
Y2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNs
dWRlICJTVkdMZW5ndGguaCIKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMyArNTgsMTAgQEAgU1ZHRmlsdGVyRWxlbWVu
dDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdAogICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBtX3dpZHRoLT5zZXRWYWx1ZUFzU3RyaW5nKCIxMjAlIik7CiAg
ICAgbV9oZWlnaHQtPnNldFZhbHVlQXNTdHJpbmcoIjEyMCUiKTsKLQotICAgIG1fZmlsdGVyID0g
MDsKIH0KIAogU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQogewotICAgIGRl
bGV0ZSBtX2ZpbHRlcjsKIH0KIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIEZpbHRlclVuaXRzLCBm
aWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0
ZXJVbml0cykKQEAgLTExMCwxMyArMTA3LDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKLUtDYW52YXNGaWx0ZXIqIFNWR0ZpbHRlckVsZW1l
bnQ6OmNhbnZhc1Jlc291cmNlKCkKK0dyYXBoaWNzUmVzb3VyY2UqIFNWR0ZpbHRlckVsZW1lbnQ6
OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBpZiAoIWF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgaWYgKCFtX2ZpbHRlcikKLSAgICAgICAgbV9maWx0ZXIgPSBzdGF0aWNfY2Fz
dDxLQ2FudmFzRmlsdGVyKj4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX0ZJ
TFRFUikpOworICAgICAgICBtX2ZpbHRlciA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxLQ2Fu
dmFzRmlsdGVyPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNfRklMVEVSKSk7
CiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmlsdGVyVW5pdHMoKSA9PSBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0ZXItPnNldEZp
bHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9kZSk7CkBAIC0xNDEsNyArMTM4LDcgQEAg
S0NhbnZhc0ZpbHRlciogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUgogICAgICAgICAgICAgICAg
IG1fZmlsdGVyLT5hZGRGaWx0ZXJFZmZlY3QoZmUtPmZpbHRlckVmZmVjdCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICByZXR1cm4gbV9maWx0ZXI7CisgICAgcmV0dXJuIG1fZmlsdGVyLmdldCgp
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lv
biAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNW
R0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAg
IHZpcnR1YWwgflNWR0ZpbHRlckVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIEtDYW52YXNG
aWx0ZXIqIGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgR3JhcGhpY3NSZXNvdXJj
ZSogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyAnU1ZHRmlsdGVyRWxlbWVudCcgZnVu
Y3Rpb25zCiAgICAgICAgIHZvaWQgc2V0RmlsdGVyUmVzKHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVz
WCwgdW5zaWduZWQgbG9uZyBmaWx0ZXJSZXNZKSBjb25zdDsKQEAgLTY2LDcgKzY2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgbG9uZywgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxv
bmcsIGxvbmcsIEZpbHRlclJlc1ksIGZpbHRlclJlc1kpCiAKLSAgICAgICAgS0NhbnZhc0ZpbHRl
ciogbV9maWx0ZXI7CisgICAgICAgIFJlZlB0cjxLQ2FudmFzRmlsdGVyPiBtX2ZpbHRlcjsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiS1JlbmRlcmlu
Z0RldmljZS5oIgorI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTQ0
LDEyICs0NSwxMCBAQCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjCiAg
ICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YKQogICAgICwgbV9ncmFkaWVudFRyYW5zZm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlz
dCkKIHsKLSAgICBtX3Jlc291cmNlID0gMDsKIH0KIAogU1ZHR3JhZGllbnRFbGVtZW50Ojp+U1ZH
R3JhZGllbnRFbGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9yZXNvdXJjZTsKIH0KIAogQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0
aW9uLCBlbnVtZXJhdGlvbiwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHTmFtZXM6
OmdyYWRpZW50VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX2dyYWRpZW50VW5pdHMpCkBAIC0xMDMs
MjEgKzEwMiwyMCBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6bm90aWZ5QXR0cmlidXRlCiAg
ICAgfQogfQogCi1LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogU1ZHR3JhZGllbnRFbGVt
ZW50OjpjYW52YXNSZXNvdXJjZSgpCitHcmFwaGljc1Jlc291cmNlKiBTVkdHcmFkaWVudEVsZW1l
bnQ6OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2UpIHsKLSAgICAgICAg
S1JlbmRlcmluZ1BhaW50U2VydmVyKiB0ZW1wID0gcmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBh
aW50U2VydmVyKGdyYWRpZW50VHlwZSgpKTsKLSAgICAgICAgbV9yZXNvdXJjZSA9IHN0YXRpY19j
YXN0PEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Kj4odGVtcCk7CisgICAgICAgIG1fcmVz
b3VyY2UgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQ+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihncmFkaWVudFR5cGUo
KSkpOwogICAgICAgICBtX3Jlc291cmNlLT5zZXRMaXN0ZW5lcih0aGlzKTsKICAgICAgICAgYnVp
bGRHcmFkaWVudChtX3Jlc291cmNlKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2U7Cisg
ICAgcmV0dXJuIG1fcmVzb3VyY2UuZ2V0KCk7CiB9CiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50
OjpyZXNvdXJjZU5vdGlmaWNhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gV2UncmUgcmVmZXJlbmNl
ZCBieSBhICJjbGllbnQiLCBidWlsZCB0aGUgZ3JhZGllbnQgbm93Li4uCi0gICAgYnVpbGRHcmFk
aWVudChjb25zdF9jYXN0PFNWR0dyYWRpZW50RWxlbWVudCo+KHRoaXMpLT5jYW52YXNSZXNvdXJj
ZSgpKTsKKyAgICBidWlsZEdyYWRpZW50KHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50Kj4oY29uc3RfY2FzdDxTVkdHcmFkaWVudEVsZW1lbnQqPih0aGlzKS0+Y2FudmFz
UmVzb3VyY2UoKSkpOwogfQogCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cmVidWlsZFN0b3Bz
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZp
c2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBLQ2FudmFzUmVzb3Vy
Y2VMaXN0ZW5lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBHcmFwaGlj
c1Jlc291cmNlTGlzdGVuZXIKICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR0dy
YWRpZW50VHlwZSB7CkBAIC01MSwxMiArNTEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyAnU1ZHR3JhZGllbnRFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBjYW52YXNSZXNvdXJjZSgp
OworCisgICAgICAgIHZpcnR1YWwgR3JhcGhpY3NSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsK
KwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VOb3RpZmljYXRpb24oKSBjb25zdDsKIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQqKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBidWlsZEdyYWRpZW50KFBhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ+
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgS0NQYWludFNlcnZlclR5cGUgZ3JhZGllbnRU
eXBlKCkgY29uc3QgPSAwOwogICAgICAgICB2b2lkIHJlYnVpbGRTdG9wcygpIGNvbnN0OwogCkBA
IC02OCw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0dyYWRpZW50RWxlbWVudCwgaW50LCBpbnQsIEdyYWRpZW50
VW5pdHMsIGdyYWRpZW50VW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQdHI8U1ZHVHJh
bnNmb3JtTGlzdD4sIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKIAotICAg
ICAgICBtdXRhYmxlIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBtX3Jlc291cmNlOwor
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudD4gbV9y
ZXNvdXJjZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgotI2luY2x1ZGUgIktDYW52YXNJbWFnZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
UmVzb3VyY2VJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTc0MjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50OjpwYXJzZU1hcHAKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6
OmJ1aWxkR3JhZGllbnQoS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqIF9ncmFkKSBjb25z
dAordm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQoUGFzc1JlZlB0
cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudD4gX2dyYWQpIGNvbnN0CiB7CiAgICAgcmVi
dWlsZFN0b3BzKCk7IC8vIHJlYnVpbGQgc3RvcHMgYmVmb3JlIHBvc3NpYmx5IGltcG9ydGluZyB0
aGVtIGZyb20gYW55IHJlZmVyZW5jZWQgZ3JhZGllbnQuCiAKQEAgLTg1LDIzICs4NSwyMyBAQCB2
b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgZmxvYXQgX3gxID0g
eDEoKS0+dmFsdWUoKSwgX3kxID0geTEoKS0+dmFsdWUoKTsKICAgICBmbG9hdCBfeDIgPSB4Migp
LT52YWx1ZSgpLCBfeTIgPSB5MigpLT52YWx1ZSgpOwogCi0gICAgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyTGluZWFyR3JhZGllbnQqIGdyYWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJMaW5lYXJHcmFkaWVudCo+KF9ncmFkKTsKKyAgICBSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2Vy
dmVyTGluZWFyR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8S1JlbmRl
cmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAw
KQogICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRy
aXgoKS0+bWF0cml4KCk7CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXBy
ZWNhdGVkU3RyaW5nKCk7Ci0gICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKiBwc2VydmVyID0gZ2V0
UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOworICAgIFJlZlB0cjxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXI+IHBzZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQo
KSwgcmVmLm1pZCgxKSk7CiAgICAgCiAgICAgaWYgKHBzZXJ2ZXIgJiYgKHBzZXJ2ZXItPnR5cGUo
KSA9PSBQU19SQURJQUxfR1JBRElFTlQgfHwgcHNlcnZlci0+dHlwZSgpID09IFBTX0xJTkVBUl9H
UkFESUVOVCkpIHsKICAgICAgICAgYm9vbCBpc0xpbmVhciA9IHBzZXJ2ZXItPnR5cGUoKSA9PSBQ
U19MSU5FQVJfR1JBRElFTlQ7Ci0gICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
KiBncmFkaWVudCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Kj4o
cHNlcnZlcik7CisgICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBncmFkaWVu
dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Kj4ocHNlcnZlci5n
ZXQoKSk7CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VW5p
dHNBdHRyKSkKICAgICAgICAgICAgIGJib3ggPSBncmFkaWVudC0+Ym91bmRpbmdCb3hNb2RlKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKGlzTGluZWFyKSB7Ci0gICAgICAgICAgICBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCogbGluZWFyID0gc3RhdGljX2Nhc3Q8S1Jl
bmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQqPihwc2VydmVyKTsKKyAgICAgICAgICAg
IEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2Fz
dDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCo+KHBzZXJ2ZXIuZ2V0KCkpOwog
ICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OngxQXR0cikpCiAgICAgICAg
ICAgICAgICAgX3gxID0gbGluZWFyLT5ncmFkaWVudFN0YXJ0KCkueCgpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoYmJveCkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2
b2lkIGJ1aWxkR3JhZGllbnQoS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoUGFzc1JlZlB0cjxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudD4pIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEtDUGFpbnRTZXJ2
ZXJUeXBlIGdyYWRpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBTX0xJTkVBUl9HUkFESUVOVDsg
fQogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxMSBAQCBTVkdNYXJrZXJFbGVt
ZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0CiAgICAgLCBtX21hcmtlclVuaXRzKFNWR19NQVJL
RVJVTklUU19TVFJPS0VXSURUSCkKICAgICAsIG1fb3JpZW50VHlwZSgwKQogICAgICwgbV9vcmll
bnRBbmdsZShuZXcgU1ZHQW5nbGUodGhpcykpCi0gICAgLCBtX21hcmtlcigwKQogewogfQogCiBT
VkdNYXJrZXJFbGVtZW50Ojp+U1ZHTWFya2VyRWxlbWVudCgpCiB7Ci0gICAgZGVsZXRlIG1fbWFy
a2VyOwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTExMiwxMCArMTEwLDEwIEBAIHZvaWQgU1ZHTWFya2Vy
RWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSgKICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1ZShh
bmdsZSk7CiB9CiAKLUtDYW52YXNNYXJrZXIqIFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1Jlc291
cmNlKCkKK0dyYXBoaWNzUmVzb3VyY2UqIFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNl
KCkKIHsKICAgICBpZiAoIW1fbWFya2VyKQotICAgICAgICBtX21hcmtlciA9IHN0YXRpY19jYXN0
PEtDYW52YXNNYXJrZXIqPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNfTUFS
S0VSKSk7CisgICAgICAgIG1fbWFya2VyID0gbmV3IEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIoKTsK
ICAgICAKICAgICBtX21hcmtlci0+c2V0TWFya2VyKHN0YXRpY19jYXN0PFJlbmRlclNWR0NvbnRh
aW5lcio+KHJlbmRlcmVyKCkpKTsKIApAQCAtMTMyLDcgKzEzMCw3IEBAIEtDYW52YXNNYXJrZXIq
IFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1IKICAgICBtX21hcmtlci0+c2V0UmVmKHJlZlgoKS0+
dmFsdWUoKSwgcmVmWSgpLT52YWx1ZSgpKTsKICAgICBtX21hcmtlci0+c2V0VXNlU3Ryb2tlV2lk
dGgobWFya2VyVW5pdHMoKSA9PSBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgpOwogICAgIAot
ICAgIHJldHVybiBtX21hcmtlcjsKKyAgICByZXR1cm4gbV9tYXJrZXIuZ2V0KCk7CiB9CiAKIFJl
bmRlck9iamVjdCogU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBTVkdN
YXJrZXJFbGVtZW50X0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiS0NhbnZhc01h
cmtlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRlICJT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94
LmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICAgICAgdmlydHVhbCBLQ2FudmFzTWFy
a2VyKiBjYW52YXNSZXNvdXJjZSgpOworICAgICAgICB2aXJ0dWFsIEdyYXBoaWNzUmVzb3VyY2Uq
IGNhbnZhc1Jlc291cmNlKCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBA
IC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIGludCwgT3JpZW50VHlwZSwg
b3JpZW50VHlwZSkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01h
cmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgUmVmUHRyPFNWR0FuZ2xlPiwgT3JpZW50QW5nbGUsIG9y
aWVudEFuZ2xlKQogCi0gICAgICAgIEtDYW52YXNNYXJrZXIqIG1fbWFya2VyOworICAgICAgICBS
ZWZQdHI8R3JhcGhpY3NSZXNvdXJjZU1hcmtlcj4gbV9tYXJrZXI7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAko
cmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJTVkdNYXNrRWxlbWVu
dC5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS0NhbnZhc0lt
YWdlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiS1Jl
bmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1
ZGUgIlNWR0hlbHBlci5oIgpAQCAtNDgsMTQgKzQ4LDEyIEBAIFNWR01hc2tFbGVtZW50OjpTVkdN
YXNrRWxlbWVudChjb25zdCBRdWEKICAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hF
SUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQogICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCiAgICAgLCBtX2hlaWdodChuZXcgU1ZH
TGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9tYXNr
ZXIoMCkKICAgICAsIG1fZGlydHkodHJ1ZSkKIHsKIH0KIAogU1ZHTWFza0VsZW1lbnQ6On5TVkdN
YXNrRWxlbWVudCgpCiB7Ci0gICAgZGVsZXRlIG1fbWFza2VyOwogfQogCiBBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQpAQCAtMTAx
LDE0ICs5OSwxNSBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAg
ICAgfQogfQogCi1LQ2FudmFzSW1hZ2UqIFNWR01hc2tFbGVtZW50OjpkcmF3TWFza2VyQ29udGVu
dCgpCitHcmFwaGljc1Jlc291cmNlSW1hZ2UqIFNWR01hc2tFbGVtZW50OjpkcmF3TWFza2VyQ29u
dGVudCgpCiB7CiAgICAgS1JlbmRlcmluZ0RldmljZSogZGV2aWNlID0gcmVuZGVyaW5nRGV2aWNl
KCk7CiAgICAgaWYgKCFkZXZpY2UtPmN1cnJlbnRDb250ZXh0KCkpIC8vIEZJWE1FOiBoYWNrIGZv
ciBub3cgdW50aWwgSW1hZ2U6OmxvY2tGb2N1cyBleGlzdHMKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBLQ2FudmFzSW1hZ2Uq
IG1hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZSo+KGRldmljZS0+Y3JlYXRlUmVz
b3VyY2UoUlNfSU1BR0UpKTsKKworICAgIEdyYXBoaWNzUmVzb3VyY2VJbWFnZSogbWFza0ltYWdl
ID0gbmV3IEdyYXBoaWNzUmVzb3VyY2VJbWFnZSgpOwogCiAgICAgSW50U2l6ZSBzaXplID0gSW50
U2l6ZShscm91bmRmKHdpZHRoKCktPnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLT52YWx1ZSgp
KSk7CiAgICAgbWFza0ltYWdlLT5pbml0KHNpemUpOwpAQCAtMTM3LDE4ICsxMzYsMTggQEAgUmVu
ZGVyT2JqZWN0KiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlUmVuZAogICAgIHJldHVybiBtYXNrQ29u
dGFpbmVyOwogfQogCi1LQ2FudmFzTWFza2VyKiBTVkdNYXNrRWxlbWVudDo6Y2FudmFzUmVzb3Vy
Y2UoKQorR3JhcGhpY3NSZXNvdXJjZSogU1ZHTWFza0VsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkK
IHsKICAgICBpZiAoIW1fbWFza2VyKSB7Ci0gICAgICAgIG1fbWFza2VyID0gc3RhdGljX2Nhc3Q8
S0NhbnZhc01hc2tlcio+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVSZXNvdXJjZShSU19NQVNL
RVIpKTsKKyAgICAgICAgbV9tYXNrZXIgPSBuZXcgR3JhcGhpY3NSZXNvdXJjZU1hc2tlcigpOwog
ICAgICAgICBtX2RpcnR5ID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG1fZGlydHkpIHsKLSAgICAg
ICAgS0NhbnZhc0ltYWdlKiBuZXdNYXNrSW1hZ2UgPSBkcmF3TWFza2VyQ29udGVudCgpOwotICAg
ICAgICBtX21hc2tlci0+c2V0TWFzayhuZXdNYXNrSW1hZ2UpOwotICAgICAgICBtX2RpcnR5ID0g
KG5ld01hc2tJbWFnZSAhPSAwKTsKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzUmVzb3VyY2VJbWFn
ZT4gbWFzayhkcmF3TWFza2VyQ29udGVudCgpKTsKKyAgICAgICAgbV9tYXNrZXItPnNldE1hc2so
bWFzayk7CisgICAgICAgIG1fZGlydHkgPSAobWFzayAhPSAwKTsKICAgICB9Ci0gICAgcmV0dXJu
IG1fbWFza2VyOworICAgIHJldHVybiBtX21hc2tlci5nZXQoKTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
ICNkZWZpbmUgU1ZHTWFza0VsZW1lbnRfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRl
ICJLQ2FudmFzTWFza2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oIgog
I2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdM
YW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgiCkBAIC01
MiwxMCArNTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgICAg
IHZpcnR1YWwgS0NhbnZhc01hc2tlciogY2FudmFzUmVzb3VyY2UoKTsKKyAgICAgICAgdmlydHVh
bCBHcmFwaGljc1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBLQ2FudmFzSW1hZ2UqIGRyYXdNYXNrZXJDb250ZW50KCk7CisgICAgICAgIEdyYXBo
aWNzUmVzb3VyY2VJbWFnZSogZHJhd01hc2tlckNvbnRlbnQoKTsKIAogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywg
SHJlZiwgaHJlZikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKQEAgLTY4LDcgKzY4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEtDYW52YXNNYXNrZXIqIG1fbWFza2VyOworICAgICAgICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJj
ZU1hc2tlcj4gbV9tYXNrZXI7CiAgICAgICAgIGJvb2wgbV9kaXJ0eTsKICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQyNSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1Jlc291cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAj
aW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR0NvbnRhaW5lci5oIgpAQCAtNTAsNyArNTAsNyBAQCBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZH
UGF0dGVybkVsZW1lbnQoY29uCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQotICAgICwgS0Nh
bnZhc1Jlc291cmNlTGlzdGVuZXIoKQorICAgICwgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKCkK
ICAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCiAgICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxl
bWVudCgpKSkKICAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmll
d3BvcnRFbGVtZW50KCkpKQpAQCAtNTksMTQgKzU5LDExIEBAIFNWR1BhdHRlcm5FbGVtZW50OjpT
VkdQYXR0ZXJuRWxlbWVudChjb24KICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiAgICAgLCBtX3BhdHRlcm5UcmFu
c2Zvcm0obmV3IFNWR1RyYW5zZm9ybUxpc3QpCiB7Ci0gICAgbV90aWxlID0gMDsKLSAgICBtX3Bh
aW50U2VydmVyID0gMDsKICAgICBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgPSBmYWxzZTsKIH0K
IAogU1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQYXR0ZXJuRWxlbWVudCgpCiB7Ci0gICAgZGVsZXRl
IG1fcGFpbnRTZXJ2ZXI7CiB9CiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Bh
dHRlcm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVyblVuaXRz
LCBwYXR0ZXJuVW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBt
X3BhdHRlcm5Vbml0cykKQEAgLTEzOSwxMiArMTM2LDEyIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1l
bnQ6OnJlc291cmNlTm90aWZpY2EKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVzRnJvbVJlZmVyZW5jZVBhdHRlcm4oY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQqIHRhcmdldCwg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KQogewogICAgIERlcHJlY2F0
ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKLSAgICBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIqIHJlZlNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCBy
ZWYubWlkKDEpKTsKKyAgICBSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyPiByZWZTZXJ2ZXIg
PSBnZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CiAKICAgICBpZiAo
IXJlZlNlcnZlciB8fCByZWZTZXJ2ZXItPnR5cGUoKSAhPSBQU19QQVRURVJOKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybiogcmVmUGF0dGVy
biA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4qPihyZWZTZXJ2ZXIp
OworICAgIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuPiByZWZQYXR0ZXJuID0g
V1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4+KHJl
ZlNlcnZlcik7CiAgICAgCiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5V
bml0c0F0dHIpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSB0YXJnZXQt
PmdldEF0dHJpYnV0ZShTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0cik7CkBAIC0xODQsMTYgKzE4
MSwxNSBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpkcmF3UGF0dGVybkNvbnRlCiAgICAgICAg
ICAgICBzYXZlZENvbnRleHQgPSBjb25zdF9jYXN0PFNWR1BhdHRlcm5FbGVtZW50Kj4odGhpcykt
PnB1c2hBdHRyaWJ1dGVDb250ZXh0KGFjdGl2ZUVsZW1lbnQpOwogICAgIH0KICAgICAKLSAgICBk
ZWxldGUgbV90aWxlOwotICAgIG1fdGlsZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZSo+KGRl
dmljZS0+Y3JlYXRlUmVzb3VyY2UoUlNfSU1BR0UpKTsKKyAgICBtX3RpbGUgPSBuZXcgR3JhcGhp
Y3NSZXNvdXJjZUltYWdlKCk7CiAgICAgbV90aWxlLT5pbml0KG5ld1NpemUpOwogCi0gICAgS1Jl
bmRlcmluZ0RldmljZUNvbnRleHQqIHBhdHRlcm5Db250ZXh0ID0gZGV2aWNlLT5jb250ZXh0Rm9y
SW1hZ2UobV90aWxlKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogcGF0dGVybkNvbnRl
eHQgPSBkZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtX3RpbGUuZ2V0KCkpOwogICAgIGRldmljZS0+
cHVzaENvbnRleHQocGF0dGVybkNvbnRleHQpOwogICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFs
dWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7
CiAgICAgbV9wYWludFNlcnZlci0+c2V0QmJveChyZWN0KTsKICAgICBtX3BhaW50U2VydmVyLT5z
ZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXgpOwotICAgIG1fcGFpbnRT
ZXJ2ZXItPnNldFRpbGUobV90aWxlKTsKKyAgICBtX3BhaW50U2VydmVyLT5zZXRUaWxlKG1fdGls
ZS5nZXQoKSk7CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KHBhdHRlcm5D
b250ZXh0LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CiAKQEAgLTMyOCwxNCArMzI0LDEzIEBA
IFJlbmRlck9iamVjdCogU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0ZVIKICAgICByZXR1cm4gcGF0
dGVybkNvbnRhaW5lcjsKIH0KIAotS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybiogU1ZHUGF0
dGVybkVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKK0dyYXBoaWNzUmVzb3VyY2UqIFNWR1BhdHRl
cm5FbGVtZW50OjpjYW52YXNSZXNvdXJjZSgpCiB7CiAgICAgaWYgKCFtX3BhaW50U2VydmVyKSB7
Ci0gICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciogcHNlcnZlciA9IHJlbmRlcmluZ0Rldmlj
ZSgpLT5jcmVhdGVQYWludFNlcnZlcihLQ1BhaW50U2VydmVyVHlwZShQU19QQVRURVJOKSk7Ci0g
ICAgICAgIG1fcGFpbnRTZXJ2ZXIgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQ
YXR0ZXJuKj4ocHNlcnZlcik7CisgICAgICAgIG1fcGFpbnRTZXJ2ZXIgPSBXVEY6OnN0YXRpY19w
b2ludGVyX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybj4ocmVuZGVyaW5nRGV2aWNl
KCktPmNyZWF0ZVBhaW50U2VydmVyKEtDUGFpbnRTZXJ2ZXJUeXBlKFBTX1BBVFRFUk4pKSk7CiAg
ICAgICAgIG1fcGFpbnRTZXJ2ZXItPnNldExpc3RlbmVyKGNvbnN0X2Nhc3Q8U1ZHUGF0dGVybkVs
ZW1lbnQqPih0aGlzKSk7CiAgICAgfQotICAgIHJldHVybiBtX3BhaW50U2VydmVyOworICAgIHJl
dHVybiBtX3BhaW50U2VydmVyLmdldCgpOwogfQogCiBTVkdNYXRyaXgqIFNWR1BhdHRlcm5FbGVt
ZW50OjpnZXRDVE0oKSBjb25zdApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdUZXN0
cy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogCi1jbGFzcyBLQ2FudmFzSW1hZ2U7
CitjbGFzcyBHcmFwaGljc1Jlc291cmNlSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7CkBA
IC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyCiAgICAgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAg
ICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7
IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwotICAgICAgICB2aXJ0dWFsIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4q
IGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgR3JhcGhpY3NSZXNvdXJjZSogY2Fu
dmFzUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFibGUnIGZ1bmN0
aW9ucwogICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7CkBAIC04Miw5
ICs4Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBpbnQsIFBhdHRlcm5Db250ZW50VW5p
dHMsIHBhdHRlcm5Db250ZW50VW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFJlZlB0cjxTVkdU
cmFuc2Zvcm1MaXN0PiwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKIAotICAg
ICAgICBtdXRhYmxlIEtDYW52YXNJbWFnZSogbV90aWxlOworICAgICAgICBtdXRhYmxlIFJlZlB0
cjxHcmFwaGljc1Jlc291cmNlSW1hZ2U+IG1fdGlsZTsKICAgICAgICAgbXV0YWJsZSBib29sIG1f
aWdub3JlQXR0cmlidXRlQ2hhbmdlczsKLSAgICAgICAgbXV0YWJsZSBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJQYXR0ZXJuKiBtX3BhaW50U2VydmVyOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuPiBtX3BhaW50U2VydmVyOwogICAgICAgICAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRoaXM7IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcAogICAgICAgICBTVkdH
cmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi12b2lkIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkaWVudChLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudCogX2dyYWQpIGNvbnN0Cit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
YnVpbGRHcmFkaWVudChQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50PiBf
Z3JhZCkgY29uc3QKIHsKICAgICByZWJ1aWxkU3RvcHMoKTsgLy8gcmVidWlsZCBzdG9wcyBiZWZv
cmUgcG9zc2libHkgaW1wb3J0aW5nIHRoZW0gZnJvbSBhbnkgcmVmZXJlbmNlZCBncmFkaWVudC4K
IApAQCAtOTQsMjMgKzk0LDIzIEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWls
ZEdyYWQKICAgICBmbG9hdCBfZnggPSBmeFNldCA/IGZ4KCktPnZhbHVlKCkgOiBfY3g7CiAgICAg
ZmxvYXQgX2Z5ID0gZnlTZXQgPyBmeSgpLT52YWx1ZSgpIDogX2N5OwogCi0gICAgS1JlbmRlcmlu
Z1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQqIGdyYWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCo+KF9ncmFkKTsKKyAgICBSZWZQdHI8S1JlbmRlcmlu
Z1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nh
c3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0
ZW1zKCkgPiAwKQogICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0
ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhy
ZWYoKS5kZXByZWNhdGVkU3RyaW5nKCk7Ci0gICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKiBwc2Vy
dmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOworICAgIFJl
ZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI+IHBzZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQo
ZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CiAKICAgICBpZiAocHNlcnZlciAmJiAocHNlcnZlci0+
dHlwZSgpID09IFBTX1JBRElBTF9HUkFESUVOVCB8fCBwc2VydmVyLT50eXBlKCkgPT0gUFNfTElO
RUFSX0dSQURJRU5UKSkgewogICAgICAgICBib29sIGlzUmFkaWFsID0gcHNlcnZlci0+dHlwZSgp
ID09IFBTX1JBRElBTF9HUkFESUVOVDsKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQqIGdyYWRpZW50ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnQqPihwc2VydmVyKTsKKyAgICAgICAgUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50PiBncmFkaWVudCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudD4ocHNlcnZlcik7CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZH
TmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAgICAgICAgICAgIGJib3ggPSBncmFkaWVudC0+
Ym91bmRpbmdCb3hNb2RlKCk7CiAKICAgICAgICAgaWYgKGlzUmFkaWFsKSB7Ci0gICAgICAgICAg
ICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCogcmFkaWFsID0gc3RhdGljX2Nh
c3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQqPihwc2VydmVyKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4gcmFkaWFs
ID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdy
YWRpZW50Pihwc2VydmVyKTsKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpjeEF0dHIpKQogICAgICAgICAgICAgICAgIF9jeCA9IHJhZGlhbC0+Z3JhZGllbnRDZW50ZXIo
KS54KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChiYm94KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKIAogICAgICAgICAvLyBJbmhl
cml0IGNvbG9yIHN0b3BzIGlmIGVtcHR5CiAgICAgICAgIGlmIChncmFkLT5ncmFkaWVudFN0b3Bz
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgZ3JhZC0+c2V0R3JhZGllbnRTdG9wcyhncmFkaWVu
dCk7CisgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFN0b3BzKGdyYWRpZW50LmdldCgpKTsK
IAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0cikp
CiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhvZChncmFkaWVudC0+c3By
ZWFkTWV0aG9kKCkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmgJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgYnVpbGRHcmFkaWVudChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChQYXNzUmVmUHRyPEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50PikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgS0NQYWludFNlcnZl
clR5cGUgZ3JhZGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gUFNfUkFESUFMX0dSQURJRU5UOyB9
CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5o
CShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGFibGUuaCIK
KyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwotICAgIGNs
YXNzIEtDYW52YXNSZXNvdXJjZTsKICAgICBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlOwogICAgIGNs
YXNzIFJlbmRlclBhdGg7CiAgICAgY2xhc3MgUmVuZGVyVmlldzsKQEAgLTUwLDcgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0
b1BhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0g
ICAgICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpIHsgcmV0dXJu
IDA7IH0KKyAgICAgICAgdmlydHVhbCBHcmFwaGljc1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgp
IHsgcmV0dXJuIDA7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9H
cmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhp
Y3NDb250ZXh0LmNwcAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dyYXBo
aWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjk2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQotI2luY2x1ZGUgIkZvbnQuaCIKLSNpbmNsdWRlICJU
ZXh0U3R5bGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlKCkgOiBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKSwgcGFpbnRpbmdEaXNhYmxlZChmYWxzZSkg
eyB9Ci0gICAgRm9udCBmb250OwotICAgIFBlbiBwZW47Ci0gICAgQ29sb3IgZmlsbENvbG9yOwot
ICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZDsKLX07Ci0gICAgICAgIAotY2xhc3MgR3JhcGhpY3ND
b250ZXh0UHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpOwot
ICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlOwotICAgIFZlY3RvcjxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gc3RhY2s7Ci0gICAgVmVjdG9yPEludFJlY3Q+IG1fZm9jdXNSaW5nUmVj
dHM7Ci0gICAgaW50IG1fZm9jdXNSaW5nV2lkdGg7Ci0gICAgaW50IG1fZm9jdXNSaW5nT2Zmc2V0
OwotICAgIGJvb2wgbV91cGRhdGluZ0NvbnRyb2xUaW50czsKLX07Ci0KLUdyYXBoaWNzQ29udGV4
dFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFByaXZhdGUoKQotICAgIDogbV9mb2N1c1JpbmdXaWR0
aCgwKQotICAgICwgbV9mb2N1c1JpbmdPZmZzZXQoMCkKLSAgICAsIG1fdXBkYXRpbmdDb250cm9s
VGludHMoZmFsc2UpCi17Ci19Ci0KLUdyYXBoaWNzQ29udGV4dFByaXZhdGUqIEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCi17Ci0gICAgcmV0dXJuIG5ldyBH
cmFwaGljc0NvbnRleHRQcml2YXRlOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZGVzdHJv
eUdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSogZGVsZXRlTWUp
Ci17Ci0gICAgZGVsZXRlIGRlbGV0ZU1lOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2
ZSgpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb21tb24tPnN0YWNrLmFwcGVuZChtX2NvbW1vbi0+c3RhdGUpOwotICAgIAotICAgIHNh
dmVQbGF0Zm9ybVN0YXRlKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkK
LXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobV9jb21tb24tPnN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICBMT0dfRVJST1IoIkVSUk9S
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkgc3RhY2sgaXMgZW1wdHkiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2NvbW1vbi0+c3RhdGUgPSBtX2NvbW1vbi0+c3RhY2su
bGFzdCgpOwotICAgIG1fY29tbW9uLT5zdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgCi0gICAgcmVz
dG9yZVBsYXRmb3JtU3RhdGUoKTsKLX0KLQotY29uc3QgRm9udCYgR3JhcGhpY3NDb250ZXh0Ojpm
b250KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24tPnN0YXRlLmZvbnQ7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGb250KGNvbnN0IEZvbnQmIGFGb250KQotewotICAgIG1f
Y29tbW9uLT5zdGF0ZS5mb250ID0gYUZvbnQ7Ci19Ci0KLWNvbnN0IFBlbiYgR3JhcGhpY3NDb250
ZXh0OjpwZW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUucGVuOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKGNvbnN0IFBlbiYgcGVuKQotewotICAgIG1f
Y29tbW9uLT5zdGF0ZS5wZW4gPSBwZW47Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
ZW4oUGVuOjpQZW5TdHlsZSBzdHlsZSkKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFN0
eWxlKHN0eWxlKTsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldENvbG9yKENvbG9yOjpibGFj
ayk7Ci0gICAgbV9jb21tb24tPnN0YXRlLnBlbi5zZXRXaWR0aCgwKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBlbihSR0JBMzIgcmdiKQotewotICAgIG1fY29tbW9uLT5zdGF0ZS5w
ZW4uc2V0U3R5bGUoUGVuOjpTb2xpZExpbmUpOwotICAgIG1fY29tbW9uLT5zdGF0ZS5wZW4uc2V0
Q29sb3IocmdiKTsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFdpZHRoKDApOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsK
LSAgICBtX2NvbW1vbi0+c3RhdGUuZmlsbENvbG9yID0gY29sb3I7Ci19Ci0KLUNvbG9yIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24tPnN0
YXRlLmZpbGxDb2xvcjsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24tPm1fdXBkYXRpbmdDb250cm9s
VGludHM7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVcGRhdGluZ0NvbnRyb2xUaW50
cyhib29sIGIpCi17Ci0gICAgc2V0UGFpbnRpbmdEaXNhYmxlZChiKTsKLSAgICBtX2NvbW1vbi0+
bV91cGRhdGluZ0NvbnRyb2xUaW50cyA9IGI7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQYWludGluZ0Rpc2FibGVkKGJvb2wgZikKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGFpbnRp
bmdEaXNhYmxlZCA9IGY7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpwYWludGluZ0Rpc2Fi
bGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24tPnN0YXRlLnBhaW50aW5nRGlzYWJs
ZWQ7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17ICAgICAgICAKLSAgICBk
cmF3SW1hZ2UoaW1hZ2UsIHAsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3ApOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYg
ciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgZHJhd0ltYWdlKGltYWdlLCByLCBJbnRS
ZWN0KDAsIDAsIC0xLCAtMSksIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBkcmF3SW1hZ2UoaW1hZ2UsIElu
dFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBkZXN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBk
cmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwgb3ApOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCi17Ci0gICAgZHJhd1RleHQocnVuLCBwb2ludCwgVGV4dFN0eWxlKCkpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFRleHRTdHlsZSYgc3R5bGUpCi17Ci0gICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGZvbnQoKS5k
cmF3VGV4dCh0aGlzLCBydW4sIHN0eWxlLCBwb2ludCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SGlnaGxpZ2h0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEludFBv
aW50JiBwb2ludCwgaW50IGgsIGNvbnN0IFRleHRTdHlsZSYgc3R5bGUsIGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZmlsbFJlY3QoZm9udCgpLnNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwg
c3R5bGUsIHBvaW50LCBoKSwgYmFja2dyb3VuZENvbG9yKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmluaXRGb2N1c1JpbmcoaW50IHdpZHRoLCBpbnQgb2Zmc2V0KQotewotICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjbGVhckZvY3VzUmluZygp
OwotICAgIAotICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRoID0gd2lkdGg7Ci0gICAgbV9j
b21tb24tPm1fZm9jdXNSaW5nT2Zmc2V0ID0gb2Zmc2V0OwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xlYXJGb2N1c1JpbmcoKQotewotICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1JlY3Rz
LmNsZWFyKCk7Ci19Ci0KLUludFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdCb3VuZGlu
Z1JlY3QoKQotewotICAgIEludFJlY3QgcmVzdWx0ID0gSW50UmVjdCgwLCAwLCAwLCAwKTsKLSAg
ICAKLSAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0gZm9jdXNSaW5nUmVjdHMoKTsK
LSAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAgICAgICByZXN1bHQudW5pdGUocmVjdHNb
aV0pOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YWRkRm9jdXNSaW5nUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkgfHwgcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5hcHBlbmQocmVjdCk7Ci19Ci0KLWludCBHcmFw
aGljc0NvbnRleHQ6OmZvY3VzUmluZ1dpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21t
b24tPm1fZm9jdXNSaW5nV2lkdGg7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmlu
Z09mZnNldCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ09mZnNl
dDsKLX0KLQotY29uc3QgVmVjdG9yPEludFJlY3Q+JiBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmlu
Z1JlY3RzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24tPm1fZm9jdXNSaW5nUmVjdHM7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmbG9hdCB0c3cgPSBzcmMud2lkdGgoKTsKLSAgICBmbG9hdCB0c2ggPSBzcmMuaGVpZ2h0
KCk7Ci0gICAgZmxvYXQgdHcgPSBkZXN0LndpZHRoKCk7Ci0gICAgZmxvYXQgdGggPSBkZXN0Lmhl
aWdodCgpOwotICAgICAgICAKLSAgICBpZiAodHN3ID09IC0xKQotICAgICAgICB0c3cgPSBpbWFn
ZS0+d2lkdGgoKTsKLSAgICBpZiAodHNoID09IC0xKQotICAgICAgICB0c2ggPSBpbWFnZS0+aGVp
Z2h0KCk7Ci0KLSAgICBpZiAodHcgPT0gLTEpCi0gICAgICAgIHR3ID0gaW1hZ2UtPndpZHRoKCk7
Ci0gICAgaWYgKHRoID09IC0xKQotICAgICAgICB0aCA9IGltYWdlLT5oZWlnaHQoKTsKLQotICAg
IGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0
dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwg
b3ApOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbWFnZS0+ZHJhd1RpbGVk
KHRoaXMsIHJlY3QsIHNyY1BvaW50LCB0aWxlU2l6ZSwgb3ApOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBkZXN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGhSdWxlID09IEltYWdlOjpT
dHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpCi0gICAgICAgIC8vIEp1
c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3Jj
UmVjdCk7Ci0KLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIGhSdWxl
LCB2UnVsZSwgb3ApOwotfQotCi19CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNzQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0LmgJ
KHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAotI2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAot
Ci0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0jaW5jbHVkZSAiUGVuLmgiCi0jaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgot
I2luY2x1ZGUgIlVDaGFyLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBQTEFURk9STShDRykKLXR5cGVkZWYgc3RydWN0IENH
Q29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbGlmIFBMQVRGT1JNKENBSVJPKQot
dHlwZWRlZiBzdHJ1Y3QgX2NhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwotI2VsaWYgUExB
VEZPUk0oUVQpCi1jbGFzcyBRUGFpbnRlcjsKLXR5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQ7Ci0jZWxzZQotdHlwZWRlZiB2b2lkIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIHN0cnVjdCBIRENfXyogSERD
OwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNvbnN0IGludCBjTWlzc3Bl
bGxpbmdMaW5lVGhpY2tuZXNzID0gMzsKLSAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVBh
dHRlcm5XaWR0aCA9IDQ7Ci0gICAgY29uc3QgaW50IGNNaXNzcGVsbGluZ0xpbmVQYXR0ZXJuR2Fw
V2lkdGggPSAxOwotCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNzIEZvbnQ7
Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZTsKLSAgICBjbGFzcyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU7Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBQYXRoOwot
ICAgIGNsYXNzIFRleHRSdW47Ci0gICAgY2xhc3MgVGV4dFN0eWxlOwotCi0jaWZkZWYgU1ZHX1NV
UFBPUlQKLSAgICBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dDsKLSNlbmRpZgotCi0gICAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0IDogTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgICAgIH5H
cmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAKLSAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwotCi0gICAgICAgIGNvbnN0IEZvbnQmIGZvbnQo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRGb250KGNvbnN0IEZvbnQmKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IFBlbiYgcGVuKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0UGVuKGNvbnN0
IFBlbiYpOwotICAgICAgICB2b2lkIHNldFBlbihQZW46OlBlblN0eWxlKTsKLSAgICAgICAgdm9p
ZCBzZXRQZW4oUkdCQTMyKTsKLSAgICAgICAgCi0gICAgICAgIENvbG9yIGZpbGxDb2xvcigpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgICAg
IHZvaWQgc2F2ZSgpOwotICAgICAgICB2b2lkIHJlc3RvcmUoKTsKLSAgICAgICAgCi0gICAgICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2b2lkIGRyYXdMaW5lKGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmKTsKLSAgICAgICAgdm9pZCBkcmF3RWxsaXBz
ZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0FyYyhjb25zdCBJbnRSZWN0Jiwg
ZmxvYXQgdGhpY2tuZXNzLCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3Bhbik7Ci0gICAgICAg
IHZvaWQgZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2lu
dCosIGJvb2wgc2hvdWxkQW50aWFsaWFzID0gZmFsc2UpOwotCi0gICAgICAgIHZvaWQgZmlsbFJl
Y3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IENvbG9yJik7Ci0gICAgICAgIHZvaWQgZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsKLSAgICAgICAgdm9pZCBjbGVhclJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwotCi0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwg
Y29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIp
OwotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSosIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0g
ICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAg
ICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEludFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsCi0gICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2
b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QsIAotICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0g
SW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRj
aFRpbGUsCi0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIpOwotCi0gICAgICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQg
YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0
LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29u
c3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpOwotICAgICAgICB2b2lkIGFkZElubmVyUm91bmRlZFJl
Y3RDbGlwKGNvbnN0IEludFJlY3QmLCBpbnQgdGhpY2tuZXNzKTsKLQotICAgICAgICAvLyBGdW5j
dGlvbnMgdG8gd29yayBhcm91bmQgYnVncyBpbiBmb2N1cyByaW5nIGNsaXBwaW5nIG9uIE1hYy4K
LSAgICAgICAgdm9pZCBzZXRGb2N1c1JpbmdDbGlwKGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dm9pZCBjbGVhckZvY3VzUmluZ0NsaXAoKTsKLQotICAgICAgICB2b2lkIGRyYXdUZXh0KGNvbnN0
IFRleHRSdW4mLCBjb25zdCBJbnRQb2ludCYpOwotICAgICAgICB2b2lkIGRyYXdUZXh0KGNvbnN0
IFRleHRSdW4mLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IFRleHRTdHlsZSYpOwotICAgICAgICB2
b2lkIGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBJbnRQb2ludCYs
IGludCBoLCBjb25zdCBUZXh0U3R5bGUmLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKTsK
LQotICAgICAgICBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEludFBvaW50
JiwgaW50IHlPZmZzZXQsIGludCB3aWR0aCwgYm9vbCBwcmludGluZyk7Ci0gICAgICAgIHZvaWQg
ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihjb25zdCBJbnRQb2ludCYsIGludCB3
aWR0aCwgYm9vbCBncmFtbWFyKTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgcGFpbnRpbmdEaXNh
YmxlZCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFBhaW50aW5nRGlzYWJsZWQoYm9vbCk7Ci0g
ICAgICAgIAotICAgICAgICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3Q7Ci0gICAg
ICAgIHZvaWQgc2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCk7Ci0KLSAgICAgICAgdm9pZCBi
ZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwotICAgICAgICB2b2lkIGVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7Ci0KLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgSW50U2l6
ZSYsIGludCBibHVyLCBjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7
Ci0KLSAgICAgICAgdm9pZCBpbml0Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCk7Ci0g
ICAgICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZv
aWQgZHJhd0ZvY3VzUmluZyhjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGNsZWFyRm9jdXNS
aW5nKCk7Ci0gICAgICAgIEludFJlY3QgZm9jdXNSaW5nQm91bmRpbmdSZWN0KCk7Ci0KLSAgICAg
ICAgdm9pZCBzZXRMaW5lV2lkdGgoZmxvYXQpOwotICAgICAgICB2b2lkIHNldExpbmVDYXAoTGlu
ZUNhcCk7Ci0gICAgICAgIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pOwotICAgICAgICB2b2lk
IHNldE1pdGVyTGltaXQoZmxvYXQpOwotCi0gICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwot
Ci0gICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsK
LQotICAgICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYpOwotCi0gICAgICAgIHZvaWQgc2NhbGUo
Y29uc3QgRmxvYXRTaXplJik7Ci0gICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRp
YW5zKTsKLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAg
IEludFBvaW50IG9yaWdpbigpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0
KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdm9pZCBjb25jYXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0KLSNpZmRlZiBTVkdfU1VQUE9SVAotICAgICAgICBL
UmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOwot
I2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dChIREMp
OyAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZC4KLSAgICAgICAgSERDIGdldFdpbmRvd3NDb250ZXh0
KGJvb2wgc3VwcG9ydEFscGhhQmxlbmQgPSBmYWxzZSwgY29uc3QgSW50UmVjdCogPSAwKTsgLy8g
VGhlIHBhc3NlZCBpbiByZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZvciBjb21wb3Np
dGluZyBpbnNpZGUgdHJhbnNwYXJlbmN5IGxheWVycy4KLSAgICAgICAgdm9pZCByZWxlYXNlV2lu
ZG93c0NvbnRleHQoSERDLCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gZmFsc2UsIGNvbnN0IElu
dFJlY3QqID0gMCk7ICAgIC8vIFRoZSBwYXNzZWQgaW4gSERDIHNob3VsZCBiZSB0aGUgb25lIGhh
bmRlZCBiYWNrIGJ5IGdldFdpbmRvd3NDb250ZXh0LgotI2VuZGlmCi0KLSAgICBwcml2YXRlOgot
ICAgICAgICB2b2lkIHNhdmVQbGF0Zm9ybVN0YXRlKCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZVBs
YXRmb3JtU3RhdGUoKTsKLQotICAgICAgICBpbnQgZm9jdXNSaW5nV2lkdGgoKSBjb25zdDsKLSAg
ICAgICAgaW50IGZvY3VzUmluZ09mZnNldCgpIGNvbnN0OwotICAgICAgICBjb25zdCBWZWN0b3I8
SW50UmVjdD4mIGZvY3VzUmluZ1JlY3RzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIEdyYXBo
aWNzQ29udGV4dFByaXZhdGUqIGNyZWF0ZUdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKLSAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250
ZXh0UHJpdmF0ZSopOwotCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIG1fY29tbW9u
OwotICAgICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKLSAgICB9
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHRf
aApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc1R5cGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNzVHlwZXMuY3BwCShyZXZpc2lvbiAxNzQyNSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbXSA9IHsKLSAgICAi
Y2xlYXIiLAotICAgICJjb3B5IiwKLSAgICAic291cmNlLW92ZXIiLAotICAgICJzb3VyY2UtaW4i
LAotICAgICJzb3VyY2Utb3V0IiwKLSAgICAic291cmNlLWF0b3AiLAotICAgICJkZXN0aW5hdGlv
bi1vdmVyIiwKLSAgICAiZGVzdGluYXRpb24taW4iLAotICAgICJkZXN0aW5hdGlvbi1vdXQiLAot
ICAgICJkZXN0aW5hdGlvbi1hdG9wIiwKLSAgICAieG9yIiwKLSAgICAiZGFya2VyIiwKLSAgICAi
aGlnaGxpZ2h0IiwKLSAgICAibGlnaHRlciIKLX07Ci1jb25zdCBpbnQgbnVtQ29tcG9zaXRlT3Bl
cmF0b3JOYW1lcyA9IHNpemVvZihjb21wb3NpdGVPcGVyYXRvck5hbWVzKSAvIHNpemVvZihjb21w
b3NpdGVPcGVyYXRvck5hbWVzWzBdKTsKLQotYm9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNv
bnN0IFN0cmluZyYgcywgQ29tcG9zaXRlT3BlcmF0b3ImIG9wKQotewotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lczsgaSsrKQotICAgICAgICBpZiAocyA9
PSBjb21wb3NpdGVPcGVyYXRvck5hbWVzW2ldKSB7Ci0gICAgICAgICAgICBvcCA9IHN0YXRpY19j
YXN0PENvbXBvc2l0ZU9wZXJhdG9yPihpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JO
YW1lKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQotewotICAgIEFTU0VSVChvcCA+PSAwKTsKLSAgICBB
U1NFUlQob3AgPCBudW1Db21wb3NpdGVPcGVyYXRvck5hbWVzKTsKLSAgICByZXR1cm4gY29tcG9z
aXRlT3BlcmF0b3JOYW1lc1tvcF07Ci19Ci0KLWJvb2wgcGFyc2VMaW5lQ2FwKGNvbnN0IFN0cmlu
ZyYgcywgTGluZUNhcCYgY2FwKQotewotICAgIGlmIChzID09ICJidXR0IikgewotICAgICAgICBj
YXAgPSBCdXR0Q2FwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHMgPT0g
InJvdW5kIikgewotICAgICAgICBjYXAgPSBSb3VuZENhcDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIGlmIChzID09ICJzcXVhcmUiKSB7Ci0gICAgICAgIGNhcCA9IFNxdWFyZUNh
cDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
U3RyaW5nIGxpbmVDYXBOYW1lKExpbmVDYXAgY2FwKQotewotICAgIEFTU0VSVChjYXAgPj0gMCk7
Ci0gICAgQVNTRVJUKGNhcCA8IDMpOwotICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVzWzNdID0g
eyAiYnV0dCIsICJyb3VuZCIsICJzcXVhcmUiIH07Ci0gICAgcmV0dXJuIG5hbWVzW2NhcF07Ci19
Ci0KLWJvb2wgcGFyc2VMaW5lSm9pbihjb25zdCBTdHJpbmcmIHMsIExpbmVKb2luJiBqb2luKQot
ewotICAgIGlmIChzID09ICJtaXRlciIpIHsKLSAgICAgICAgam9pbiA9IE1pdGVySm9pbjsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChzID09ICJyb3VuZCIpIHsKLSAgICAg
ICAgam9pbiA9IFJvdW5kSm9pbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlm
IChzID09ICJiZXZlbCIpIHsKLSAgICAgICAgam9pbiA9IEJldmVsSm9pbjsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIGxpbmVKb2lu
TmFtZShMaW5lSm9pbiBqb2luKQotewotICAgIEFTU0VSVChqb2luID49IDApOwotICAgIEFTU0VS
VChqb2luIDwgMyk7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmFtZXNbM10gPSB7ICJtaXRlciIs
ICJyb3VuZCIsICJiZXZlbCIgfTsKLSAgICByZXR1cm4gbmFtZXNbam9pbl07Ci19Ci0KLX0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5oCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgR3JhcGhpY3NUeXBlc19o
Ci0jZGVmaW5lIEdyYXBoaWNzVHlwZXNfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBj
bGFzcyBTdHJpbmc7Ci0KLSAgICAvLyBOb3RlOiBUaGVzZSBjb25zdGFudHMgZXhhY3RseSBtYXRj
aCB0aGUgTlNDb21wb3NpdGVPcGVyYXRvciBjb25zdGFudHMgb2YKLSAgICAvLyBBcHBLaXQgb24g
TWFjIE9TIFguIElmIHRoYXQncyBldmVyIGNoYW5nZWQsIHdlJ2xsIG5lZWQgdG8gY2hhbmdlIHRo
ZSBNYWMKLSAgICAvLyBwbGF0Zm9ybSBjb2RlIHRvIG1hcCBvbmUgdG8gdGhlIG90aGVyLgotICAg
IGVudW0gQ29tcG9zaXRlT3BlcmF0b3IgewotICAgICAgICBDb21wb3NpdGVDbGVhciwKLSAgICAg
ICAgQ29tcG9zaXRlQ29weSwKLSAgICAgICAgQ29tcG9zaXRlU291cmNlT3ZlciwKLSAgICAgICAg
Q29tcG9zaXRlU291cmNlSW4sCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZU91dCwKLSAgICAgICAg
Q29tcG9zaXRlU291cmNlQXRvcCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyLAot
ICAgICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbkluLAotICAgICAgICBDb21wb3NpdGVEZXN0aW5h
dGlvbk91dCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAotICAgICAgICBDb21w
b3NpdGVYT1IsCi0gICAgICAgIENvbXBvc2l0ZVBsdXNEYXJrZXIsCi0gICAgICAgIENvbXBvc2l0
ZUhpZ2hsaWdodCwKLSAgICAgICAgQ29tcG9zaXRlUGx1c0xpZ2h0ZXIKLSAgICB9OwotCi0gICAg
ZW51bSBMaW5lQ2FwIHsgQnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9OwotCi0gICAgZW51
bSBMaW5lSm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4gfTsKLQotICAgIGVu
dW0gSG9yaXpvbnRhbEFsaWdubWVudCB7IEFsaWduTGVmdCwgQWxpZ25SaWdodCwgQWxpZ25IQ2Vu
dGVyIH07Ci0KLSAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJh
dG9yKTsKLSAgICBib29sIHBhcnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiwgQ29t
cG9zaXRlT3BlcmF0b3ImKTsKLQotICAgIFN0cmluZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKLSAg
ICBib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmLCBMaW5lQ2FwJik7Ci0KLSAgICBTdHJp
bmcgbGluZUpvaW5OYW1lKExpbmVKb2luKTsKLSAgICBib29sIHBhcnNlTGluZUpvaW4oY29uc3Qg
U3RyaW5nJiwgTGluZUpvaW4mKTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKKyNpbmNs
dWRlICJGb250LmgiCisjaW5jbHVkZSAiVGV4dFN0eWxlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
IHsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSgpIDogZmlsbENvbG9yKENvbG9yOjpibGFjayks
IHBhaW50aW5nRGlzYWJsZWQoZmFsc2UpIHsgfQorICAgIEZvbnQgZm9udDsKKyAgICBQZW4gcGVu
OworICAgIENvbG9yIGZpbGxDb2xvcjsKKyAgICBib29sIHBhaW50aW5nRGlzYWJsZWQ7Cit9Owor
ICAgICAgICAKK2NsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGUgeworcHVibGljOgorICAgIEdy
YXBoaWNzQ29udGV4dFByaXZhdGUoKTsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBz
dGF0ZTsKKyAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0U3RhdGU+IHN0YWNrOworICAgIFZlY3Rv
cjxJbnRSZWN0PiBtX2ZvY3VzUmluZ1JlY3RzOworICAgIGludCBtX2ZvY3VzUmluZ1dpZHRoOwor
ICAgIGludCBtX2ZvY3VzUmluZ09mZnNldDsKKyAgICBib29sIG1fdXBkYXRpbmdDb250cm9sVGlu
dHM7Cit9OworCitHcmFwaGljc0NvbnRleHRQcml2YXRlOjpHcmFwaGljc0NvbnRleHRQcml2YXRl
KCkKKyAgICA6IG1fZm9jdXNSaW5nV2lkdGgoMCkKKyAgICAsIG1fZm9jdXNSaW5nT2Zmc2V0KDAp
CisgICAgLCBtX3VwZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQoreworfQorCitHcmFwaGljc0Nv
bnRleHRQcml2YXRlKiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dFByaXZh
dGUoKQoreworICAgIHJldHVybiBuZXcgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHRQcml2YXRlKEdyYXBoaWNz
Q29udGV4dFByaXZhdGUqIGRlbGV0ZU1lKQoreworICAgIGRlbGV0ZSBkZWxldGVNZTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbW9uLT5zdGFjay5hcHBlbmQobV9jb21t
b24tPnN0YXRlKTsKKyAgICAKKyAgICBzYXZlUGxhdGZvcm1TdGF0ZSgpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29tbW9uLT5zdGFjay5pc0VtcHR5KCkpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJFUlJPUiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgp
IHN0YWNrIGlzIGVtcHR5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb21tb24t
PnN0YXRlID0gbV9jb21tb24tPnN0YWNrLmxhc3QoKTsKKyAgICBtX2NvbW1vbi0+c3RhY2sucmVt
b3ZlTGFzdCgpOworICAgIAorICAgIHJlc3RvcmVQbGF0Zm9ybVN0YXRlKCk7Cit9CisKK2NvbnN0
IEZvbnQmIEdyYXBoaWNzQ29udGV4dDo6Zm9udCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29t
bW9uLT5zdGF0ZS5mb250OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Rm9udChjb25z
dCBGb250JiBhRm9udCkKK3sKKyAgICBtX2NvbW1vbi0+c3RhdGUuZm9udCA9IGFGb250OworfQor
Citjb25zdCBQZW4mIEdyYXBoaWNzQ29udGV4dDo6cGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb21tb24tPnN0YXRlLnBlbjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBlbihj
b25zdCBQZW4mIHBlbikKK3sKKyAgICBtX2NvbW1vbi0+c3RhdGUucGVuID0gcGVuOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKFBlbjo6UGVuU3R5bGUgc3R5bGUpCit7CisgICAg
bV9jb21tb24tPnN0YXRlLnBlbi5zZXRTdHlsZShzdHlsZSk7CisgICAgbV9jb21tb24tPnN0YXRl
LnBlbi5zZXRDb2xvcihDb2xvcjo6YmxhY2spOworICAgIG1fY29tbW9uLT5zdGF0ZS5wZW4uc2V0
V2lkdGgoMCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQZW4oUkdCQTMyIHJnYikK
K3sKKyAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFN0eWxlKFBlbjo6U29saWRMaW5lKTsKKyAg
ICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldENvbG9yKHJnYik7CisgICAgbV9jb21tb24tPnN0YXRl
LnBlbi5zZXRXaWR0aCgwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9jb21tb24tPnN0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOworfQorCitDb2xvciBHcmFwaGljc0NvbnRleHQ6OmZpbGxDb2xvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3I7Cit9CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0Ojp1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29tbW9uLT5tX3VwZGF0aW5nQ29udHJvbFRpbnRzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCBiKQoreworICAgIHNldFBhaW50aW5nRGlz
YWJsZWQoYik7CisgICAgbV9jb21tb24tPm1fdXBkYXRpbmdDb250cm9sVGludHMgPSBiOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGFpbnRpbmdEaXNhYmxlZChib29sIGYpCit7Cisg
ICAgbV9jb21tb24tPnN0YXRlLnBhaW50aW5nRGlzYWJsZWQgPSBmOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29t
bW9uLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQoreyAgICAgICAgCisgICAgZHJhd0ltYWdlKGltYWdlLCBwLCBJbnRSZWN0KDAsIDAs
IC0xLCAtMSksIG9wKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAg
IGRyYXdJbWFnZShpbWFnZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7
CisgICAgZHJhd0ltYWdlKGltYWdlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3Jj
UmVjdCwgb3ApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdCks
IHNyY1JlY3QsIG9wKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIGRyYXdUZXh0KHJ1
biwgcG9pbnQsIFRleHRTdHlsZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBUZXh0
U3R5bGUmIHN0eWxlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBmb250KCkuZHJhd1RleHQodGhpcywgcnVuLCBzdHlsZSwgcG9pbnQp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0hpZ2hsaWdodEZvclRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGludCBoLCBjb25zdCBUZXh0U3R5
bGUmIHN0eWxlLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZpbGxSZWN0KGZvbnQoKS5z
ZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHN0eWxlLCBwb2ludCwgaCksIGJhY2tncm91bmRDb2xv
cik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojppbml0Rm9jdXNSaW5nKGludCB3aWR0aCwg
aW50IG9mZnNldCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgY2xlYXJGb2N1c1JpbmcoKTsKKyAgICAKKyAgICBtX2NvbW1vbi0+bV9mb2N1c1Jp
bmdXaWR0aCA9IHdpZHRoOworICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ09mZnNldCA9IG9mZnNl
dDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyRm9jdXNSaW5nKCkKK3sKKyAgICBt
X2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5jbGVhcigpOworfQorCitJbnRSZWN0IEdyYXBoaWNz
Q29udGV4dDo6Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKK3sKKyAgICBJbnRSZWN0IHJlc3VsdCA9
IEludFJlY3QoMCwgMCwgMCwgMCk7CisgICAgCisgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cyA9IGZvY3VzUmluZ1JlY3RzKCk7CisgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMu
c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkrKykKKyAg
ICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb21tb24tPm1fZm9jdXNSaW5nUmVjdHMuYXBw
ZW5kKHJlY3QpOworfQorCitpbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dpZHRoOworfQorCitpbnQg
R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbW1vbi0+bV9mb2N1c1JpbmdPZmZzZXQ7Cit9CisKK2NvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdSZWN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29tbW9uLT5tX2ZvY3VzUmluZ1JlY3RzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgdHN3ID0gc3JjLndpZHRoKCk7Cisg
ICAgZmxvYXQgdHNoID0gc3JjLmhlaWdodCgpOworICAgIGZsb2F0IHR3ID0gZGVzdC53aWR0aCgp
OworICAgIGZsb2F0IHRoID0gZGVzdC5oZWlnaHQoKTsKKyAgICAgICAgCisgICAgaWYgKHRzdyA9
PSAtMSkKKyAgICAgICAgdHN3ID0gaW1hZ2UtPndpZHRoKCk7CisgICAgaWYgKHRzaCA9PSAtMSkK
KyAgICAgICAgdHNoID0gaW1hZ2UtPmhlaWdodCgpOworCisgICAgaWYgKHR3ID09IC0xKQorICAg
ICAgICB0dyA9IGltYWdlLT53aWR0aCgpOworICAgIGlmICh0aCA9PSAtMSkKKyAgICAgICAgdGgg
PSBpbWFnZS0+aGVpZ2h0KCk7CisKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVz
dC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24o
KSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCByZWN0LCBzcmNQb2ludCwgdGlsZVNpemUs
IG9wKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0
cmV0Y2hUaWxlKQorICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCisgICAgICAgIHJldHVybiBk
cmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyY1JlY3QpOworCisgICAgaW1hZ2UtPmRyYXdUaWxlZCh0
aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIG9wKTsKK30KKworfQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
R3JhcGhpY3NDb250ZXh0X2gKKyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0X2gKKworI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgor
I2luY2x1ZGUgIlBlbi5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJV
Q2hhci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oQ0cpCit0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKK3R5cGVkZWYgc3Ry
dWN0IF9jYWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKFFUKQor
Y2xhc3MgUVBhaW50ZXI7Cit0eXBlZGVmIFFQYWludGVyIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
OworI2Vsc2UKK3R5cGVkZWYgdm9pZCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oV0lOKQordHlwZWRlZiBzdHJ1Y3QgSERDX18qIEhEQzsKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVRo
aWNrbmVzcyA9IDM7CisgICAgY29uc3QgaW50IGNNaXNzcGVsbGluZ0xpbmVQYXR0ZXJuV2lkdGgg
PSA0OworICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybkdhcFdpZHRoID0gMTsK
KworICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBGb250OworICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dFByaXZhdGU7CisgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlOworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgUGF0aDsKKyAgICBjbGFzcyBU
ZXh0UnVuOworICAgIGNsYXNzIFRleHRTdHlsZTsKKworI2lmZGVmIFNWR19TVVBQT1JUCisgICAg
Y2xhc3MgS1JlbmRlcmluZ0RldmljZUNvbnRleHQ7CisjZW5kaWYKKworICAgIGNsYXNzIEdyYXBo
aWNzQ29udGV4dCA6IE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOworICAgICAgICB+R3JhcGhpY3NDb250
ZXh0KCk7CisgICAgICAgCisgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9y
bUNvbnRleHQoKSBjb25zdDsKKworICAgICAgICBjb25zdCBGb250JiBmb250KCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Jik7CisgICAgICAgIAorICAgICAgICBjb25z
dCBQZW4mIHBlbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFBlbihjb25zdCBQZW4mKTsKKyAg
ICAgICAgdm9pZCBzZXRQZW4oUGVuOjpQZW5TdHlsZSk7CisgICAgICAgIHZvaWQgc2V0UGVuKFJH
QkEzMik7CisgICAgICAgIAorICAgICAgICBDb2xvciBmaWxsQ29sb3IoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKKworICAgICAgICB2b2lkIHNhdmUo
KTsKKyAgICAgICAgdm9pZCByZXN0b3JlKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBkcmF3TGluZShjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFBvaW50Jik7CisgICAgICAgIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgSW50
UmVjdCYpOworICAgICAgICB2b2lkIGRyYXdBcmMoY29uc3QgSW50UmVjdCYsIGZsb2F0IHRoaWNr
bmVzcywgaW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwYW4pOworICAgICAgICB2b2lkIGRyYXdD
b252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNo
b3VsZEFudGlhbGlhcyA9IGZhbHNlKTsKKworICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IElu
dFJlY3QmLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOworICAgICAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
bGluZVdpZHRoKTsKKworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEludFBv
aW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICB2b2lk
IGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAorICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3
VGlsZWRJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAorICAgICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3VGls
ZWRJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCAKKyAgICAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9IEltYWdlOjpTdHJl
dGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLAorICAg
ICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKworICAg
ICAgICB2b2lkIGNsaXAoY29uc3QgSW50UmVjdCYpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRS
ZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUm
IGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBhZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CisKKyAgICAgICAgLy8gRnVuY3Rpb25zIHRvIHdv
cmsgYXJvdW5kIGJ1Z3MgaW4gZm9jdXMgcmluZyBjbGlwcGluZyBvbiBNYWMuCisgICAgICAgIHZv
aWQgc2V0Rm9jdXNSaW5nQ2xpcChjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgY2xlYXJG
b2N1c1JpbmdDbGlwKCk7CisKKyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBUZXh0UnVuJiwg
Y29uc3QgSW50UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBUZXh0UnVuJiwg
Y29uc3QgSW50UG9pbnQmLCBjb25zdCBUZXh0U3R5bGUmKTsKKyAgICAgICAgdm9pZCBkcmF3SGln
aGxpZ2h0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmLCBpbnQgaCwgY29u
c3QgVGV4dFN0eWxlJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcik7CisKKyAgICAgICAg
RmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgICAg
IAorICAgICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBJbnRQb2ludCYsIGludCB5T2Zm
c2V0LCBpbnQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOworICAgICAgICB2b2lkIGRyYXdMaW5lRm9y
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoY29uc3QgSW50UG9pbnQmLCBpbnQgd2lkdGgsIGJvb2wg
Z3JhbW1hcik7CisgICAgICAgCisgICAgICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldFBhaW50aW5nRGlzYWJsZWQoYm9vbCk7CisgICAgICAgIAorICAg
ICAgICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCk7CisKKyAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFy
ZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOworICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CisKKyAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgSW50U2l6ZSYsIGludCBibHVy
LCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7CisKKyAgICAgICAg
dm9pZCBpbml0Rm9jdXNSaW5nKGludCB3aWR0aCwgaW50IG9mZnNldCk7CisgICAgICAgIHZvaWQg
YWRkRm9jdXNSaW5nUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgZHJhd0ZvY3Vz
UmluZyhjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIGNsZWFyRm9jdXNSaW5nKCk7CisgICAg
ICAgIEludFJlY3QgZm9jdXNSaW5nQm91bmRpbmdSZWN0KCk7CisKKyAgICAgICAgdm9pZCBzZXRM
aW5lV2lkdGgoZmxvYXQpOworICAgICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CisgICAg
ICAgIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pOworICAgICAgICB2b2lkIHNldE1pdGVyTGlt
aXQoZmxvYXQpOworCisgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOworCisgICAgICAgIHZv
aWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKKworICAgICAgICB2
b2lkIGNsaXAoY29uc3QgUGF0aCYpOworCisgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRT
aXplJik7CisgICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKKyAgICAg
ICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgICAgIEludFBvaW50IG9y
aWdpbigpOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwm
LCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CisKKyNpZmRlZiBTVkdfU1VQUE9SVAorICAgICAgICBLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCogY3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgICAgIEdyYXBoaWNzQ29udGV4dChIREMpOyAvLyBGSVhNRTog
VG8gYmUgcmVtb3ZlZC4KKyAgICAgICAgSERDIGdldFdpbmRvd3NDb250ZXh0KGJvb2wgc3VwcG9y
dEFscGhhQmxlbmQgPSBmYWxzZSwgY29uc3QgSW50UmVjdCogPSAwKTsgLy8gVGhlIHBhc3NlZCBp
biByZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZvciBjb21wb3NpdGluZyBpbnNpZGUg
dHJhbnNwYXJlbmN5IGxheWVycy4KKyAgICAgICAgdm9pZCByZWxlYXNlV2luZG93c0NvbnRleHQo
SERDLCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gZmFsc2UsIGNvbnN0IEludFJlY3QqID0gMCk7
ICAgIC8vIFRoZSBwYXNzZWQgaW4gSERDIHNob3VsZCBiZSB0aGUgb25lIGhhbmRlZCBiYWNrIGJ5
IGdldFdpbmRvd3NDb250ZXh0LgorI2VuZGlmCisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lk
IHNhdmVQbGF0Zm9ybVN0YXRlKCk7CisgICAgICAgIHZvaWQgcmVzdG9yZVBsYXRmb3JtU3RhdGUo
KTsKKworICAgICAgICBpbnQgZm9jdXNSaW5nV2lkdGgoKSBjb25zdDsKKyAgICAgICAgaW50IGZv
Y3VzUmluZ09mZnNldCgpIGNvbnN0OworICAgICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIGZv
Y3VzUmluZ1JlY3RzKCkgY29uc3Q7CisKKyAgICAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dFBy
aXZhdGUqIGNyZWF0ZUdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUoR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSop
OworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIG1fY29tbW9uOworICAgICAgICBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHRfaApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2UuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlLmgiCisKKyNpbmNsdWRlICJL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCisjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHcmFwaGljc1Jlc291cmNlOjpHcmFwaGljc1Jlc291cmNlKCkKK3sK
K30KKworR3JhcGhpY3NSZXNvdXJjZTo6fkdyYXBoaWNzUmVzb3VyY2UoKQoreworfQorCit2b2lk
IEdyYXBoaWNzUmVzb3VyY2U6OmludmFsaWRhdGUoKQoreworICAgIFJlbmRlclBhdGhMaXN0OjpD
b25zdEl0ZXJhdG9yIGl0ID0gbV9jbGllbnRzLmJlZ2luKCk7CisgICAgUmVuZGVyUGF0aExpc3Q6
OkNvbnN0SXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVuZCgpOworCisgICAgZm9yKDsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBjb25zdF9jYXN0PFJlbmRlclBhdGgqPigqaXQpLT5yZXBhaW50
KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNvdXJjZTo6YWRkQ2xpZW50KGNvbnN0IFJlbmRlclBh
dGgqIGl0ZW0pCit7CisgICAgaWYobV9jbGllbnRzLmZpbmQoaXRlbSkgIT0gbV9jbGllbnRzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudHMuYXBwZW5kKGl0ZW0pOworfQor
Citjb25zdCBSZW5kZXJQYXRoTGlzdCYgR3JhcGhpY3NSZXNvdXJjZTo6Y2xpZW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2xpZW50czsKK30KKworU3RyaW5nIEdyYXBoaWNzUmVzb3VyY2U6
OmlkSW5SZWdpc3RyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVnaXN0cnlJZDsKK30KKwor
dm9pZCBHcmFwaGljc1Jlc291cmNlOjpzZXRJZEluUmVnaXN0cnkoY29uc3QgU3RyaW5nJiBpZCkK
K3sKKyAgICBtX3JlZ2lzdHJ5SWQgPSBpZDsKK30KKworVGV4dFN0cmVhbSYgR3JhcGhpY3NSZXNv
dXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHM7Cit9CisKK0dyYXBoaWNzUmVzb3VyY2UqIGdldFJlc291cmNlQnlJZChEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgaWYgKGlkLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9j
dW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0g
c3ZnX2R5bmFtaWNfY2FzdChlbGVtZW50KTsKKworICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0Vs
ZW1lbnQtPmlzU3R5bGVkKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRF
bGVtZW50Kj4oc3ZnRWxlbWVudCktPmNhbnZhc1Jlc291cmNlKCk7CisKKyAgICByZXR1cm4gMDsK
K30KKworS1JlbmRlcmluZ1BhaW50U2VydmVyKiBnZXRQYWludFNlcnZlckJ5SWQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIEdyYXBoaWNzUmVzb3Vy
Y2UqIHJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJl
c291cmNlICYmIHJlc291cmNlLT5pc1BhaW50U2VydmVyKCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqPihyZXNvdXJjZSk7CisKKyAgICByZXR1cm4g
MDsKK30KKworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBH
cmFwaGljc1Jlc291cmNlJiByKQoreworICAgIHJldHVybiByLmV4dGVybmFsUmVwcmVzZW50YXRp
b24odHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHcmFwaGljc1Jlc291cmNl
X0gKKyNkZWZpbmUgR3JhcGhpY3NSZXNvdXJjZV9ICisKKyNpbmNsdWRlICJTaGFyZWQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3Qu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xh
c3MgUmVuZGVyUGF0aDsKKyAgICBjbGFzcyBUZXh0U3RyZWFtOworICAgIGNsYXNzIEF0b21pY1N0
cmluZzsKKyAgICBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI7CisKKyAgICB0eXBlZGVmIERl
cHJlY2F0ZWRWYWx1ZUxpc3Q8Y29uc3QgUmVuZGVyUGF0aCo+IFJlbmRlclBhdGhMaXN0OworCisg
ICAgZW51bSBHcmFwaGljc1Jlc291cmNlVHlwZSB7CisgICAgICAgIC8vIFBhaW50aW5nIG1vZGUK
KyAgICAgICAgUlNfQ0xJUFBFUiA9IDAsCisgICAgICAgIFJTX01BUktFUiA9IDEsCisgICAgICAg
IFJTX0lNQUdFID0gMiwKKyAgICAgICAgUlNfRklMVEVSID0gMywKKyAgICAgICAgUlNfTUFTS0VS
ID0gNAorICAgIH07CisKKyAgICAvLyBUaGUgR3JhcGhpY3NSZXNvdXJjZSBmaWxlIHJlcHJlc2Vu
dCB2YXJpb3VzIGdyYXBoaWNzIHJlc291cmNlczoKKyAgICAvLyAtIEZpbHRlciByZXNvdXJjZQor
ICAgIC8vIC0gQ2xpcHBlciByZXNvdXJjZQorICAgIC8vIC0gTWFza2VyIHJlc291cmNlCisgICAg
Ly8gLSBNYXJrZXIgcmVzb3VyY2UKKyAgICAvLyAtIFBhdHRlcm4gcmVzb3VyY2UKKyAgICAvLyAt
IExpbmVhci9SYWRpYWwgZ3JhZGllbnQgcmVzb3VyY2UKKyAgICAvLworICAgIC8vIFNWRyBjcmVh
dGVzL3VzZXMgdGhlc2UgcmVzb3VyY2VzLgorCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZSA6
IHB1YmxpYyBTaGFyZWQ8R3JhcGhpY3NSZXNvdXJjZT4geworICAgIHB1YmxpYzoKKyAgICAgICAg
R3JhcGhpY3NSZXNvdXJjZSgpOworICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc1Jlc291cmNlKCk7
CisgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICAgICAgdm9p
ZCBhZGRDbGllbnQoY29uc3QgUmVuZGVyUGF0aCopOworCisgICAgICAgIGNvbnN0IFJlbmRlclBh
dGhMaXN0JiBjbGllbnRzKCkgY29uc3Q7CisKKyAgICAgICAgU3RyaW5nIGlkSW5SZWdpc3RyeSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25zdCBTdHJpbmcmKTsKKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcgbV9y
ZWdpc3RyeUlkOworICAgICAgICBSZW5kZXJQYXRoTGlzdCBtX2NsaWVudHM7CisgICAgfTsKKwor
ICAgIC8vIEhlbHBlciBjbGFzcyBub3RpZnlpbmcgYWJvdXQgY2hhbmdlcyBpbiB0aGUgcmVzb3Vy
Y2VzCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyCisgICAgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZUxpc3RlbmVyKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZU5vdGlmaWNhdGlvbigpIGNvbnN0ID0gMDsKKyAgICB9
OworCisgICAgR3JhcGhpY3NSZXNvdXJjZSogZ2V0UmVzb3VyY2VCeUlkKERvY3VtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKiBnZXRQYWludFNl
cnZlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzUmVzb3VyY2UmKTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3JhcGhpY3NSZXNvdXJjZV9ICklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3Vy
Y2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NSZXNvdXJjZUNsaXBwZXIuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
cmFwaGljc1Jlc291cmNlQ2xpcHBlcjo6R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIoKQorICAgIDog
R3JhcGhpY3NSZXNvdXJjZSgpCit7Cit9CisKK0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyOjp+R3Jh
cGhpY3NSZXNvdXJjZUNsaXBwZXIoKQoreworfQorCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VDbGlw
cGVyOjpyZXNldENsaXBEYXRhKCkKK3sKKyAgICBtX2NsaXBEYXRhLmNsZWFyKCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXI6OmFkZENsaXBEYXRhKGNvbnN0IFBhdGgmIHBhdGgs
IFdpbmRSdWxlIHJ1bGUsIGJvb2wgYmJveFVuaXRzKQoreworICAgIG1fY2xpcERhdGEuYWRkUGF0
aChwYXRoLCBydWxlLCBiYm94VW5pdHMpOworfQorCitjb25zdCBDbGlwRGF0YUxpc3QmIEdyYXBo
aWNzUmVzb3VyY2VDbGlwcGVyOjpjbGlwRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xp
cERhdGE7Cit9CisKK1RleHRTdHJlYW0mIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlw
ZT1DTElQUEVSXSI7CisgICAgdHMgPDwgIiBbY2xpcCBkYXRhPSIgPDwgY2xpcERhdGEoKSA8PCAi
XSI7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBXaW5kUnVsZSBydWxlKQoreworICAgIHN3aXRjaCAocnVsZSkgeworICAgICAgICBj
YXNlIFJVTEVfTk9OWkVSTzoKKyAgICAgICAgICAgIHRzIDw8ICJOT04tWkVSTyI7IGJyZWFrOwor
ICAgICAgICBjYXNlIFJVTEVfRVZFTk9ERDoKKyAgICAgICAgICAgIHRzIDw8ICJFVkVOLU9ERCI7
IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcERhdGEmIGQpCit7CisgICAgdHMgPDwgIlt3
aW5kaW5nPSIgPDwgZC53aW5kUnVsZSA8PCAiXSI7CisKKyAgICBpZiAoZC5iYm94VW5pdHMpCisg
ICAgICAgIHRzIDw8ICIgW2JvdW5kaW5nIGJveCBtb2RlPSIgPDwgZC5iYm94VW5pdHMgPDwgIl0i
OworCisgICAgdHMgPDwgIiBbcGF0aD0iIDw8IGQucGF0aC5kZWJ1Z1N0cmluZygpIDw8ICJdIjsK
KyAgICByZXR1cm4gdHM7Cit9CisKK0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKiBnZXRDbGlwcGVy
QnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAg
R3JhcGhpY3NSZXNvdXJjZSogcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9jdW1lbnQsIGlk
KTsKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzQ2xpcHBlcigpKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIqPihyZXNvdXJjZSk7CisK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJj
ZUNsaXBwZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBHcmFwaGljc1Jlc291cmNlQ2xpcHBlcl9ICisjZGVmaW5lIEdyYXBoaWNzUmVz
b3VyY2VDbGlwcGVyX0gKKworI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2UuaCIKKyNpbmNsdWRl
ICJQYXRoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDbGlwRGF0YSB7
CisgICAgICAgIFBhdGggcGF0aDsKKyAgICAgICAgV2luZFJ1bGUgd2luZFJ1bGU7CisgICAgICAg
IGJvb2wgYmJveFVuaXRzIDogMTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IFN0ZXAgYXdheSBm
cm9tIERlcHJlY2F0ZWRWYWx1ZUxpc3QKKyAgICBjbGFzcyBDbGlwRGF0YUxpc3QgOiBwdWJsaWMg
RGVwcmVjYXRlZFZhbHVlTGlzdDxDbGlwRGF0YT4geworICAgIHB1YmxpYzoKKyAgICAgICAgaW5s
aW5lIHZvaWQgYWRkUGF0aChjb25zdCBQYXRoJiBwYXRoRGF0YSwgV2luZFJ1bGUgd2luZFJ1bGUs
IGJvb2wgYmJveFVuaXRzKQorICAgICAgICB7CisgICAgICAgICAgICBDbGlwRGF0YSBjbGlwRGF0
YTsKKworICAgICAgICAgICAgY2xpcERhdGEucGF0aCA9IHBhdGhEYXRhOworICAgICAgICAgICAg
Y2xpcERhdGEud2luZFJ1bGUgPSB3aW5kUnVsZTsKKyAgICAgICAgICAgIGNsaXBEYXRhLmJib3hV
bml0cyA9IGJib3hVbml0czsKKyAgICAgICAgCisgICAgICAgICAgICBhcHBlbmQoY2xpcERhdGEp
OworICAgICAgICB9CisgICAgfTsKKworICAgIGNsYXNzIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVy
IDogcHVibGljIEdyYXBoaWNzUmVzb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgR3JhcGhp
Y3NSZXNvdXJjZUNsaXBwZXIoKTsKKyAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZUNs
aXBwZXIoKTsKKyAgICAgIAorICAgICAgICB2b2lkIHJlc2V0Q2xpcERhdGEoKTsKKyAgICAgICAg
dm9pZCBhZGRDbGlwRGF0YShjb25zdCBQYXRoJiwgV2luZFJ1bGUsIGJvb2wgYmJveFVuaXRzKTsK
KworICAgICAgICBjb25zdCBDbGlwRGF0YUxpc3QmIGNsaXBEYXRhKCkgY29uc3Q7CisKKyAgICAg
ICAgdmlydHVhbCBib29sIGlzQ2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
KSBjb25zdDsKKworICAgICAgICAvLyBUbyBiZSBpbXBsZW1lbnRlZCBieSB0aGUgc3BlY2lmaWMg
cmVuZGVyaW5nIGRldmljZXMKKyAgICAgICAgdm9pZCBhcHBseUNsaXAoY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDbGlwRGF0YUxp
c3QgbV9jbGlwRGF0YTsKKyAgICB9OworCisgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgV2luZFJ1bGUpOworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IENsaXBEYXRhJik7CisKKyAgICBHcmFwaGljc1Jlc291cmNlQ2xpcHBlciogZ2V0
Q2xpcHBlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJfSApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VJbWFn
ZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jl
c291cmNlSW1hZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBHcmFwaGljc1Jlc291cmNlSW1hZ2VfSAorI2RlZmluZSBHcmFwaGljc1Jl
c291cmNlSW1hZ2VfSAorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
UmVzb3VyY2UuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgc3RydWN0IENHQ29udGV4
dCAqQ0dDb250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dMYXllciAqQ0dMYXllclJlZjsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBJbWFnZTsKKyAgICBjbGFz
cyBJbnRTaXplOworCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZUltYWdlIDogcHVibGljIEdy
YXBoaWNzUmVzb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgR3JhcGhpY3NSZXNvdXJjZUlt
YWdlKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisJdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZUlt
YWdlKCk7CisjZW5kaWYKKworICAgICAgICAvLyBUbyBiZSBpbXBsZW1lbnRlZCBieSB0aGUgc3Bl
Y2lmaWMgcmVuZGVyaW5nIGRldmljZXMgCisgICAgICAgIHZvaWQgaW5pdChjb25zdCBJbWFnZSYp
OworICAgICAgICB2b2lkIGluaXQoSW50U2l6ZSk7CisKKyAgICAgICAgSW50U2l6ZSBzaXplKCkg
Y29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIENHTGF5ZXJSZWYgY2dMYXllcigp
OworICAgICAgICB2b2lkIHNldENHTGF5ZXIoQ0dMYXllclJlZiBsYXllcik7CisgICAgCisgICAg
cHJpdmF0ZToKKyAgICAgICAgSW50U2l6ZSBtX3NpemU7CisgICAgICAgIENHTGF5ZXJSZWYgbV9j
Z0xheWVyOworI2VuZGlmCisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gR3JhcGhpY3NSZXNvdXJjZUltYWdlX0gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJjZU1hcmtlci5oIgorCisjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OkdyYXBoaWNz
UmVzb3VyY2VNYXJrZXIoKQorICAgIDogR3JhcGhpY3NSZXNvdXJjZSgpCisgICAgLCBtX3JlZlgo
MC4wKQorICAgICwgbV9yZWZZKDAuMCkKKyAgICAsIG1fYW5nbGUoLTEpIC8vIGp1c3QgbGlrZSB1
c2luZyBzZXRBdXRvQW5nbGUoKQorICAgICwgbV9tYXJrZXIoMCkKKyAgICAsIG1fdXNlU3Ryb2tl
V2lkdGgodHJ1ZSkKK3sKK30KKworR3JhcGhpY3NSZXNvdXJjZU1hcmtlcjo6fkdyYXBoaWNzUmVz
b3VyY2VNYXJrZXIoKQoreworfQorCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXI6OnNldE1h
cmtlcihSZW5kZXJTVkdDb250YWluZXIqIG1hcmtlcikKK3sKKyAgICBtX21hcmtlciA9IG1hcmtl
cjsKK30KKwordm9pZCBHcmFwaGljc1Jlc291cmNlTWFya2VyOjpzZXRSZWYoZG91YmxlIHJlZlgs
IGRvdWJsZSByZWZZKQoreworICAgIG1fcmVmWCA9IHJlZlg7CisgICAgbV9yZWZZID0gcmVmWTsK
K30KKwordm9pZCBHcmFwaGljc1Jlc291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJs
ZSBzdHJva2VXaWR0aCwgZG91YmxlIGFuZ2xlKQoreworICAgIGlmICghbV9tYXJrZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgdHJhbnNm
b3JtLnRyYW5zbGF0ZSh4LCB5KTsKKyAgICB0cmFuc2Zvcm0ucm90YXRlKG1fYW5nbGUgPiAtMSA/
IG1fYW5nbGUgOiBhbmdsZSk7CisKKyAgICAvLyByZWZYIGFuZCByZWZZIGFyZSBnaXZlbiBpbiBj
b29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQgZXN0YWJsaXNoZWQgYnkgdGhlIG1h
cmtlciwgeWV0IHRoZXkgYWZmZWN0CisgICAgLy8gdGhlIHRyYW5zbGF0aW9uIHBlcmZvcm1lZCBv
biB0aGUgdmlld3BvcnQgaXRzZWxmLgorICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5z
Zm9ybTsKKyAgICBpZiAobV91c2VTdHJva2VXaWR0aCkKKyAgICAgICAgdmlld3BvcnRUcmFuc2Zv
cm0uc2NhbGUoc3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKKyAgICBpZiAoIW1fbWFya2VyLT52
aWV3Qm94KCkuaXNFbXB0eSgpKQorICAgICAgICB2aWV3cG9ydFRyYW5zZm9ybSAqPSBtX21hcmtl
ci0+dmlld3BvcnRUcmFuc2Zvcm0oKTsKKyAgICBkb3VibGUgcmVmWCwgcmVmWTsKKyAgICB2aWV3
cG9ydFRyYW5zZm9ybS5tYXAobV9yZWZYLCBtX3JlZlksICZyZWZYLCAmcmVmWSk7CisgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZSgtcmVmWCwgLXJlZlkpOworCisgICAgaWYgKG1fdXNlU3Ryb2tlV2lk
dGgpCisgICAgICAgIHRyYW5zZm9ybS5zY2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOwor
CisgICAgLy8gRklYTUU6IFBhaW50SW5mbyBzaG91bGQgYmUgcGFzc2VkIGludG8gdGhpcyBtZXRo
b2QgaW5zdGVhZCBvZiBiZWluZyBjcmVhdGVkIGhlcmUKKyAgICAvLyBGSVhNRTogYm91bmRpbmcg
Ym94IGZyYWN0aW9ucyBhcmUgbG9zdAorICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8o
Y29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIDAs
IDAsIDApOworCisgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQtPmNvbmNhdENUTSh0
cmFuc2Zvcm0pOworICAgIG1fbWFya2VyLT5zZXREcmF3c0NvbnRlbnRzKHRydWUpOworICAgIG1f
bWFya2VyLT5wYWludChpbmZvLCAwLCAwKTsKKyAgICBtX21hcmtlci0+c2V0RHJhd3NDb250ZW50
cyhmYWxzZSk7CisgICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCitUZXh0U3RyZWFtJiBHcmFw
aGljc1Jlc291cmNlTWFya2VyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
KSBjb25zdAoreworICAgIHRzIDw8ICJbdHlwZT1NQVJLRVJdIgorICAgICAgICA8PCAiIFthbmds
ZT0iOworCisgICAgaWYgKGFuZ2xlKCkgPT0gLTEpCisgICAgICAgIHRzIDw8ICJhdXRvIiA8PCAi
XSI7CisgICAgZWxzZQorICAgICAgICB0cyA8PCBhbmdsZSgpIDw8ICJdIjsKKworICAgIHRzIDw8
ICIgW3JlZiB4PSIgPDwgcmVmWCgpIDw8ICIgeT0iIDw8IHJlZlkoKSA8PCAiXSI7CisgICAgcmV0
dXJuIHRzOworfQorCitHcmFwaGljc1Jlc291cmNlTWFya2VyKiBnZXRNYXJrZXJCeUlkKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK3sKKyAgICBHcmFwaGljc1Jl
c291cmNlKiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOworICAgIGlm
IChyZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNNYXJrZXIoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIqPihyZXNvdXJjZSk7CisKKyAgICByZXR1cm4g
MDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFya2VyLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXJrZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHcmFw
aGljc1Jlc291cmNlTWFya2VyX0gKKyNkZWZpbmUgR3JhcGhpY3NSZXNvdXJjZU1hcmtlcl9ICisK
KyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgY2xh
c3MgUmVuZGVyU1ZHQ29udGFpbmVyOworCisgICAgY2xhc3MgR3JhcGhpY3NSZXNvdXJjZU1hcmtl
ciA6IHB1YmxpYyBHcmFwaGljc1Jlc291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdyYXBo
aWNzUmVzb3VyY2VNYXJrZXIoKTsKKyAgICAgICAgdmlydHVhbCB+R3JhcGhpY3NSZXNvdXJjZU1h
cmtlcigpOworCisgICAgICAgIHZvaWQgc2V0TWFya2VyKFJlbmRlclNWR0NvbnRhaW5lciopOwor
CisgICAgICAgIHZvaWQgc2V0UmVmKGRvdWJsZSByZWZYLCBkb3VibGUgcmVmWSk7CisgICAgICAg
IGRvdWJsZSByZWZYKCkgY29uc3QgeyByZXR1cm4gbV9yZWZYOyB9CisgICAgICAgIGRvdWJsZSBy
ZWZZKCkgY29uc3QgeyByZXR1cm4gbV9yZWZZOyB9CisKKyAgICAgICAgdm9pZCBzZXRBbmdsZShm
bG9hdCBhbmdsZSkgeyBtX2FuZ2xlID0gYW5nbGU7IH0KKyAgICAgICAgdm9pZCBzZXRBdXRvQW5n
bGUoKSB7IG1fYW5nbGUgPSAtMTsgfQorICAgICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5nbGU7IH0KKworICAgICAgICB2b2lkIHNldFVzZVN0cm9rZVdpZHRoKGJvb2wgdXNl
U3Ryb2tlV2lkdGggPSB0cnVlKSB7IG1fdXNlU3Ryb2tlV2lkdGggPSB1c2VTdHJva2VXaWR0aDsg
fQorICAgICAgICBib29sIHVzZVN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV91c2VTdHJv
a2VXaWR0aDsgfQorCisgICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCA9IDEsIGRv
dWJsZSBhbmdsZSA9IDApOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc01hcmtlcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAg
IGRvdWJsZSBtX3JlZlgsIG1fcmVmWTsKKyAgICAgICAgZmxvYXQgbV9hbmdsZTsKKyAgICAgICAg
UmVuZGVyU1ZHQ29udGFpbmVyKiBtX21hcmtlcjsKKyAgICAgICAgYm9vbCBtX3VzZVN0cm9rZVdp
ZHRoOworICAgIH07CisKKyAgICBHcmFwaGljc1Jlc291cmNlTWFya2VyKiBnZXRNYXJrZXJCeUlk
KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXJfSApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1Jlc291cmNl
TWFza2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIu
aCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNl
SW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGljc1Jlc291cmNlTWFza2Vy
OjpHcmFwaGljc1Jlc291cmNlTWFza2VyKCkKKyAgICA6IEdyYXBoaWNzUmVzb3VyY2UoKQorewor
fQorCitHcmFwaGljc1Jlc291cmNlTWFza2VyOjp+R3JhcGhpY3NSZXNvdXJjZU1hc2tlcigpCit7
Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNvdXJjZU1hc2tlcjo6c2V0TWFzayhjb25zdCBQYXNzUmVm
UHRyPEdyYXBoaWNzUmVzb3VyY2VJbWFnZT4mIG1hc2spCit7CisgICAgbV9tYXNrID0gbWFzazsK
K30KKworR3JhcGhpY3NSZXNvdXJjZUltYWdlKiBHcmFwaGljc1Jlc291cmNlTWFza2VyOjptYXNr
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXNrLmdldCgpOworfQorCitUZXh0U3RyZWFtJiBH
cmFwaGljc1Jlc291cmNlTWFza2VyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlwZT1NQVNLRVJdIjsKKyAgICByZXR1cm4gdHM7
Cit9CisKK0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIqIGdldE1hc2tlckJ5SWQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIEdyYXBoaWNzUmVzb3VyY2Uq
IHJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJlc291
cmNlICYmIHJlc291cmNlLT5pc01hc2tlcigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R3JhcGhpY3NSZXNvdXJjZU1hc2tlcio+KHJlc291cmNlKTsKKworICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzUmVz
b3VyY2VNYXNrZXJfSAorI2RlZmluZSBHcmFwaGljc1Jlc291cmNlTWFza2VyX0gKKworI2luY2x1
ZGUgIkdyYXBoaWNzUmVzb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgRmxvYXRSZWN0OworICAgIGNsYXNzIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTsKKworICAgIGNs
YXNzIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIgOiBwdWJsaWMgR3JhcGhpY3NSZXNvdXJjZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBHcmFwaGljc1Jlc291cmNlTWFza2VyKCk7CisgICAgICAgIHZp
cnR1YWwgfkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIoKTsKKworICAgICAgICB2b2lkIHNldE1hc2so
Y29uc3QgUGFzc1JlZlB0cjxHcmFwaGljc1Jlc291cmNlSW1hZ2U+Jik7CisgICAgICAgIEdyYXBo
aWNzUmVzb3VyY2VJbWFnZSogbWFzaygpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c01hc2tlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKKworICAgICAg
ICAvLyBUbyBiZSBpbXBsZW1lbnRlZCBieSB0aGUgc3BlY2lmaWMgcmVuZGVyaW5nIGRldmljZXMK
KyAgICAgICAgdm9pZCBhcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29u
c3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWZQdHI8R3JhcGhpY3NSZXNvdXJjZUltYWdl
PiBtX21hc2s7CisgICAgfTsKKworICAgIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIqIGdldE1hc2tl
ckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gR3JhcGhpY3NSZXNvdXJjZU1hc2tlcl9ICkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgY29tcG9zaXRlT3BlcmF0b3JOYW1lc1tdID0g
eworICAgICJjbGVhciIsCisgICAgImNvcHkiLAorICAgICJzb3VyY2Utb3ZlciIsCisgICAgInNv
dXJjZS1pbiIsCisgICAgInNvdXJjZS1vdXQiLAorICAgICJzb3VyY2UtYXRvcCIsCisgICAgImRl
c3RpbmF0aW9uLW92ZXIiLAorICAgICJkZXN0aW5hdGlvbi1pbiIsCisgICAgImRlc3RpbmF0aW9u
LW91dCIsCisgICAgImRlc3RpbmF0aW9uLWF0b3AiLAorICAgICJ4b3IiLAorICAgICJkYXJrZXIi
LAorICAgICJoaWdobGlnaHQiLAorICAgICJsaWdodGVyIgorfTsKK2NvbnN0IGludCBudW1Db21w
b3NpdGVPcGVyYXRvck5hbWVzID0gc2l6ZW9mKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpIC8gc2l6
ZW9mKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbMF0pOworCitib29sIHBhcnNlQ29tcG9zaXRlT3Bl
cmF0b3IoY29uc3QgU3RyaW5nJiBzLCBDb21wb3NpdGVPcGVyYXRvciYgb3ApCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1Db21wb3NpdGVPcGVyYXRvck5hbWVzOyBpKyspCisgICAgICAg
IGlmIChzID09IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbaV0pIHsKKyAgICAgICAgICAgIG9wID0g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KGkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBjb21wb3NpdGVP
cGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAgQVNTRVJUKG9wID49IDAp
OworICAgIEFTU0VSVChvcCA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOworICAgIHJldHVy
biBjb21wb3NpdGVPcGVyYXRvck5hbWVzW29wXTsKK30KKworYm9vbCBwYXJzZUxpbmVDYXAoY29u
c3QgU3RyaW5nJiBzLCBMaW5lQ2FwJiBjYXApCit7CisgICAgaWYgKHMgPT0gImJ1dHQiKSB7Cisg
ICAgICAgIGNhcCA9IEJ1dHRDYXA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBp
ZiAocyA9PSAicm91bmQiKSB7CisgICAgICAgIGNhcCA9IFJvdW5kQ2FwOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0gInNxdWFyZSIpIHsKKyAgICAgICAgY2FwID0g
U3F1YXJlQ2FwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitTdHJpbmcgbGluZUNhcE5hbWUoTGluZUNhcCBjYXApCit7CisgICAgQVNTRVJUKGNh
cCA+PSAwKTsKKyAgICBBU1NFUlQoY2FwIDwgMyk7CisgICAgY29uc3QgY2hhciogY29uc3QgbmFt
ZXNbM10gPSB7ICJidXR0IiwgInJvdW5kIiwgInNxdWFyZSIgfTsKKyAgICByZXR1cm4gbmFtZXNb
Y2FwXTsKK30KKworYm9vbCBwYXJzZUxpbmVKb2luKGNvbnN0IFN0cmluZyYgcywgTGluZUpvaW4m
IGpvaW4pCit7CisgICAgaWYgKHMgPT0gIm1pdGVyIikgeworICAgICAgICBqb2luID0gTWl0ZXJK
b2luOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0gInJvdW5kIikg
eworICAgICAgICBqb2luID0gUm91bmRKb2luOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgaWYgKHMgPT0gImJldmVsIikgeworICAgICAgICBqb2luID0gQmV2ZWxKb2luOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcg
bGluZUpvaW5OYW1lKExpbmVKb2luIGpvaW4pCit7CisgICAgQVNTRVJUKGpvaW4gPj0gMCk7Cisg
ICAgQVNTRVJUKGpvaW4gPCAzKTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lc1szXSA9IHsg
Im1pdGVyIiwgInJvdW5kIiwgImJldmVsIiB9OworICAgIHJldHVybiBuYW1lc1tqb2luXTsKK30K
KworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBHcmFwaGljc1R5cGVzX2gKKyNkZWZpbmUgR3JhcGhpY3NUeXBlc19oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFN0cmluZzsKKworICAgIC8vIE5vdGU6
IFRoZXNlIGNvbnN0YW50cyBleGFjdGx5IG1hdGNoIHRoZSBOU0NvbXBvc2l0ZU9wZXJhdG9yIGNv
bnN0YW50cyBvZgorICAgIC8vIEFwcEtpdCBvbiBNYWMgT1MgWC4gSWYgdGhhdCdzIGV2ZXIgY2hh
bmdlZCwgd2UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIE1hYworICAgIC8vIHBsYXRmb3JtIGNvZGUg
dG8gbWFwIG9uZSB0byB0aGUgb3RoZXIuCisgICAgZW51bSBDb21wb3NpdGVPcGVyYXRvciB7Cisg
ICAgICAgIENvbXBvc2l0ZUNsZWFyLAorICAgICAgICBDb21wb3NpdGVDb3B5LAorICAgICAgICBD
b21wb3NpdGVTb3VyY2VPdmVyLAorICAgICAgICBDb21wb3NpdGVTb3VyY2VJbiwKKyAgICAgICAg
Q29tcG9zaXRlU291cmNlT3V0LAorICAgICAgICBDb21wb3NpdGVTb3VyY2VBdG9wLAorICAgICAg
ICBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIsCisgICAgICAgIENvbXBvc2l0ZURlc3RpbmF0aW9u
SW4sCisgICAgICAgIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0LAorICAgICAgICBDb21wb3NpdGVE
ZXN0aW5hdGlvbkF0b3AsCisgICAgICAgIENvbXBvc2l0ZVhPUiwKKyAgICAgICAgQ29tcG9zaXRl
UGx1c0RhcmtlciwKKyAgICAgICAgQ29tcG9zaXRlSGlnaGxpZ2h0LAorICAgICAgICBDb21wb3Np
dGVQbHVzTGlnaHRlcgorICAgIH07CisKKyAgICBlbnVtIExpbmVDYXAgeyBCdXR0Q2FwLCBSb3Vu
ZENhcCwgU3F1YXJlQ2FwIH07CisKKyAgICBlbnVtIExpbmVKb2luIHsgTWl0ZXJKb2luLCBSb3Vu
ZEpvaW4sIEJldmVsSm9pbiB9OworCisgICAgZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsgQWxp
Z25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhDZW50ZXIgfTsKKworICAgIFN0cmluZyBjb21wb3Np
dGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIGJvb2wgcGFyc2VDb21wb3Np
dGVPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBDb21wb3NpdGVPcGVyYXRvciYpOworCisgICAgU3Ry
aW5nIGxpbmVDYXBOYW1lKExpbmVDYXApOworICAgIGJvb2wgcGFyc2VMaW5lQ2FwKGNvbnN0IFN0
cmluZyYsIExpbmVDYXAmKTsKKworICAgIFN0cmluZyBsaW5lSm9pbk5hbWUoTGluZUpvaW4pOwor
ICAgIGJvb2wgcGFyc2VMaW5lSm9pbihjb25zdCBTdHJpbmcmLCBMaW5lSm9pbiYpOworCit9CisK
KyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291
cmNlQ2xpcHBlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzUmVzb3VyY2VDbGlwcGVyUXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlQ2xpcHBlclF0LmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAg
ICAgICAgICAgICAgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgorCisgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1Jlc291cmNlQ2xpcHBlci5oIgorCisjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZVF0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBHcmFwaGljc1Jlc291cmNlQ2xpcHBl
cjo6YXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAg
S1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQgPSByZW5kZXJpbmdEZXZpY2UoKS0+Y3Vy
cmVudENvbnRleHQoKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0KiBxdENvbnRleHQg
PSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0Kj4oY29udGV4dCk7CisgICAg
aWYgKG1fY2xpcERhdGEuY291bnQoKSA8IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRl
eHQtPmNsZWFyUGF0aCgpOworCisgICAgUVBhaW50ZXJQYXRoIG5ld1BhdGg7CisKKyAgICBib29s
IGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IGZhbHNlOworICAgIFdpbmRSdWxlIGNsaXBSdWxlID0g
bV9jbGlwRGF0YVswXS53aW5kUnVsZTsKKworICAgIGZvciAodW5zaWduZWQgaW50IHggPSAwOyB4
IDwgbV9jbGlwRGF0YS5jb3VudCgpOyB4KyspIHsKKyAgICAgICAgQ2xpcERhdGEgY2xpcERhdGEg
PSBtX2NsaXBEYXRhW3hdOworICAgICAgICBpZiAoY2xpcERhdGEud2luZFJ1bGUgIT0gY2xpcFJ1
bGUpCisgICAgICAgICAgICBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSB0cnVlOworICAgICAgIAor
ICAgICAgICBRUGFpbnRlclBhdGggcGF0aCA9ICooY2xpcERhdGEucGF0aC5wbGF0Zm9ybVBhdGgo
KSk7CisgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmICghbmV3UGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICBuZXdQYXRoLmNs
b3NlU3VicGF0aCgpOworCisgICAgICAgIC8vIFJlc3BlY3QgY2xpcHBpbmcgdW5pdHMuLi4KKyAg
ICAgICAgUU1hdHJpeCB0cmFuc2Zvcm07CisKKyAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hVbml0
cykgeworICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShib3VuZGluZ0JveC54KCksIGJv
dW5kaW5nQm94LnkoKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUoYm91bmRpbmdCb3gu
d2lkdGgoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VE9ETzogc3VwcG9ydCBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcyEKKyAgICAgICAgLy9jbGlwUnVs
ZSA9IChjbGlwRGF0YS53aW5kUnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IFF0OjpPZGRFdmVuRmls
bCA6IFF0OjpXaW5kaW5nRmlsbCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXRo
LmVsZW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6
RWxlbWVudCAmY3VyID0gcGF0aC5lbGVtZW50QXQoaSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAo
Y3VyLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6TW92ZVRvRWxl
bWVudDoKKyAgICAgICAgICAgICAgICAgICAgbmV3UGF0aC5tb3ZlVG8oUVBvaW50RihjdXIueCwg
Y3VyLnkpICogdHJhbnNmb3JtKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkxpbmVUb0VsZW1lbnQ6CisgICAgICAgICAgICAg
ICAgICAgIG5ld1BhdGgubGluZVRvKFFQb2ludEYoY3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUVBhaW50
ZXJQYXRoOjpDdXJ2ZVRvRWxlbWVudDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzEgPSBwYXRoLmVsZW1lbnRBdChp
ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAm
YzIgPSBwYXRoLmVsZW1lbnRBdChpICsgMik7CisKKyAgICAgICAgICAgICAgICAgICAgUV9BU1NF
UlQoYzEudHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgICAgIFFfQVNTRVJUKGMyLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0
YUVsZW1lbnQpOworCisgICAgICAgICAgICAgICAgICAgIG5ld1BhdGguY3ViaWNUbyhRUG9pbnRG
KGN1ci54LCBjdXIueSkgKiB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRUG9pbnRGKGMxLngsIGMxLnkpICogdHJhbnNmb3JtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUVBvaW50RihjMi54LCBjMi55KSAqIHRyYW5zZm9ybSk7CisK
KyAgICAgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1
cnZlVG9EYXRhRWxlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQoZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChtX2NsaXBEYXRhLmNvdW50KCkpIHsKKyAgICAgICAgLy8gRklYTUUhCisg
ICAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNsaXAg
cnVsZXMuCisgICAgICAgIC8vIHdlIHdvdWxkIGhhdmUgdG8gZGV0ZWN0IHN1Y2gsIGRyYXcgdG8g
YSBtYXNrLCBhbmQgdGhlbiBjbGlwCisgICAgICAgIC8vIHRvIHRoYXQgbWFzaworICAgICAgICAv
LyBpZiAoIUNHQ29udGV4dElzUGF0aEVtcHR5KGNnQ29udGV4dCkpIHsKKyAgICAgICAgICAgIGlm
IChjbGlwUnVsZSA9PSBSVUxFX0VWRU5PREQpCisgICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRG
aWxsUnVsZShRdDo6T2RkRXZlbkZpbGwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG5ld1BhdGguc2V0RmlsbFJ1bGUoUXQ6OldpbmRpbmdGaWxsKTsKKyAgICAgICAgLy8gfQor
ICAgIH0KKworICAgIHF0Q29udGV4dC0+cGFpbnRlcigpLnNldENsaXBQYXRoKG5ld1BhdGgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZUltYWdlUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJj
ZUltYWdlUXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc1Jlc291cmNlSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlSW1hZ2UuaCIK
KworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhN
RTogRm9yIG5vdyB3ZSBvbmx5IHN0dWIgdGhpcyBtZXRob2RzIQorCit2b2lkIEdyYXBoaWNzUmVz
b3VyY2VJbWFnZTo6aW5pdChjb25zdCBJbWFnZSYpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NSZXNv
dXJjZUltYWdlOjppbml0KEludFNpemUgc2l6ZSkKK3sKK30KKworSW50U2l6ZSBHcmFwaGljc1Jl
c291cmNlSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc1Jlc291cmNlTWFza2VyUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NSZXNvdXJjZU1h
c2tlclF0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NSZXNvdXJjZU1hc2tlclF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl
IC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VNYXNrZXI6OmFwcGx5
TWFzayhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAoreworCS8vIEZJWE1FOiBp
bXBsZW1lbnQgbWUgOi0pCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdWFydHovR3JhcGhpY3NS
ZXNvdXJjZUNsaXBwZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdWFydHovR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXJRdWFydHoubW0JKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F1YXJ0ei9HcmFwaGljc1Jlc291cmNl
Q2xpcHBlclF1YXJ0ei5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICAgICAgICAgICAgICAgMjAwNSBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUu
b3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmZGVmIFNWR19TVVBQT1JU
CisjaW1wb3J0ICJHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oIgorCisjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbXBvcnQgIktDYW52YXNGaWx0ZXJRdWFydHouaCIKKyNpbXBvcnQgIktS
ZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKKyNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sKKyAgICBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4
dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dFF1YXJ0eio+KGNvbnRleHQpLT5jZ0NvbnRleHQoKTsKKyAgICBpZiAobV9j
bGlwRGF0YS5jb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQk9PTCBoZXRlcm9n
ZW5vdXNDbGlwUnVsZXMgPSBOTzsKKyAgICBXaW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGFb
MF0ud2luZFJ1bGU7CisKKyAgICBjb250ZXh0LT5jbGVhclBhdGgoKTsKKworICAgIENHQWZmaW5l
VHJhbnNmb3JtIGJib3hUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVu
UmVjdHMoQ0dSZWN0TWFrZSgwLDAsMSwxKSwgQ0dSZWN0KGJvdW5kaW5nQm94KSk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIHggPSAwOyB4IDwgbV9jbGlwRGF0YS5jb3VudCgpOyB4KyspIHsKKyAgICAg
ICAgQ2xpcERhdGEgZGF0YSA9IG1fY2xpcERhdGFbeF07CisgICAgICAgIGlmIChkYXRhLndpbmRS
dWxlICE9IGNsaXBSdWxlKQorICAgICAgICAgICAgaGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVzID0gWUVT
OworICAgICAgICAKKyAgICAgICAgQ0dQYXRoUmVmIGNsaXBQYXRoID0gZGF0YS5wYXRoLnBsYXRm
b3JtUGF0aCgpOworCisgICAgICAgIGlmIChkYXRhLmJib3hVbml0cykgeworICAgICAgICAgICAg
Q0dNdXRhYmxlUGF0aFJlZiB0cmFuc2Zvcm1lZFBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7
CisgICAgICAgICAgICBDR1BhdGhBZGRQYXRoKHRyYW5zZm9ybWVkUGF0aCwgJmJib3hUcmFuc2Zv
cm0sIGNsaXBQYXRoKTsKKyAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250ZXh0LCB0
cmFuc2Zvcm1lZFBhdGgpOworICAgICAgICAgICAgQ0dQYXRoUmVsZWFzZSh0cmFuc2Zvcm1lZFBh
dGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250
ZXh0LCBjbGlwUGF0aCk7CisgICAgfQorCisgICAgaWYgKG1fY2xpcERhdGEuY291bnQoKSkgewor
ICAgICAgICAvLyBGSVhNRSEKKyAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFsbG93IGZv
ciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KKyAgICAgICAgLy8gd2Ugd291bGQgaGF2ZSB0byBk
ZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAKKyAgICAgICAgLy8gdG8g
dGhhdCBtYXNrICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoIUNHQ29udGV4dElzUGF0aEVt
cHR5KGNnQ29udGV4dCkpIHsKKyAgICAgICAgICAgIGlmIChjbGlwUnVsZSA9PSBSVUxFX0VWRU5P
REQpCisgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNnQ29udGV4dCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjZ0NvbnRleHQpOworICAg
ICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBT
VkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdWFydHovR3JhcGhp
Y3NSZXNvdXJjZUltYWdlUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVzb3VyY2VJbWFnZVF1YXJ0ei5tbQkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVzb3VyY2VJ
bWFnZVF1YXJ0ei5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgU1ZHX1NVUFBPUlQKKyNpbXBvcnQg
IkdyYXBoaWNzUmVzb3VyY2VJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBo
aWNzUmVzb3VyY2VJbWFnZTo6R3JhcGhpY3NSZXNvdXJjZUltYWdlKCkKKyAgICA6IG1fY2dMYXll
cigwKQoreworfQorCitHcmFwaGljc1Jlc291cmNlSW1hZ2U6On5HcmFwaGljc1Jlc291cmNlSW1h
Z2UoKQoreworICAgIENHTGF5ZXJSZWxlYXNlKG1fY2dMYXllcik7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NSZXNvdXJjZUltYWdlOjppbml0KGNvbnN0IEltYWdlJikKK3sKKyAgICAvLyBuby1vcAorfQor
Cit2b2lkIEdyYXBoaWNzUmVzb3VyY2VJbWFnZTo6aW5pdChJbnRTaXplIHNpemUpCit7CisgICAg
bV9zaXplID0gc2l6ZTsgICAgCit9CisKK0ludFNpemUgR3JhcGhpY3NSZXNvdXJjZUltYWdlOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitDR0xheWVyUmVmIEdyYXBo
aWNzUmVzb3VyY2VJbWFnZTo6Y2dMYXllcigpCit7CisgICAgcmV0dXJuIG1fY2dMYXllcjsKK30K
Kwordm9pZCBHcmFwaGljc1Jlc291cmNlSW1hZ2U6OnNldENHTGF5ZXIoQ0dMYXllclJlZiBsYXll
cikKK3sKKyAgICBpZiAobV9jZ0xheWVyICE9IGxheWVyKSB7CisgICAgICAgIENHTGF5ZXJSZWxl
YXNlKG1fY2dMYXllcik7CisgICAgICAgIG1fY2dMYXllciA9IENHTGF5ZXJSZXRhaW4obGF5ZXIp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVz
b3VyY2VNYXNrZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdWFydHovR3JhcGhpY3NSZXNvdXJjZU1hc2tlclF1YXJ0ei5tbQkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXVhcnR6L0dyYXBoaWNzUmVzb3VyY2VNYXNr
ZXJRdWFydHoubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWZkZWYgU1ZHX1NVUFBPUlQKKyNpbXBv
cnQgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKKyNpbXBvcnQgIkdyYXBoaWNzUmVzb3VyY2VJ
bWFnZS5oIgorI2ltcG9ydCAiU1ZHUmVuZGVyU3R5bGUuaCIKKworI2ltcG9ydCAiS1JlbmRlcmlu
Z0RldmljZVF1YXJ0ei5oIgorI2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5oIgorCisjaW1wb3J0IDxR
dWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBD
SUltYWdlKiBhcHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIoQ0lJbWFnZSogaW5wdXRJbWFnZSkK
K3sKKyAgICBDSUZpbHRlciogbHVtaW5hbmNlVG9BbHBoYSA9IFtDSUZpbHRlciBmaWx0ZXJXaXRo
TmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKKyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXREZWZhdWx0
c107CisgICAgQ0dGbG9hdCBhbHBoYVs0XSA9IHswLjIxMjUsIDAuNzE1NCwgMC4wNzIxLCAwfTsK
KyAgICBDR0Zsb2F0IHplcm9bNF0gPSB7MCwgMCwgMCwgMH07CisgICAgW2x1bWluYW5jZVRvQWxw
aGEgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07ICAKKyAgICBbbHVt
aW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNv
dW50OjRdIGZvcktleTpAImlucHV0UlZlY3RvciJdOworICAgIFtsdW1pbmFuY2VUb0FscGhhIHNl
dFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAi
aW5wdXRHVmVjdG9yIl07CisgICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6W0NJVmVjdG9y
IHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEJWZWN0b3IiXTsK
KyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVl
czphbHBoYSBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEFWZWN0b3IiXTsKKyAgICBbbHVtaW5hbmNl
VG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRd
IGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOworICAgIHJldHVybiBbbHVtaW5hbmNlVG9BbHBo
YSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Cit9CisKK3N0YXRpYyBDSUltYWdlKiBhcHBs
eUV4cGFuZEFscGhhdG9HcmF5c2NhbGVGaWx0ZXIoQ0lJbWFnZSogaW5wdXRJbWFnZSkKK3sKKyAg
ICBDSUZpbHRlciogYWxwaGFUb0dyYXlzY2FsZSA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpA
IkNJQ29sb3JNYXRyaXgiXTsKKyAgICBDR0Zsb2F0IHplcm9bNF0gPSB7MCwgMCwgMCwgMH07Cisg
ICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0RGVmYXVsdHNdOworICAgIFthbHBoYVRvR3JheXNjYWxl
IHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOworICAgIFthbHBoYVRv
R3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6
NF0gZm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07CisgICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0VmFs
dWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1
dEdWZWN0b3IiXTsKKyAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVj
dG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0QlZlY3RvciJdOworICAg
IFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTow
LjAgWjowLjAgVzoxLjBdIGZvcktleTpAImlucHV0QVZlY3RvciJdOworICAgIFthbHBoYVRvR3Jh
eXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWToxLjAgWjoxLjAgVzow
LjBdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOworICAgIHJldHVybiBbYWxwaGFUb0dyYXlz
Y2FsZSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07Cit9CisKK3N0YXRpYyBDSUltYWdlKiB0
cmFuc2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKENJSW1hZ2UqIGlucHV0SW1hZ2UpCit7Cisg
ICAgQ0lGaWx0ZXIqIGJsYWNrQmFja2dyb3VuZCA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpA
IkNJQ29uc3RhbnRDb2xvckdlbmVyYXRvciJdOworICAgIFtibGFja0JhY2tncm91bmQgc2V0VmFs
dWU6W0NJQ29sb3IgY29sb3JXaXRoUmVkOjAuMCBncmVlbjowLjAgYmx1ZTowLjAgYWxwaGE6MS4w
XSBmb3JLZXk6QCJpbnB1dENvbG9yIl07CisKKyAgICBDSUZpbHRlciogbGF5ZXJPdmVyQmxhY2sg
PSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92ZXJDb21wb3NpdGluZyJdOwor
ICAgIFtsYXllck92ZXJCbGFjayBzZXRWYWx1ZTpbYmxhY2tCYWNrZ3JvdW5kIHZhbHVlRm9yS2V5
OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJbWFnZSJdOyAgCisgICAg
W2xheWVyT3ZlckJsYWNrIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJd
OyAgCisKKyAgICBDSUltYWdlKiBsdW1pbmFuY2VBbHBoYSA9IGFwcGx5THVtaW5hbmNlVG9BbHBo
YUZpbHRlcihbbGF5ZXJPdmVyQmxhY2sgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdKTsKKyAg
ICBDSUltYWdlKiBsdW1pbmFuY2VBc0dyYXlzY2FsZSA9IGFwcGx5RXhwYW5kQWxwaGF0b0dyYXlz
Y2FsZUZpbHRlcihsdW1pbmFuY2VBbHBoYSk7CisgICAgQ0lJbWFnZSogYWxwaGFBc0dyYXlzY2Fs
ZSA9IGFwcGx5RXhwYW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihpbnB1dEltYWdlKTsKKworICAg
IENJRmlsdGVyKiBtdWx0aXBsaWVkR3JheXNjYWxlID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiQ0lNdWx0aXBseUNvbXBvc2l0aW5nIl07CisgICAgW211bHRpcGxpZWRHcmF5c2NhbGUgc2V0
VmFsdWU6bHVtaW5hbmNlQXNHcmF5c2NhbGUgZm9yS2V5OkAiaW5wdXRCYWNrZ3JvdW5kSW1hZ2Ui
XTsgIAorICAgIFttdWx0aXBsaWVkR3JheXNjYWxlIHNldFZhbHVlOmFscGhhQXNHcmF5c2NhbGUg
Zm9yS2V5OkAiaW5wdXRJbWFnZSJdOyAgCisgICAgcmV0dXJuIFttdWx0aXBsaWVkR3JheXNjYWxl
IHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKK30KKwordm9pZCBHcmFwaGljc1Jlc291cmNl
TWFza2VyOjphcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fbWFzaykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENyZWF0ZSBncmF5c2Nh
bGUgYml0bWFwIGNvbnRleHQKKyAgICBpbnQgd2lkdGggPSBtX21hc2stPnNpemUoKS53aWR0aCgp
OworICAgIGludCBoZWlnaHQgPSBtX21hc2stPnNpemUoKS5oZWlnaHQoKTsKKyAgICB2b2lkKiBp
bWFnZUJ1ZmZlciA9IGZhc3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOworICAgIENHQ29sb3JTcGFj
ZVJlZiBncmF5Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKKyAg
ICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShp
bWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlDb2xvclNwYWNlLCBrQ0dJ
bWFnZUFscGhhTm9uZSk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShncmF5Q29sb3JTcGFjZSk7
CisgICAgQ0lDb250ZXh0KiBjaUdyYXlzY2FsZUNvbnRleHQgPSBbQ0lDb250ZXh0IGNvbnRleHRX
aXRoQ0dDb250ZXh0OmdyYXlzY2FsZUNvbnRleHQgb3B0aW9uczpuaWxdOworCisgICAgR3JhcGhp
Y3NSZXNvdXJjZUltYWdlKiBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxHcmFwaGljc1Jlc291cmNl
SW1hZ2UqPihtX21hc2suZ2V0KCkpOworICAgIENJSW1hZ2UqIGdyYXlzY2FsZU1hc2sgPSB0cmFu
c2Zvcm1JbWFnZUludG9HcmF5c2NhbGVNYXNrKFtDSUltYWdlIGltYWdlV2l0aENHTGF5ZXI6bWFz
a0ltYWdlLT5jZ0xheWVyKCldKTsKKyAgICBbY2lHcmF5c2NhbGVDb250ZXh0IGRyYXdJbWFnZTpn
cmF5c2NhbGVNYXNrIGF0UG9pbnQ6Q0dQb2ludFplcm8gZnJvbVJlY3Q6Q0dSZWN0TWFrZSgwLCAw
LCB3aWR0aCwgaGVpZ2h0KV07CisKKyAgICBDR0ltYWdlUmVmIGdyYXlzY2FsZUltYWdlID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxlQ29udGV4dCk7CisgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VRdWFydHoqPihyZW5k
ZXJpbmdEZXZpY2UoKSktPmN1cnJlbnRDR0NvbnRleHQoKTsKKyAgICBDR0NvbnRleHRDbGlwVG9N
YXNrKGNnQ29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgZ3JheXNjYWxl
SW1hZ2UpOworICAgIAorICAgIENHSW1hZ2VSZWxlYXNlKGdyYXlzY2FsZUltYWdlKTsKKyAgICBD
R0NvbnRleHRSZWxlYXNlKGdyYXlzY2FsZUNvbnRleHQpOworICAgIGZhc3RGcmVlKGltYWdlQnVm
ZmVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHX1NVUFBP
UlQKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZp
c2lvbiAxNzQyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgot
I2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgot
I2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlQ2xp
cHBlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxl
LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKQEAgLTE5MywxMCArMTkzLDEwIEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFp
bnRJbmZvICZwYWludEkKICAgICAgICAgY29udGV4dCA9IGRldmljZS0+Y3VycmVudENvbnRleHQo
KTsKICAgICB9CiAKLSAgICBpZiAoS0NhbnZhc0NsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVy
QnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5jbGlwUGF0aCgpLnN1YnN0cmlu
ZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0Q2xp
cHBlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5zdWJz
dHJpbmcoMSkpKQogICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAocmVsYXRpdmVCQm94KHRydWUp
KTsKIAotICAgIGlmIChLQ2FudmFzTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3Vt
ZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkK
KyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZU1hc2tlciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChk
b2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygx
KSkpCiAgICAgICAgIG1hc2tlci0+YXBwbHlNYXNrKHJlbGF0aXZlQkJveCh0cnVlKSk7CiAKICAg
ICBjb250ZXh0LT5jbGVhclBhdGgoKTsKQEAgLTMxNSwxOCArMzE1LDE4IEBAIHN0cnVjdCBNYXJr
ZXJEYXRhIHsKICAgICBGbG9hdFBvaW50IGluc2xvcGVQb2ludHNbMl07CiAgICAgRmxvYXRQb2lu
dCBvdXRzbG9wZVBvaW50c1syXTsKICAgICBNYXJrZXJUeXBlIHR5cGU7Ci0gICAgS0NhbnZhc01h
cmtlciAqbWFya2VyOworICAgIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIgKm1hcmtlcjsKIH07CiAK
IHN0cnVjdCBEcmF3TWFya2Vyc0RhdGEgewotICAgIERyYXdNYXJrZXJzRGF0YShHcmFwaGljc0Nv
bnRleHQqLCBLQ2FudmFzTWFya2VyKiBzdGFydE1hcmtlciwgS0NhbnZhc01hcmtlciogbWlkTWFy
a2VyLCBkb3VibGUgc3Ryb2tlV2lkdGgpOworICAgIERyYXdNYXJrZXJzRGF0YShHcmFwaGljc0Nv
bnRleHQqLCBHcmFwaGljc1Jlc291cmNlTWFya2VyKiBzdGFydE1hcmtlciwgR3JhcGhpY3NSZXNv
dXJjZU1hcmtlciogbWlkTWFya2VyLCBkb3VibGUgc3Ryb2tlV2lkdGgpOwogICAgIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dDsKICAgICBpbnQgZWxlbWVudEluZGV4OwogICAgIE1hcmtlckRhdGEg
cHJldmlvdXNNYXJrZXJEYXRhOwotICAgIEtDYW52YXNNYXJrZXIqIG1pZE1hcmtlcjsKKyAgICBH
cmFwaGljc1Jlc291cmNlTWFya2VyKiBtaWRNYXJrZXI7CiB9OwogCi1EcmF3TWFya2Vyc0RhdGE6
OkRyYXdNYXJrZXJzRGF0YShHcmFwaGljc0NvbnRleHQqIGMsIEtDYW52YXNNYXJrZXIgKnN0YXJ0
LCBLQ2FudmFzTWFya2VyICptaWQsIGRvdWJsZSBzdHJva2VXaWR0aCkKK0RyYXdNYXJrZXJzRGF0
YTo6RHJhd01hcmtlcnNEYXRhKEdyYXBoaWNzQ29udGV4dCogYywgR3JhcGhpY3NSZXNvdXJjZU1h
cmtlciAqc3RhcnQsIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIgKm1pZCwgZG91YmxlIHN0cm9rZVdp
ZHRoKQogICAgIDogY29udGV4dChjKQogICAgICwgZWxlbWVudEluZGV4KDApCiAgICAgLCBtaWRN
YXJrZXIobWlkKQpAQCAtNDI4LDkgKzQyOCw5IEBAIHZvaWQgUmVuZGVyUGF0aDo6ZHJhd01hcmtl
cnNJZk5lZWRlZChHcmEKICAgICBEb2N1bWVudCAqZG9jID0gZG9jdW1lbnQoKTsKICAgICBjb25z
dCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwogCi0gICAg
S0NhbnZhc01hcmtlciogc3RhcnRNYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUt
PnN0YXJ0TWFya2VyKCkuc3Vic3RyaW5nKDEpKTsKLSAgICBLQ2FudmFzTWFya2VyKiBtaWRNYXJr
ZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPm1pZE1hcmtlcigpLnN1YnN0cmluZygx
KSk7Ci0gICAgS0NhbnZhc01hcmtlciogZW5kTWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2
Z1N0eWxlLT5lbmRNYXJrZXIoKS5zdWJzdHJpbmcoMSkpOworICAgIEdyYXBoaWNzUmVzb3VyY2VN
YXJrZXIqIHN0YXJ0TWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5zdGFydE1h
cmtlcigpLnN1YnN0cmluZygxKSk7CisgICAgR3JhcGhpY3NSZXNvdXJjZU1hcmtlciogbWlkTWFy
a2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5taWRNYXJrZXIoKS5zdWJzdHJpbmco
MSkpOworICAgIEdyYXBoaWNzUmVzb3VyY2VNYXJrZXIqIGVuZE1hcmtlciA9IGdldE1hcmtlckJ5
SWQoZG9jLCBzdmdTdHlsZS0+ZW5kTWFya2VyKCkuc3Vic3RyaW5nKDEpKTsKICAgICAKICAgICBp
ZiAoIXN0YXJ0TWFya2VyICYmICFtaWRNYXJrZXIgJiYgIWVuZE1hcmtlcikKICAgICAgICAgcmV0
dXJuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZp
c2lvbiAxNzQyNSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2lu
Y2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXIu
aCIKLSNpbmNsdWRlICJLQ2FudmFzTWFza2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NSZXNvdXJj
ZUNsaXBwZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVk
ZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAKICAgICBGbG9hdFJlY3Qgc3Ry
b2tlQkJveCA9IHJlbGF0aXZlQkJveCh0cnVlKTsKICAgICAKLSAgICBpZiAoS0NhbnZhc0NsaXBw
ZXIgKmNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHls
ZSgpLT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VD
bGlwcGVyICpjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3Zn
U3R5bGUoKS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBjbGlwcGVyLT5hcHBs
eUNsaXAoc3Ryb2tlQkJveCk7CiAKLSAgICBpZiAoS0NhbnZhc01hc2tlciAqbWFza2VyID0gZ2V0
TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5tYXNrRWxlbWVudCgp
LnN1YnN0cmluZygxKSkpCisgICAgaWYgKEdyYXBoaWNzUmVzb3VyY2VNYXNrZXIgKm1hc2tlciA9
IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+bWFza0VsZW1l
bnQoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBtYXNrZXItPmFwcGx5TWFzayhzdHJva2VCQm94
KTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBzdHlsZSgpLT5vcGFjaXR5KCk7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxNzQyNSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
OCBAQAogCiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgot
I2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzUmVzb3VyY2VDbGlwcGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NS
ZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRl
ICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCkBAIC0x
NDYsMTAgKzE0NiwxMCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBh
CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhl
aWdodCgpKTsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5z
dmdTdHlsZSgpOwogICAgICAgICAgICAgCi0gICAgaWYgKEtDYW52YXNDbGlwcGVyKiBjbGlwcGVy
ID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkuc3Vic3Ry
aW5nKDEpKSkKKyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRD
bGlwcGVyQnlJZChkb2N1bWVudCgpLCBzdmdTdHlsZS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkp
KQogICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAoYm91bmRpbmdCb3gpOwogCi0gICAgaWYgKEtD
YW52YXNNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUt
Pm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkKKyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZU1h
c2tlciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdmdTdHlsZS0+bWFza0Vs
ZW1lbnQoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBtYXNrZXItPmFwcGx5TWFzayhib3VuZGlu
Z0JveCk7CiAKICAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3Vt
ZW50KCksIHN2Z1N0eWxlLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkpOwpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5
LDggQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklubGluZVRl
eHRCb3guaCIKLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgotI2luY2x1ZGUgIktDYW52YXNN
YXNrZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Jlc291cmNlQ2xpcHBlci5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5
bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiUm9vdElubGlu
ZUJveC5oIgpAQCAtODAsMTAgKzgwLDEwIEBAIHZvaWQgcGFpbnRTVkdJbmxpbmVGbG93KElubGlu
ZUZsb3dCb3gqIGYKICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3godHgrZmxvdy0+eFBvcygpICwg
dHkrZmxvdy0+eVBvcygpLCBmbG93LT53aWR0aCgpLCBmbG93LT5oZWlnaHQoKSk7CiAgICAgCiAg
ICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gb2JqZWN0LT5zdHlsZSgpLT5zdmdT
dHlsZSgpOwotICAgIGlmIChLQ2FudmFzQ2xpcHBlciogY2xpcHBlciA9IGdldENsaXBwZXJCeUlk
KG9iamVjdC0+ZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkK
KyAgICBpZiAoR3JhcGhpY3NSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJ
ZChvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxlLT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkp
CiAgICAgICAgIGNsaXBwZXItPmFwcGx5Q2xpcChib3VuZGluZ0JveCk7CiAgICAgCi0gICAgaWYg
KEtDYW52YXNNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQob2JqZWN0LT5kb2N1bWVudCgp
LCBzdmdTdHlsZS0+bWFza0VsZW1lbnQoKS5zdWJzdHJpbmcoMSkpKQorICAgIGlmIChHcmFwaGlj
c1Jlc291cmNlTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKG9iamVjdC0+ZG9jdW1lbnQo
KSwgc3ZnU3R5bGUtPm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkKICAgICAgICAgbWFza2Vy
LT5hcHBseU1hc2soYm91bmRpbmdCb3gpOwogICAgIAogICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRl
ciA9IGdldEZpbHRlckJ5SWQob2JqZWN0LT5kb2N1bWVudCgpLCBzdmdTdHlsZS0+ZmlsdGVyKCku
c3Vic3RyaW5nKDEpKTsKSW5kZXg6IFdlYktpdFF0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRRdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViS2l0UXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIwMDYtMTAtMjkgIE5pa29sYXMgWmlt
bWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlczogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE0MzYKKyAgICAgICAgQWRkIHBsYXRmb3Jtcy9ncmFwaGljcyBpbmNsdWRl
LgorCiAyMDA2LTEwLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJLaXRRdC9RdExhdW5jaGVy
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFF0L1F0TGF1bmNoZXIvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViS2l0UXQvUXRMYXVuY2hlci9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgaW5jbHVkZV9kaXJlY3Rvcmll
cygKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9w
YWdlCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNvcmUv
bG9hZGVyCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNv
cmUvcGxhdGZvcm0KKyAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4v
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcwogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS8uLi8uLi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsKICAgIEJFRk9SRSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9xdAogICAgQkVGT1JF
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi9XZWJDb3JlL2tzdmcyCkluZGV4OiBX
ZWJLaXRRdC9XZWJLaXRQYXJ0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFF0
L1dlYktpdFBhcnQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3NDI1KQorKysgV2ViS2l0UXQv
V2ViS2l0UGFydC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAg
aW5jbHVkZV9kaXJlY3RvcmllcyAoCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9Ly4uLy4uL1dlYkNvcmUvcGFnZQogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS8uLi8uLi9XZWJDb3JlL2xvYWRlcgogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS8uLi8uLi9XZWJDb3JlL3BsYXRmb3JtCisgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MKICAgIEJFRk9SRSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
CiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNvcmUvcGxh
dGZvcm0vcXQKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2Vi
Q29yZS9rc3ZnMgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAwNi0xMC0yOSAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzOiBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQzNgorICAgICAgICBBZGQgcGxhdGZvcm1zL2dyYXBoaWNzIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHByb2ov
Q01ha2VMaXN0cy50eHQ6CisKIDIwMDYtMTAtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgICogU2NyaXB0cy9kby1maWxlLXJlbmFtZTogQW5kIGFnYWluLgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUucXRwcm9qL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnF0cHJvai9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc0MjUpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHByb2ovQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAg
ICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uLy4uL1dlYkNvcmUvcGFn
ZQogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi8uLi9XZWJDb3Jl
L2xvYWRlcgogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi8uLi9X
ZWJDb3JlL3BsYXRmb3JtCisgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4u
Ly4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vLi4vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrCiAgICBCRUZP
UkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0v
cXQKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vLi4vV2ViQ29y
ZS9rc3ZnMgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11291</attachid>
            <date>2006-10-30 16:27:32 -0800</date>
            <delta_ts>2006-10-30 16:34:06 -0800</delta_ts>
            <desc>Updated final patch</desc>
            <filename>kcanvas-rework.diff</filename>
            <type>text/plain</type>
            <size>269641</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC02LDggKzYsNiBAQCBpbmNsdWRlIChDaGVja0NYWENvbXBpbGVyRmxh
ZykKIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX0JJTkFS
WV9ESVJ9CiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMK
LSAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybQotICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsKICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9sb2FkZXIKICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sb2FkZXIvaWNv
bgogICAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2NzcwpAQCAtMzQsNiArMzIsMTIgQEAg
aW5jbHVkZV9kaXJlY3RvcmllcygKICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9rc3Zn
Mi9taXNjIAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2tzdmcyL2V2ZW50cwogICAg
JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3BsYXRmb3JtCisgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vcGxhdGZvcm0KKyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0
Zm9ybS9xdAorICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsK
KyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3F0CisgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9xdAogICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzCiAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmCiAgICAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZwpAQCAtNDEsOCAr
NDUsNiBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibQogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcAogICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZwotICAgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L3BsYXRmb3JtL3F0Ci0gICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9xdAogICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYkNv
cmUrU1ZHCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vSmF2YVNjcmlwdENvcmUv
a2pzCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MKQEAgLTYzNyw4ICs2MzksNiBAQCBzZXQgKFNWR19TT1VSQ0VTCiAgICAga3N2ZzIvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAogICAgIGtzdmcyL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKICAg
ICBrc3ZnMi9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmNwcAotIyAgIGtzdmcyL2VjbWEvR2xvYmFs
T2JqZWN0LmNwcAotIyAgIGtzdmcyL2VjbWEvRWNtYS5jcHAKICAgICBrc3ZnMi9taXNjL1NWR0lt
YWdlTG9hZGVyLmNwcAogICAgIGtzdmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAog
ICAgIGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCkBAIC02NDcsMTAgKzY0Nyw2IEBA
IHNldCAoU1ZHX1NPVVJDRVMKICAgICBrc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50LmNwcAogICAg
IGtjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5jcHAKICAgICBrY2FudmFzL0tDYW52YXNGaWx0ZXJz
LmNwcAotICAgIGtjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCi0gICAga2NhbnZhcy9LQ2FudmFz
TWFya2VyLmNwcAotICAgIGtjYW52YXMvS0NhbnZhc01hc2tlci5jcHAKLSAgICBrY2FudmFzL0tD
YW52YXNSZXNvdXJjZS5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudC5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJT
b2xpZC5jcHAKICAgICBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
LmNwcApAQCAtNjYxLDcgKzY1Nyw2IEBAIHNldCAoU1ZHX1NPVVJDRVMKICAgICBrY2FudmFzL2Rl
dmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF0LmNwcAogICAgIGtjYW52YXMv
ZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5jcHAKICAgICBrY2FudmFz
L2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdC5jcHAKLSAgICBrY2FudmFzL2Rldmlj
ZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmNwcAogIyAgIGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNG
aWx0ZXJRdC5jcHAKICMgICBrY2FudmFzL2RldmljZS9xdC9LQ2FudmFzSW1hZ2VJdGVtUXQuY3Bw
CiAgICAgcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCkBAIC05OTgsNyArOTkzLDYg
QEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIHBsYXRmb3JtL0Zsb2F0U2l6ZS5jcHAKICAgICBwbGF0
Zm9ybS9TdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3Bw
Ci0gICAgcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5jcHAKICAgICBwbGF0Zm9ybS9JbnRSZWN0LmNw
cAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0FycmF5SW1wbC5jcHAKQEAg
LTEwMTMsMTQgKzEwMDcsMTIgQEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIHBsYXRmb3JtL1RleHRE
ZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL1RleHRFbmNvZGluZy5jcHAKICAgICBwbGF0Zm9ybS9U
ZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKLSAgICBwbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuY3Bw
CiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9ybS9Db2xvci5jcHAKICAgICBw
bGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdEltcGwuY3BwCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAK
ICAgICBwbGF0Zm9ybS9TdHJpbmdJbXBsLmNwcAogICAgIHBsYXRmb3JtL0Zsb2F0UmVjdC5jcHAK
LSAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL1Bh
dGguY3BwCiAgICAgcGxhdGZvcm0vcXQvRWRpdG9yQ2xpZW50UXQuY3BwCiAgICAgcGxhdGZvcm0v
cXQvU291bmRRdC5jcHAKQEAgLTEwNDMsNiArMTAzNSw3IEBAIHNldChXZWJDb3JlX1NSQ1MKICAg
ICBwbGF0Zm9ybS9xdC9Gb250RGF0YVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L1NoYXJlZFRpbWVy
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCisgICAgcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxl
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvRmxvYXRQb2ludFF0LmNwcApAQCAtMTA2Niw2ICsxMDU5
LDE4IEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBwbGF0Zm9ybS9xdC9TY3JvbGxWaWV3Q2FudmFz
UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCiAgICAgcGxh
dGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUxvYWRlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlTG9h
ZGVyTWFuYWdlci5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlTG9hZGVyUXQu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3Zn
L1NWR1Jlc291cmNlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFza2VyLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZU1hcmtlci5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VDbGlwcGVyUXQuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvc3ZnL3F0L1NWR1Jlc291cmNlSW1hZ2VRdC5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VNYXNrZXJRdC5jcHAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNjkgQEAKKzIwMDYtMTAtMzEg
IE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlczogaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MzYKKworICAgICAgICBCZXR0ZXIgU1ZHIGludGVn
cmF0aW9uIGluIFdlYktpdCwgUGFydCBJLgorCisgICAgICAgIFRoZSBwYXRjaCBpcyBtb3N0bHkg
YWJvdXQgY3JlYXRpbmcgYSBuZXcgcGxhdGZvcm0vZ3JhcGhpY3MgZGlyZWN0b3J5LCBhbmQKKyAg
ICAgICAgbW92aW5nIHRoZSBrY2FudmFzIHJlc291cmNlcyAoY2xpcHBlci9tYXNrZXIvbWFya2Vy
KSB0aGVyZSAoaW4gc3ZnIGJ1ZGlyKSwKKyAgICAgICAgd2l0aCBhIG5ldyBuYW1lIChLQ2FudmFz
Q2xpcHBlciAtPiBTVkdSZXNvdXJjZUNsaXBwZXIpLiBBbHNvIGZpeCBzZXZlcmFsIG93bmVyc2hp
cAorICAgICAgICBpc3N1ZXMsIGJ5IHVzaW5nIHJlZiBjb3VudGluZyAodGhlIFNWRyBjbGFzc2Vz
IG5vdyBzdG9yZSBSZWZQdHJzIHRvIHRoZSByZXNvdXJjZXMpLgorCisgICAgICAgIEtDYW52YXNG
aWx0ZXJzIGlzIHN0aWxsIGxlZnQgaW4ga2NhbnZhcy8gc3ViZGlyZWN0b3J5LCB0byBiZSBjb252
ZXJ0ZWQgaW4gYSBuZXh0IHBhdGNoLgorICAgICAgICBBbGwgZGV0YWlscyBvZiB0aGUgcGF0Y2gs
IGFuZCB1cGNvbWluZyBwYXRjaGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgYnVnIHJlcG9ydC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNDbGlwcGVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNDbGlwcGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICoga2NhbnZhcy9LQ2FudmFzQ3JlYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICoga2Nh
bnZhcy9LQ2FudmFzQ3JlYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZh
c0ZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsdGVyQnlJZCk6CisgICAgICAg
ICoga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oOgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc0lt
YWdlLmg6IFJlbW92ZWQuCisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzTWFya2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNNYXJrZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBrY2FudmFzL0tDYW52YXNNYXNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52
YXMvS0NhbnZhc01hc2tlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1Jl
c291cmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNSZXNvdXJjZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d3JpdGVSZW5kZXJSZXNvdXJjZXMpOgorICAgICAgICAqIGtjYW52YXMvZGV2
aWNlL0tSZW5kZXJpbmdEZXZpY2UuaDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZl
cjo6S1JlbmRlcmluZ1BhaW50U2VydmVyKToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6bGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6S1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OnNldExpc3RlbmVyKToKKyAgICAgICAgKiBrY2Fu
dmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oOgorICAgICAgICAqIGtj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6S1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0
ZXJuOjp+S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OktS
ZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6bGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0TGlzdGVuZXIpOgorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaDoKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oOgorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVyUXQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGtjYW52YXMvZGV2aWNlL3F0L0tDYW52YXNDbGlwcGVyUXQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S1JlbmRlcmluZ0RldmljZVF0Ojpjb250ZXh0Rm9ySW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6S1JlbmRlcmluZ0RldmljZVF0OjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNlUXQ6OmNyZWF0ZVBhaW50U2VydmVyKToKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuaDoKKyAgICAgICAgKiBrY2Fu
dmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF0LmNwcDoKKyAgICAg
ICAgKiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3Bw
OgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclF0LmNw
cDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xp
ZFF0LmNwcDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdC9SZW5kZXJQYXRoUXQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0
ei5tbToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGaWx0ZXJRdWFydHo6OmdldENJRmlsdGVy
U3RhY2spOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0
ei5tbToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01hc2tlclF1YXJ0
ei5oOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzTWFz
a2VyUXVhcnR6Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzUmVzb3VyY2VzUXVhcnR6Lmg6IFJlbW92ZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW06IFJlbW92ZWQuCisgICAgICAgICog
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaDoKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OktSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNvbnRleHRGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVQYWludFNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjcmVhdGVSZXNv
dXJjZSk6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6Lm1tOgorICAgICAgICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50
U2VydmVyR3JhZGllbnRRdWFydHo6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6
KToKKyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6
Ojp+S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHopOgorICAgICAgICAoV2ViQ29y
ZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnNldHVwKToKKyAgICAgICAg
KFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bik6
CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1
YXJ0ei5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJRdWFydHoubW06CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6c2V0dXAp
OgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1tOgorICAg
ICAgICAqIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50
OjpTVkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVt
ZW50Ojp+U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRo
RWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDbGlwUGF0
aEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRp
ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6On5TVkdH
cmFkaWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpj
YW52YXNSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnJl
c291cmNlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVt
ZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6On5TVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWFza0VsZW1lbnQ6On5TVkdNYXNrRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXNrRWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFz
a0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojp+U1ZHUGF0dGVybkVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVzRnJv
bVJlZmVyZW5jZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6
OmRyYXdQYXR0ZXJuQ29udGVudEludG9UaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxk
R3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL0dyYXBoaWNzQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3Jh
cGhpY3NDb250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3JhcGhpY3NUeXBl
cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dFByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZv
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGVuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0UGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRpbmdDb250
cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRVcGRhdGlu
Z0NvbnRyb2xUaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBh
aW50aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwYWlu
dGluZ0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SGlnaGxpZ2h0Rm9yVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmluaXRGb2N1c1JpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhckZvY3VzUmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0JvdW5kaW5nUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmluZ1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ09mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VDb21wb3NpdGVPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b21wb3NpdGVPcGVyYXRvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VMaW5lQ2FwKToK
KyAgICAgICAgKFdlYkNvcmU6OmxpbmVDYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6bGluZUpvaW5OYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlOjpTVkdSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZTo6flNWR1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlOjphZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2U6OmNsaWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2U6OmlkSW5SZWdpc3RyeSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZTo6c2V0SWRJblJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFJlc291cmNlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRQYWludFNlcnZlckJ5
SWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlOjppc1BhaW50U2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlOjppc0ZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZTo6aXNDbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlOjppc01h
cmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZTo6aXNNYXNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VMaXN0ZW5lcjo6flNWR1Jlc291cmNlTGlzdGVuZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZUNsaXBwZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xpcHBlcjo6U1ZHUmVzb3VyY2VD
bGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xpcHBlcjo6flNWR1Jlc291
cmNlQ2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUNsaXBwZXI6OnJlc2V0
Q2xpcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VDbGlwcGVyOjphZGRDbGlw
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUNsaXBwZXI6OmNsaXBEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xpcHBlcjo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6
OmdldENsaXBwZXJCeUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVz
b3VyY2VDbGlwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcERhdGFMaXN0Ojph
ZGRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xpcHBlcjo6aXNDbGlwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2VJbWFnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2VNYXJrZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpTVkdSZXNv
dXJjZU1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6flNWR1Jl
c291cmNlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpzZXRN
YXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXJrZXI6OnNldFJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpnZXRNYXJrZXJCeUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dmcvU1ZHUmVzb3VyY2VNYXJrZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZU1hcmtlcjo6cmVmWCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6
cmVmWSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6c2V0QW5nbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXJrZXI6OnNldEF1dG9BbmdsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZU1hcmtlcjo6YW5nbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VNYXJrZXI6OnNldFVzZVN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlTWFya2VyOjp1c2VTdHJva2VXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZU1hcmtlcjo6aXNNYXJrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N2Zy9TVkdSZXNvdXJjZU1hc2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVzb3VyY2VNYXNrZXI6OlNWR1Jlc291cmNlTWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlTWFza2VyOjp+U1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VNYXNrZXI6OnNldE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VNYXNrZXI6Om1hc2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXNrZXI6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWFza2VyQnlJ
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFza2VyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXNrZXI6OmlzTWFza2VyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVzb3VyY2VDbGlwcGVyQ2cu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdSZXNvdXJjZUltYWdl
Q2cubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VJbWFnZTo6U1ZHUmVz
b3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUltYWdlOjp+U1ZHUmVz
b3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUltYWdlOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlSW1hZ2U6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VJbWFnZTo6Y2dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZUltYWdlOjpzZXRDR0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dmcvY2cvU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjph
cHBseUx1bWluYW5jZVRvQWxwaGFGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlFeHBh
bmRBbHBoYXRvR3JheXNjYWxlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUlt
YWdlSW50b0dyYXlzY2FsZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXNr
ZXI6OmFwcGx5TWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL3F0L1NWR1Jl
c291cmNlQ2xpcHBlclF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL3F0
L1NWR1Jlc291cmNlSW1hZ2VRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VJbWFnZTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUltYWdlOjpz
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VNYXNr
ZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXNrZXI6OmFw
cGx5TWFzayk6CisgICAgICAgICogcGxhdGZvcm0vcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclBhdGg6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdNYXJrZXJzRGF0YTo6RHJh
d01hcmtlcnNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OmRyYXdNYXJrZXJz
SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTVkdJbmxpbmVGbG93KToKKwogMjAwNi0xMC0zMCAg
SnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IGhhcnJpc29uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQyMSw3ICsxNDIxLDYgQEAKIAkJOTM1
MjA4ODIwOUJENDVFOTAwRjIwMzhEIC8qIENvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MjA4ODEwOUJENDVFOTAwRjIwMzhEIC8qIENv
b2tpZUphci5oICovOyB9OwogCQk5MzUzNjczRjA5QUVENzkyMDBEMzVDRDYgLyogU2Nyb2xsQmFy
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1
MzY3M0UwOUFFRDc5MjAwRDM1Q0Q2IC8qIFNjcm9sbEJhck1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzUzNjc2QjA5QUVEODhCMDBEMzVD
RDYgLyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1t
ICovOyB9OwotCQk5MzUzNjdFNTA5QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUzNjdFNDA5
QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi87IH07CiAJCTkzNTM2N0U5MDlB
Rjc3RUYwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUzNjdFODA5QUY3N0VGMDBEMzVDRDYgLyog
R3JhcGhpY3NDb250ZXh0TWFjLm1tICovOyB9OwogCQk5MzUzNjg2QjA5QUY3OEY2MDBEMzVDRDYg
LyogVGV4dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1MzY4NkEwOUFGNzhGNjAwRDM1Q0Q2IC8qIFRleHREaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVDNDc1RDA5
QUM0Q0EwMDBBNkFBQjQgLyogSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NUMwOUFDNENBMDAwQTZBQUI0IC8qIEhpc3RvcnkuaCAq
LzsgfTsKQEAgLTE0NTAsOCArMTQ0OSw2IEBACiAJCTkzOEU2NUY3MDlGMDk4NUQwMDhBNDhFQyAv
KiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi87IH07CiAJCTkzOEU2NjYwMDlGMDlCODEwMDhB
NDhFQyAvKiBKU0hUTUxDYW52YXNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOEU2NjVGMDlGMDlCODEwMDhBNDhFQyAvKiBKU0hUTUxD
YW52YXNFbGVtZW50LmNwcCAqLzsgfTsKIAkJOTM4RTY2NjIwOUYwOUI4NzAwOEE0OEVDIC8qIEpT
SFRNTENhbnZhc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzOEU2NjYxMDlGMDlCODcwMDhBNDhFQyAvKiBKU0hUTUxDYW52YXNFbGVtZW50
LmggKi87IH07Ci0JCTkzOEU2ODNDMDlGMEJEN0IwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzhFNjgzQjA5
RjBCRDdBMDA4QTQ4RUMgLyogR3JhcGhpY3NUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzOEU2ODU0MDlGMEJFMDQwMDhBNDhFQyAvKiBH
cmFwaGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOEU2ODUzMDlGMEJFMDQwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLzsg
fTsKIAkJOTM5MkYxNDIwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTJGMTQxMEFEMTg1RjQw
MDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmggKi87IH07CiAJCTkzOTJGMTQ0MEFEMTg1RkUwMDY5
MUJENCAvKiBSZW5kZXJDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzOTJGMTQzMEFEMTg1RkUwMDY5MUJENCAvKiBSZW5kZXJDb3VudGVy
LmNwcCAqLzsgfTsKIAkJOTM5MkYxNDYwQUQxODYwQzAwNjkxQkQ0IC8qIENvdW50ZXJSZXNldE5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTJG
MTQ1MEFEMTg2MEMwMDY5MUJENCAvKiBDb3VudGVyUmVzZXROb2RlLmggKi87IH07CkBAIC0xNzQ3
LDggKzE3NDQsNiBAQAogCQlBODEzNjlFNTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgxMzY5QzkwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxLZXlnZW5FbGVtZW50LmNwcCAqLzsgfTsK
IAkJQTgxMzZEMzgwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzZEMzYwOTczQThFNzAwRDc0
NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovOyB9OwogCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMg
LyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwICov
OyB9OwotCQlBODE2NTVENDA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxNjU1RDIw
OTZCQkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHouaCAqLzsgfTsKLQkJQTgxNjU1
RDUwOTZCQkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHoubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE2NTVEMzA5NkJCRUFDMDA2MDEw
NTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5tbSAqLzsgfTsKIAkJQTgxNjU1RTQwOTZCQzEzOTAw
NjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5jcHAgKi87IH07CiAJCUE4MTY1NUU1MDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgx
NjU1RTMwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVtZW50LmggKi87IH07CiAJCUE4MTg1
RjM5MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBE
b2N1bWVudFR5cGUuaCAqLzsgfTsKQEAgLTE3NzIsNyArMTc2Nyw2IEBACiAJCUE4MjM5OEE4MDlC
M0FDRjUwMEI2MDY0MSAvKiBQbHVnSW5JbmZvU3RvcmVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODIzOThBNzA5QjNBQ0Y1MDBCNjA2NDEgLyog
UGx1Z0luSW5mb1N0b3JlTWFjLm1tICovOyB9OwogCQlBODIzOUUwMDA5QjNDRjhBMDBCNjA2NDEg
LyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi87IH07CiAJCUE4
MjM5RTAxMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9n
Z2luZy5oICovOyB9OwotCQlBODIzQTc1QzA5QjZFNTM5MDBCNjA2NDEgLyogR3JhcGhpY3NDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MjNBNzVCMDlCNkU1MzkwMEI2MDY0MSAvKiBHcmFwaGljc0NvbnRleHQuY3BwICovOyB9OwogCQlB
ODI2RThBRTBBMUE4RjIzMDBDRDFCQjYgLyogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODI2RThB
QzBBMUE4RjIzMDBDRDFCQjYgLyogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmggKi87
IH07CiAJCUE4MjZFQzQ4MEExQjBDQkUwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgyNkU4QUQwQTFBOEYyMzAwQ0QxQkI2IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CiAJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFF
ODA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuY3BwICovOyB9OwpAQCAtMTc4MCwxNCArMTc3
NCw2IEBACiAJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2
MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2
NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlB
ODMzQzg1MjBBMkNGNTI4MDBENTc2NjQgLyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAw
MEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKLQkJQTg0MTVGOUEwQUMxMEM1
RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODQxNUY5MTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0Ns
aXBwZXIuaCAqLzsgfTsKLQkJQTg0MTVGOUIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlw
cGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
NDE1RjkyMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5jcHAgKi87IH07Ci0JCUE4
NDE1RjlDMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1RjkzMEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzUmVzb3VyY2UuaCAqLzsgfTsKLQkJQTg0MTVGOUQwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODQxNUY5NDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNl
LmNwcCAqLzsgfTsKLQkJQTg0MTVGOUUwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNNYXNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk1
MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmggKi87IH07Ci0JCUE4NDE1RjlGMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk2MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2Fu
dmFzTWFza2VyLmNwcCAqLzsgfTsKLQkJQTg0MTVGQTAwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52
YXNNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4NDE1Rjk3MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggKi87IH07Ci0JCUE4
NDE1RkExMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1Rjk4MEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLzsgfTsKIAkJQTg0MTVGQTIwQUMxMEM1RDAwRjdEMERG
IC8qIEtDYW52YXNGaWx0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4NDE1Rjk5MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5j
cHAgKi87IH07CiAJCUE4NjYyOUNGMDlEQTJCNDcwMDk2MzNBNSAvKiBKU1VJRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NjYyOUM5MDlEQTJC
NDcwMDk2MzNBNSAvKiBKU1VJRXZlbnQuaCAqLzsgfTsKIAkJQTg2NjI5RDAwOURBMkI0ODAwOTYz
M0E1IC8qIEpTVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODY2MjlDQTA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCAqLzsg
fTsKQEAgLTE4ODgsOCArMTg3NCw2IEBACiAJCUE4OEFEM0FBMDk1MjQ4NkQwMDFERDE5NiAvKiBL
Q2FudmFzRmlsdGVyUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0ZpbHRlclF1YXJ0
ei5oICovOyB9OwogCQlBODhBRDNBQjA5NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0ZpbHRlclF1
YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzBGQjZBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzRmlsdGVyUXVhcnR6Lm1tICovOyB9Owog
CQlBODhBRDNBRDA5NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0l0ZW1RdWFydHoubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkI2QzA4OTcwMUY4
MDBCQTUxMTQgLyogS0NhbnZhc0l0ZW1RdWFydHoubW0gKi87IH07Ci0JCUE4OEFEM0FFMDk1MjQ4
NkQwMDFERDE5NiAvKiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkI2RDA4OTcwMUY4MDBCQTUxMTQgLyog
S0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oICovOyB9OwotCQlBODhBRDNBRjA5NTI0ODZEMDAxREQx
OTYgLyogS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjZFMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFz
UmVzb3VyY2VzUXVhcnR6Lm1tICovOyB9OwogCQlBODhBRDNCMDA5NTI0ODZFMDAxREQxOTYgLyog
S1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCNzEwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHouaCAqLzsgfTsKIAkJQTg4QUQzQjEwOTUyNDg2RTAwMUREMTk2IC8qIEtSZW5kZXJp
bmdEZXZpY2VRdWFydHoubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEMwRkI3MjA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0
ei5tbSAqLzsgfTsKIAkJQTg4QUQzQjIwOTUyNDg2RTAwMUREMTk2IC8qIEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCNzMwODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tICovOyB9OwpAQCAtMTg5OCw4ICsxODgyLDYgQEAKIAkJ
QTg4QUQzQjUwOTUyNDg2RTAwMUREMTk2IC8qIFF1YXJ0elN1cHBvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjc2MDg5NzAxRjgwMEJBNTEx
NCAvKiBRdWFydHpTdXBwb3J0LmggKi87IH07CiAJCUE4OEFEM0I2MDk1MjQ4NkUwMDFERDE5NiAv
KiBRdWFydHpTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDMEZCNzcwODk3MDFGODAwQkE1MTE0IC8qIFF1YXJ0elN1cHBvcnQubW0gKi87
IH07CiAJCUE4OEFEM0JFMDk1MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzRmlsdGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCN0YwODk3MDFG
ODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJzLmggKi87IH07Ci0JCUE4OEFEM0MwMDk1MjQ4NkUw
MDFERDE5NiAvKiBLQ2FudmFzSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QzBGQjgxMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzSW1hZ2Uu
aCAqLzsgfTsKLQkJQTg4QUQzQzcwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZUxp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEMwRkI4OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCAqLzsg
fTsKIAkJQTg4QUQzQ0IwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNUcmVlRGVidWcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTBFMzkzMDhBNDE2
MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi87IH07CiAJCUE4OEFEM0NDMDk1MjQ4
NkUwMDFERDE5NiAvKiBLQ2FudmFzVHJlZURlYnVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTBFMzk0MDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2Fu
dmFzVHJlZURlYnVnLmNwcCAqLzsgfTsKIAkJQTg4QUQ0MDEwOTUyNDhGMDAwMUREMTk2IC8qIFNW
R1JlbmRlclN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGNkZGMDg5NzAxRjEwMEJBNTExNCAvKiBTVkdSZW5kZXJTdHlsZS5jcHAgKi87
IH07CkBAIC0yMjk2LDYgKzIyNzgsMjIgQEAKIAkJQjIyMkY2OTkwQUI3NzE5NTAwMjJFRkFEIC8q
IEpTU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjJGNjk3MEFCNzcxOTUwMDIyRUZBRCAvKiBKU1NWR0FuZ2xlLmggKi87IH07CiAJCUIy
MjJGNjlDMEFCNzcxQjgwMDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMkY2OUEwQUI3NzFCODAwMjJFRkFE
IC8qIEpTU1ZHRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjJGNjlEMEFCNzcxQjgwMDIyRUZBRCAv
KiBKU1NWR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjJGNjlCMEFCNzcxQjgwMDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuaCAqLzsgfTsK
KwkJQjJBMDE1QTgwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkEwMTU5MjBBRjZDRDUz
MDA2QkNFMEUgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAqLzsgfTsKKwkJQjJBMDE1QTkwQUY2Q0Q1
MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMDE1OTMwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNz
Q29udGV4dC5oICovOyB9OworCQlCMkEwMTVBQTBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NU
eXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkEwMTU5NDBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5jcHAgKi87IH07CisJCUIy
QTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkEwMTU5NTBBRjZDRDUzMDA2QkNFMEUg
LyogR3JhcGhpY3NUeXBlcy5oICovOyB9OworCQlCMkEwMTVBQzBBRjZDRDUzMDA2QkNFMEUgLyog
U1ZHUmVzb3VyY2VDbGlwcGVyQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkEwMTU5ODBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VDbGlw
cGVyQ2cubW0gKi87IH07CisJCUIyQTAxNUFEMEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJj
ZUltYWdlQ2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMkEwMTU5OTBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VJbWFnZUNnLm1tICovOyB9
OworCQlCMkEwMTVBRTBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQTAxNTlBMEFG
NkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlckNnLm1tICovOyB9OworCQlCMkEwMTVC
MjBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMDE1OUYwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNW
R1Jlc291cmNlLmNwcCAqLzsgfTsKKwkJQjJBMDE1QjMwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jl
c291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkEwMTVBMDBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2UuaCAqLzsgfTsKKwkJQjJBMDE1
QjQwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlQ2xpcHBlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkEwMTVBMTBBRjZDRDUzMDA2QkNF
MEUgLyogU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCAqLzsgfTsKKwkJQjJBMDE1QjUwQUY2Q0Q1MzAw
NkJDRTBFIC8qIFNWR1Jlc291cmNlQ2xpcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMDE1QTIwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291
cmNlQ2xpcHBlci5oICovOyB9OworCQlCMkEwMTVCNjBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVz
b3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjJBMDE1QTMwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlSW1hZ2UuaCAqLzsgfTsK
KwkJQjJBMDE1QjcwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlTWFya2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQTAxNUE0MEFGNkNE
NTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hcmtlci5jcHAgKi87IH07CisJCUIyQTAxNUI4MEFG
NkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMDE1QTUwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNW
R1Jlc291cmNlTWFya2VyLmggKi87IH07CisJCUIyQTAxNUI5MEFGNkNENTMwMDZCQ0UwRSAvKiBT
VkdSZXNvdXJjZU1hc2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMkEwMTVBNjBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwICovOyB9OworCQlCMkEwMTVCQTBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQTAx
NUE3MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlci5oICovOyB9OwogCQlCMkNC
NDE5MzBBQjc1OTA0MDA0RDlDNDUgLyogU1ZHUmVuZGVyaW5nSW50ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkNCNDE0QzBBQjc1OTA0MDA0RDlD
NDUgLyogU1ZHUmVuZGVyaW5nSW50ZW50LmggKi87IH07CiAJCUIyQ0I0MUE2MEFCNzU5MDQwMDRE
OUM0NSAvKiBTVkdVbml0VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyQ0I0MTVGMEFCNzU5MDQwMDREOUM0NSAvKiBTVkdVbml0VHlwZXMuaCAq
LzsgfTsKIAkJQjJGQTNEMzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkZBM0M0RTBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAq
LzsgfTsKQEAgLTQyOTUsNyArNDI5Myw2IEBACiAJCTkzNTIwODgxMDlCRDQ1RTkwMEYyMDM4RCAv
KiBDb29raWVKYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llSmFy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTM2NzNFMDlBRUQ3OTIwMEQzNUNE
NiAvKiBTY3JvbGxCYXJNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbEJhck1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MzY3NkEwOUFF
RDg4QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5MzUzNjdFNDA5QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjdFODA5QUY3N0VGMDBEMzVDRDYgLyogR3JhcGhp
Y3NDb250ZXh0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUz
Njg2QTA5QUY3OEY2MDBEMzVDRDYgLyogVGV4dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNUM0NzVDMDlBQzRDQTAwMEE2QUFCNCAvKiBIaXN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQzMjUsOCArNDMyMiw2IEBACiAJCTkzOEU2NjI1MDlGMDk5NTYwMDhBNDhFQyAvKiBI
VE1MQ2FudmFzRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTENhbnZhc0Vs
ZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzhFNjY1RjA5RjA5Qjgx
MDA4QTQ4RUMgLyogSlNIVE1MQ2FudmFzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0hUTUxDYW52YXNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM4RTY2NjEwOUYwOUI4NzAwOEE0OEVDIC8qIEpTSFRNTENhbnZhc0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MQ2FudmFzRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzhFNjgzQjA5RjBCRDdBMDA4
QTQ4RUMgLyogR3JhcGhpY3NUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc1R5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzOEU2ODUz
MDlGMEJFMDQwMDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzkyRjE0MTBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQ291bnRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyRjE0MzBBRDE4NUZFMDA2OTFCRDQgLyogUmVuZGVy
Q291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTJGMTQ1MEFEMTg2
MEMwMDY5MUJENCAvKiBDb3VudGVyUmVzZXROb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb3VudGVyUmVzZXROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NTczLDggKzQ1NjgsNiBAQAogCQlBODEzNjlDOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEtleWdlbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxLZXlnZW5FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgx
MzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MTY1NUQyMDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2Fu
dmFzTWFza2VyUXVhcnR6LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2Fu
dmFzTWFza2VyUXVhcnR6Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MTY1NUQz
MDk2QkJFQUMwMDYwMTA1OCAvKiBLQ2FudmFzTWFza2VyUXVhcnR6Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtDYW52YXNNYXNrZXJRdWFydHoubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdN
YXNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
TWFza0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE2NTVFMzA5
NkJDMTM5MDA2MDEwNTggLyogU1ZHTWFza0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR01hc2tFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4MTg1RjMxMDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDU5OCw3ICs0NTkxLDYgQEAKIAkJQTgyMzk4QTcwOUIzQUNGNTAwQjYw
NjQxIC8qIFBsdWdJbkluZm9TdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbHVnSW5JbmZvU3RvcmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4MjM5REZFMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTgyM0E3NUIwOUI2RTUzOTAwQjYwNjQxIC8qIEdyYXBoaWNzQ29u
dGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgyNkU4QUMwQTFBOEYy
MzAwQ0QxQkI2IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MjZFOEFEMEExQThGMjMwMENEMUJCNiAv
KiBKU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MkZDMzNCMDhDQkIwN0MwMEVGRUUyMyAvKiBT
VkdDdXJzb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQ3Vyc29yRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTQ2MTcsMTQgKzQ2MDksNiBAQAogCQlB
ODMzQzdGNjBBMkNGMUQ4MDBENTc2NjQgLyogeG1sYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IHhtbGF0dHJzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODMzQzgw
QTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBODQxNUY5MTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc0NsaXBwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlw
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNDbGlw
cGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0MTVGOTMwQUMxMEM1RDAw
RjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBLQ2FudmFzUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg0
MTVGOTQwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLQ2FudmFzUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5NTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01h
c2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFza2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4NDE1Rjk2MEFDMTBDNUQwMEY3RDBERiAv
KiBLQ2FudmFzTWFza2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEtDYW52YXNNYXNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODQxNUY5
NzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLQ2FudmFzTWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE4NDE1Rjk4MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNNYXJrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODQxNUY5OTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZh
c0ZpbHRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZh
c0ZpbHRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODVEN0EyRjA4NzlF
QkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1
YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUE4NUQ3
QThDMDg3OUVDNjQwMDZBOTE3MiAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3Jt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CkBAIC00OTI0LDggKzQ5MDgsNiBAQAogCQlBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyog
S0NhbnZhc0ZpbHRlclF1YXJ0ei5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtDYW52YXNGaWx0ZXJRdWFydHouaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGQjZBMDg5NzAxRjgw
MEJBNTExNCAvKiBLQ2FudmFzRmlsdGVyUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLQ2FudmFzRmlsdGVyUXVhcnR6Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJQThDMEZCNkMwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNJdGVtUXVhcnR6Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLQ2Fu
dmFzSXRlbVF1YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGQjZEMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVz
b3VyY2VzUXVhcnR6LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEZCNkUwODk3MDFGODAwQkE1
MTE0IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHoubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtDYW52YXNSZXNvdXJjZXNRdWFydHou
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlBOEMwRkI3MTA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtSZW5k
ZXJpbmdEZXZpY2VRdWFydHouaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGQjcyMDg5NzAxRjgwMEJBNTExNCAvKiBLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCNzMw
ODk3MDFGODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC00OTM0LDggKzQ5MTYs
NiBAQAogCQlBOEMwRkI3NjA4OTcwMUY4MDBCQTUxMTQgLyogUXVhcnR6U3VwcG9ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJ0elN1cHBv
cnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUE4QzBGQjc3MDg5NzAxRjgwMEJBNTExNCAvKiBRdWFydHpTdXBwb3J0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWFy
dHpTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQThDMEZCN0YwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0Nh
bnZhc0ZpbHRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07Ci0JCUE4QzBGQjgxMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2Fu
dmFzSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07Ci0JCUE4QzBGQjg5MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VM
aXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMzMjkyMDA5M0JCNzMyMDAwQjlDQUMg
LyogV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMzI5MjEwOTNC
QjczMjAwMEI5Q0FDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXJpdGhtZXRpY0ZpbHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThD
MzI5MjIwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLQXJpdGhtZXRpY0Zp
bHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKQEAgLTUxNDAsNiArNTEyMCwyMiBAQAogCQlCMjIyRjY5NzBBQjc3MTk1MDAyMkVGQUQg
LyogSlNTVkdBbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdB
bmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyRjY5QTBBQjc3MUI4MDAy
MkVGQUQgLyogSlNTVkdFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NWR0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjIyRjY5QjBBQjc3MUI4MDAyMkVGQUQgLyogSlNTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJBMDE1OTIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJBMDE1OTMwQUY2Q0Q1MzAwNkJDRTBF
IC8qIEdyYXBoaWNzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQTAxNTk0
MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc1R5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjJBMDE1OTUwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJBMDE1OTgwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jl
c291cmNlQ2xpcHBlckNnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNWR1Jlc291cmNlQ2xpcHBlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCMkEwMTU5OTBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VJbWFnZUNnLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR1Jlc291cmNlSW1hZ2VDZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJBMDE1OUEwQUY2Q0Q1MzAwNkJDRTBF
IC8qIFNWR1Jlc291cmNlTWFza2VyQ2cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VNYXNrZXJDZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJBMDE1OUYwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdSZXNvdXJjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQTAxNUEwMEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdS
ZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJBMDE1QTEwQUY2Q0Q1MzAwNkJDRTBF
IC8qIFNWR1Jlc291cmNlQ2xpcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjJBMDE1QTIwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlQ2xpcHBlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VDbGlwcGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQTAxNUEzMEFGNkNENTMwMDZCQ0UwRSAvKiBT
VkdSZXNvdXJjZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdS
ZXNvdXJjZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQTAxNUE0MEFG
NkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMkEwMTVBNTBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VN
YXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlTWFy
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQTAxNUE2MEFGNkNENTMwMDZC
Q0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCMkEwMTVBNzBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlTWFza2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQ0I0MTAxMEFCNzU4RTYwMDREOUM0NSAvKiBT
VkdBRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FFbGVtZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDQjQxMDIwQUI3NThFNjAwNEQ5QzQ1IC8q
IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdB
bmltYXRlQ29sb3JFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJD
QjQxMDMwQUI3NThFNjAwNEQ5QzQ1IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04MTk0LDE4ICs4MTkwLDggQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThDMEZCNTMwODk3MDFGNzAwQkE1MTE0IC8qIGRldmlj
ZSAqLywKLQkJCQlBODQxNUY5MjBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuY3Bw
ICovLAotCQkJCUE4NDE1RjkxMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5oICov
LAogCQkJCUE4NDE1Rjk5MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5jcHAgKi8s
CiAJCQkJQThDMEZCN0YwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNGaWx0ZXJzLmggKi8sCi0J
CQkJQThDMEZCODEwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNJbWFnZS5oICovLAotCQkJCUE4
NDE1Rjk4MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCAqLywKLQkJCQlBODQx
NUY5NzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hcmtlci5oICovLAotCQkJCUE4NDE1Rjk2
MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCAqLywKLQkJCQlBODQxNUY5NTBB
QzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc01hc2tlci5oICovLAotCQkJCUE4NDE1Rjk0MEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuY3BwICovLAotCQkJCUE4NDE1RjkzMEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuaCAqLywKLQkJCQlBOEMwRkI4OTA4OTcwMUY4
MDBCQTUxMTQgLyogS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCAqLywKIAkJCQlBODEwRTM5NDA4
QTQxNjBGMDAzMzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5jcHAgKi8sCiAJCQkJQTgxMEUzOTMw
OEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcuaCAqLywKIAkJCSk7CkBAIC04MjM2
LDEwICs4MjIyLDYgQEAKIAkJCQlBOEMwRkI2OTA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc0Zp
bHRlclF1YXJ0ei5oICovLAogCQkJCUE4QzBGQjZBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFz
RmlsdGVyUXVhcnR6Lm1tICovLAogCQkJCUE4QzBGQjZDMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2Fu
dmFzSXRlbVF1YXJ0ei5tbSAqLywKLQkJCQlBODE2NTVEMjA5NkJCRUFDMDA2MDEwNTggLyogS0Nh
bnZhc01hc2tlclF1YXJ0ei5oICovLAotCQkJCUE4MTY1NUQzMDk2QkJFQUMwMDYwMTA1OCAvKiBL
Q2FudmFzTWFza2VyUXVhcnR6Lm1tICovLAotCQkJCUE4QzBGQjZEMDg5NzAxRjgwMEJBNTExNCAv
KiBLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmggKi8sCi0JCQkJQThDMEZCNkUwODk3MDFGODAwQkE1
MTE0IC8qIEtDYW52YXNSZXNvdXJjZXNRdWFydHoubW0gKi8sCiAJCQkJQThDMEZCNzEwODk3MDFG
ODAwQkE1MTE0IC8qIEtSZW5kZXJpbmdEZXZpY2VRdWFydHouaCAqLywKIAkJCQlBOEMwRkI3MjA4
OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbSAqLywKIAkJCQlBOEMw
RkI3MzA4OTcwMUY4MDBCQTUxMTQgLyogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFy
dHoubW0gKi8sCkBAIC04Mjk5LDYgKzgyODEsNDUgQEAKIAkJCXBhdGggPSBmaWx0ZXJzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBF
IC8qIGdyYXBoaWNzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlCMkEwMTU5MjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAqLywK
KwkJCQlCMkEwMTU5MzBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NDb250ZXh0LmggKi8sCisJ
CQkJQjJBMDE1OTQwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwICovLAorCQkJ
CUIyQTAxNTk1MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggKi8sCisJCQkJQjJB
MDE1OTYwQUY2Q0Q1MzAwNkJDRTBFIC8qIHN2ZyAqLywKKwkJCSk7CisJCQlwYXRoID0gZ3JhcGhp
Y3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCMkEwMTU5NjBBRjZDRDUz
MDA2QkNFMEUgLyogc3ZnICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlCMkEwMTU5NzBBRjZDRDUzMDA2QkNFMEUgLyogY2cgKi8sCisJCQkJQjJBMDE1OUYw
QUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlLmNwcCAqLywKKwkJCQlCMkEwMTVBMDBBRjZD
RDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2UuaCAqLywKKwkJCQlCMkEwMTVBMTBBRjZDRDUzMDA2
QkNFMEUgLyogU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCAqLywKKwkJCQlCMkEwMTVBMjBBRjZDRDUz
MDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VDbGlwcGVyLmggKi8sCisJCQkJQjJBMDE1QTMwQUY2Q0Q1
MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlSW1hZ2UuaCAqLywKKwkJCQlCMkEwMTVBNDBBRjZDRDUz
MDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXJrZXIuY3BwICovLAorCQkJCUIyQTAxNUE1MEFGNkNE
NTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hcmtlci5oICovLAorCQkJCUIyQTAxNUE2MEFGNkNE
NTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlci5jcHAgKi8sCisJCQkJQjJBMDE1QTcwQUY2
Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlTWFza2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IHN2ZzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUIyQTAxNTk3MEFGNkNE
NTMwMDZCQ0UwRSAvKiBjZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQjJBMDE1OTgwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNn
Lm1tICovLAorCQkJCUIyQTAxNTk5MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZUltYWdl
Q2cubW0gKi8sCisJCQkJQjJBMDE1OUEwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlTWFz
a2VyQ2cubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNnOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJQkMxQTM3OTAwOTdDNkY5NzAwMTlGM0Q4IC8qIGJpbmRpbmdzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTg0NjQsNiArODQ4NSw3
IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJD
RTBFIC8qIGdyYXBoaWNzICovLAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3
b3JrICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKIAkJCQk5MzAz
MkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8sCkBAIC04NTIzLDEwICs4NTQ1LDYgQEAKIAkJ
CQlCQzZEQjM2ODBBMUE3Q0I3MDBFNUNEMTQgLyogR2x5cGhNYXAuaCAqLywKIAkJCQlCQ0MwODk1
NTBBMUM0Q0M5MDA2MTg5QTYgLyogR2x5cGhXaWR0aE1hcC5jcHAgKi8sCiAJCQkJQkNDMDg5Mjkw
QTFDNDk5MTAwNjE4OUE2IC8qIEdseXBoV2lkdGhNYXAuaCAqLywKLQkJCQlBODIzQTc1QjA5QjZF
NTM5MDBCNjA2NDEgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAqLywKLQkJCQk5MzUzNjdFNDA5QUY3
N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0LmggKi8sCi0JCQkJOTM4RTY4NTMwOUYwQkUw
NDAwOEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuY3BwICovLAotCQkJCTkzOEU2ODNCMDlGMEJEN0Ew
MDhBNDhFQyAvKiBHcmFwaGljc1R5cGVzLmggKi8sCiAJCQkJMDY2Qzc3M0IwQUI2MDUyNzAwMjM4
Q0M0IC8qIEljb24uaCAqLywKIAkJCQlCQzZCN0JBRTA5OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2Uu
Y3BwICovLAogCQkJCUJDRDc1QUJCMDk4OUE0NDYwMDNFMjhERiAvKiBJbWFnZS5oICovLApAQCAt
OTE1MiwxMyArOTE3MCwxMCBAQAogCQkJCUE4OEFEM0E1MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1Nw
ZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFEM0E4MDk1MjQ4
NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4
QUQzQUEwOTUyNDg2RDAwMUREMTk2IC8qIEtDYW52YXNGaWx0ZXJRdWFydHouaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE4OEFEM0FFMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzUmVzb3VyY2VzUXVh
cnR6LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNCMDA5NTI0ODZFMDAxREQxOTYgLyogS1Jl
bmRlcmluZ0RldmljZVF1YXJ0ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQzQjMwOTUyNDg2
RTAwMUREMTk2IC8qIEtSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg4QUQzQjUwOTUyNDg2RTAwMUREMTk2IC8qIFF1YXJ0elN1cHBvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4OEFEM0JFMDk1MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzRmlsdGVycy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQzQzAwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQzQzcwOTUyNDg2RTAwMUREMTk2IC8qIEtD
YW52YXNSZXNvdXJjZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDNDQjA5NTI0
ODZFMDAxREQxOTYgLyogS0NhbnZhc1RyZWVEZWJ1Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4
QUQ0MDIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1JlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODhBRDQwNDA5NTI0OEYwMDAxREQxOTYgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmggaW4g
SGVhZGVycyAqLywKQEAgLTkyNzUsNyArOTI5MCw2IEBACiAJCQkJQTg4QUQ1MEMwOTUyNDhGMDAw
MUREMTk2IC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENTBEMDk1
MjQ4RjAwMDFERDE5NiAvKiBrc3ZnLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUyRTdBQTA5NkFB
MTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTgxNjU1RDQwOTZCQkVBQzAwNjAxMDU4IC8qIEtDYW52YXNNYXNrZXJRdWFydHouaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTY1NUU1MDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5Q0EwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJ
c0luZGV4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5Q0MwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ3MSw3ICs5NDg1
LDYgQEAKIAkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM2RDZERDMwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNTM2NzNGMDlBRUQ3OTIwMEQzNUNENiAvKiBTY3JvbGxCYXJNb2RlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk5MzUzNjdFNTA5QUY3N0REMDBEMzVDRDYgLyogR3JhcGhpY3NDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUzNjg2QjA5QUY3OEY2MDBEMzVDRDYgLyogVGV4dERp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3QkQ3NEUwOUFGREM1NDAwNUEyMDU2IC8q
IFRleHRDb2RlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3QkQ3NTAwOUFGREM1NDAwNUEyMDU2
IC8qIFRleHRFbmNvZGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTY4LDcgKzk1ODEsNiBAQAog
CQkJCTE0Q0Y3QjM0MDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOEU2NUYxMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOEU2NjYyMDlGMDlCODcwMDhBNDhFQyAvKiBK
U0hUTUxDYW52YXNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk5MzhFNjgzQzA5RjBCRDdC
MDA4QTQ4RUMgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODExNjg5NjAw
OUYyQTRBMDAwNzcyQ0EwIC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDExNUI1MjA5Rjg0QjcxMDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQx
MTVCNzMwOUY4NENENjAwQ0E0RkMxIC8qIEpTTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDA2NiwxMCArMTAwNzgsNiBAQAogCQkJCTg1MUVFODIxMEFCQ0E1ODEwMEE2QUEzMyAvKiBE
T01SYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU4MDE1Q0UwQUJDQTc1RDAw
ODA1ODhEIC8qIERPTVhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3OEE2
ODBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlB
ODQxNUY5QTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCUE4NDE1RjlDMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE4NDE1RjlFMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2Vy
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBODQxNUZBMDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZh
c01hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzRkNBQTkwQUMzREI1ODAwQkE1NEFEIC8q
IFBsYXRmb3JtU2Nyb2xsQmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4RDBBQzVENTM1
MDA1MzI3MEYgLyogRE9NQXR0ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4
RTBBQzVENTM1MDA1MzI3MEYgLyogRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTA0OTEsNiArMTA0OTksMTMgQEAKIAkJCQk5M0UyMkE3MzBBRjVFOTRDMDBENDgz
MjQgLyogUGFnZVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTg4MjE2NjBBRjRDREY3MDBG
MDFEMUYgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4ODIxNkIw
QUY0Q0UxMjAwRjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2VNYWMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUIyQTAxNUE5MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMkEwMTVCMzBBRjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyQTAxNUI1MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdS
ZXNvdXJjZUNsaXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyQTAxNUI2MEFGNkNENTMwMDZC
Q0UwRSAvKiBTVkdSZXNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMkEwMTVCODBB
RjZDRDUzMDA2QkNFMEUgLyogU1ZHUmVzb3VyY2VNYXJrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUIyQTAxNUJBMEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0xMDY4NCw3ICsxMDY5OSw2IEBACiAJCQkJQTg4QUQzQTkwOTUyNDg2RDAwMURE
MTk2IC8qIFdLU3BvdExpZ2h0RmlsdGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNBQjA5
NTI0ODZEMDAxREQxOTYgLyogS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4OEFEM0FEMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzSXRlbVF1YXJ0ei5tbSBpbiBT
b3VyY2VzICovLAotCQkJCUE4OEFEM0FGMDk1MjQ4NkQwMDFERDE5NiAvKiBLQ2FudmFzUmVzb3Vy
Y2VzUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQjEwOTUyNDg2RTAwMUREMTk2
IC8qIEtSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNC
MjA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHou
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNCNDA5NTI0ODZFMDAxREQxOTYgLyogS1JlbmRl
cmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDgwMSw3ICsxMDgx
NSw2IEBACiAJCQkJQTg4QUQ1MEIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1pvb21BbmRQYW4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ1QUEwOTUyNTEzMTAwMUREMTk2IC8qIFNWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MkU3QUIwOTZBQTExQjAwMDZG
MjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVzcGFjZXMubW0gaW4gU291cmNlcyAqLywKLQkJCQlBODE2
NTVENTA5NkJCRUFDMDA2MDEwNTggLyogS0NhbnZhc01hc2tlclF1YXJ0ei5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4MTY1NUU0MDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlDQjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5k
ZXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUNEMDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MSW5wdXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5OTIsNyArMTEw
MDUsNiBAQAogCQkJCUE4MjM5RTAwMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUIzNzczMDlCN0JBMzkwMENCMzhCMSAvKiBGb250TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODIzQTc1QzA5QjZFNTM5MDBC
NjA2NDEgLyogR3JhcGhpY3NDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCMjNBMzEy
MDlCQkE3NzYwMDY3Q0M1MyAvKiBIVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUFCMjNBMzI3MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzUyMDcxRDA5QkQzQkJCMDBGMjAzOEQg
LyogVGV4dEJvdW5kYXJpZXMubW0gaW4gU291cmNlcyAqLywKQEAgLTExMDU5LDcgKzExMDcxLDYg
QEAKIAkJCQkxNENGN0IzMzA5RjZFQ0Q3MDBFQjM2NjUgLyogSlNDU1NSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzOEU2NUY3MDlGMDk4NUQwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM4RTY2NjAwOUYwOUI4MTAwOEE0
OEVDIC8qIEpTSFRNTENhbnZhc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM4RTY4
NTQwOUYwQkUwNDAwOEE0OEVDIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODExNjg5NUYwOUYyQTRBMDAwNzcyQ0EwIC8qIFNWR1RSZWZFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0MTE1QjcyMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFODM3ODQwOUY4NUQxQzAwQjg1QUU0IC8qIEpTRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTU1NCwxMCArMTE1NjUsNiBAQAogCQkJCTg1M0JGNERD
MEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JD
MTQwQUJCQTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUFBMjFFQ0NBMEFCRjBGQkEwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUE4NDE1RjlCMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xp
cHBlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODQxNUY5RDBBQzEwQzVEMDBGN0QwREYgLyog
S0NhbnZhc1Jlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4NDE1RjlGMEFDMTBDNUQw
MEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4NDE1RkEx
MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4NDE1RkEyMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzRmlsdGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NTQxNjM2QTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHVHJhbnNmb3JtTGlz
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1NDE2MzZDMEFDNzE4MEIwMDAxRTAxQiAvKiBET01T
VkdUcmFuc2Zvcm0ubW0gaW4gU291cmNlcyAqLywKQEAgLTExNzMxLDYgKzExNzM4LDE1IEBACiAJ
CQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRTIyN0U0MEFGNTg5QUQwMEQ0ODMyNCAvKiBTdWJyZXNvdXJjZUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0UyMkE2RjBBRjVFOTQxMDBENDgzMjQgLyogUGFn
ZVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIyQTAxNUE4MEFGNkNENTMwMDZCQ0UwRSAv
KiBHcmFwaGljc0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjJBMDE1QUEwQUY2Q0Q1
MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjJBMDE1
QUMwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlQ2xpcHBlckNnLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQjJBMDE1QUQwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlSW1hZ2VDZy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUIyQTAxNUFFMEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNv
dXJjZU1hc2tlckNnLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjJBMDE1QjIwQUY2Q0Q1MzAwNkJD
RTBFIC8qIFNWR1Jlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIyQTAxNUI0MEFGNkNE
NTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjJBMDE1QjcwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlTWFya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUIyQTAxNUI5MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzQ2xpcHBl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNDbGlwcGVyLmNwcAko
cmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0NsaXBwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRlZiBT
VkdfU1VQUE9SVAotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0KLSNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCi0jaW5jbHVkZSAiS0NhbnZhc1RyZWVEZWJ1Zy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxl
IHJ1bGUpCi17Ci0gICAgc3dpdGNoIChydWxlKSB7Ci0gICAgICAgIGNhc2UgUlVMRV9OT05aRVJP
OgotICAgICAgICAgICAgdHMgPDwgIk5PTi1aRVJPIjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgUlVM
RV9FVkVOT0REOgotICAgICAgICAgICAgdHMgPDwgIkVWRU4tT0REIjsgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgS0NDbGlwRGF0YSAmZCkKLXsKLSAgICB0cyA8PCAiW3dpbmRpbmc9IiA8PCBkLndp
bmRSdWxlKCkgPDwgIl0iOwotICAgIGlmIChkLmJib3hVbml0cykKLSAgICAgICAgdHMgPDwgIiBb
Ym91bmRpbmcgYm94IG1vZGU9IiA8PCBkLmJib3hVbml0cyAgPDwgIl0iOyAgICAKLSAgICB0cyA8
PCAiIFtwYXRoPSIgPDwgZC5wYXRoLmRlYnVnU3RyaW5nKCkgPDwgIl0iOwotICAgIHJldHVybiB0
czsKLX0KLQotS0NhbnZhc0NsaXBwZXI6OktDYW52YXNDbGlwcGVyKCkgOiBLQ2FudmFzUmVzb3Vy
Y2UoKQotewotfQotCi1LQ2FudmFzQ2xpcHBlcjo6fktDYW52YXNDbGlwcGVyKCkKLXsKLX0KLQot
dm9pZCBLQ2FudmFzQ2xpcHBlcjo6cmVzZXRDbGlwRGF0YSgpCi17Ci0gICAgbV9jbGlwRGF0YS5j
bGVhcigpOwotfQotCi12b2lkIEtDYW52YXNDbGlwcGVyOjphZGRDbGlwRGF0YShjb25zdCBQYXRo
JiBwYXRoLCBXaW5kUnVsZSBydWxlLCBib29sIGJib3hVbml0cykKLXsKLSAgICBtX2NsaXBEYXRh
LmFkZFBhdGgocGF0aCwgcnVsZSwgYmJveFVuaXRzKTsKLX0KLQotS0NDbGlwRGF0YUxpc3QgS0Nh
bnZhc0NsaXBwZXI6OmNsaXBEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGlwRGF0YTsK
LX0KLQotVGV4dFN0cmVhbSYgS0NhbnZhc0NsaXBwZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMgPDwgIlt0eXBlPUNMSVBQRVJdIjsKLSAg
ICB0cyA8PCAiIFtjbGlwIGRhdGE9IiA8PCBjbGlwRGF0YSgpIDw8ICJdIjsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KLUtDYW52YXNDbGlwcGVyICpnZXRDbGlwcGVyQnlJZChEb2N1bWVudCAqZG9jdW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyAmaWQpCi17Ci0gICAgS0NhbnZhc1Jlc291cmNlICpyZXNv
dXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOwotICAgIGlmIChyZXNvdXJjZSAm
JiByZXNvdXJjZS0+aXNDbGlwcGVyKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxLQ2Fu
dmFzQ2xpcHBlcio+KHJlc291cmNlKTsKLSAgICByZXR1cm4gMDsKLX0KLQotfQotCi0vLyB2aW06
dHM9NDpub2V0Ci0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLQpJbmRleDogV2ViQ29yZS9rY2FudmFz
L0tDYW52YXNDbGlwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXND
bGlwcGVyLmgJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNDbGlw
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAg
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2lmbmRlZiBLQ2FudmFzQ2xpcHBl
cl9oCi0jZGVmaW5lIEtDYW52YXNDbGlwcGVyX2gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5j
bHVkZSAiS0NhbnZhc1Jlc291cmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdHlwZWRl
ZiBEZXByZWNhdGVkVmFsdWVMaXN0PGNvbnN0IFJlbmRlclBhdGgqPiBSZW5kZXJQYXRoTGlzdDsK
LQotY2xhc3MgVGV4dFN0cmVhbTsKLQotc3RydWN0IEtDQ2xpcERhdGEKLXsKLSAgICBXaW5kUnVs
ZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KLSAgICBXaW5kUnVsZSBt
X3dpbmRSdWxlOwotICAgIGJvb2wgYmJveFVuaXRzIDogMTsKLSAgICBQYXRoIHBhdGg7Ci19Owot
Ci1jbGFzcyBLQ0NsaXBEYXRhTGlzdCA6IHB1YmxpYyBEZXByZWNhdGVkVmFsdWVMaXN0PEtDQ2xp
cERhdGE+Ci17Ci1wdWJsaWM6Ci0gICAgS0NDbGlwRGF0YUxpc3QoKSB7IH0KLQotICAgIGlubGlu
ZSB2b2lkIGFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aERhdGEsIFdpbmRSdWxlIHdpbmRSdWxlLCBi
b29sIGJib3hVbml0cykKLSAgICB7Ci0gICAgICAgIEtDQ2xpcERhdGEgY2xpcERhdGE7Ci0gICAg
ICAgIGNsaXBEYXRhLmJib3hVbml0cyA9IGJib3hVbml0czsKLSAgICAgICAgY2xpcERhdGEubV93
aW5kUnVsZSA9IHdpbmRSdWxlOwotICAgICAgICBjbGlwRGF0YS5wYXRoID0gcGF0aERhdGE7Ci0g
ICAgICAgIGFwcGVuZChjbGlwRGF0YSk7Ci0gICAgfQotfTsKLQotY2xhc3MgS0NhbnZhc0NsaXBw
ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlCi17Ci1wdWJsaWM6Ci0gICAgS0NhbnZhc0NsaXBw
ZXIoKTsKLSAgICB2aXJ0dWFsIH5LQ2FudmFzQ2xpcHBlcigpOwotICAgIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlc2V0
Q2xpcERhdGEoKTsKLSAgICB2b2lkIGFkZENsaXBEYXRhKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSwg
Ym9vbCBiYm94VW5pdHMpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNsaXAoY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QgPSAwOwotCi0gICAgS0NDbGlwRGF0YUxpc3Qg
Y2xpcERhdGEoKSBjb25zdDsKLQotICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYpIGNvbnN0OyAKLXByb3RlY3RlZDoKLSAgICBLQ0NsaXBEYXRhTGlzdCBt
X2NsaXBEYXRhOwotfTsKLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgV2lu
ZFJ1bGUpOwotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgS0NDbGlw
RGF0YSYpOwotCi1LQ2FudmFzQ2xpcHBlciogZ2V0Q2xpcHBlckJ5SWQoRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgot
Ci0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0NyZWF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzQ3JlYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAkocmV2aXNpb24gMTc0
NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw5ICs5MCw5IEBAIFRleHRTdHJlYW0mIEtDYW52YXNGaWx0ZXI6OmV4dGVybmFsUmVw
cmUKICAgICByZXR1cm4gdHM7CiB9CiAKLUtDYW52YXNGaWx0ZXIgKmdldEZpbHRlckJ5SWQoRG9j
dW1lbnQgKmRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcgJmlkKQorS0NhbnZhc0ZpbHRlciog
Z2V0RmlsdGVyQnlJZChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAmaWQp
CiB7Ci0gICAgS0NhbnZhc1Jlc291cmNlICpyZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1
bWVudCwgaWQpOworICAgIFNWR1Jlc291cmNlKiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChk
b2N1bWVudCwgaWQpOwogICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNGaWx0ZXIoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtDYW52YXNGaWx0ZXIqPihyZXNvdXJjZSk7CiAg
ICAgcmV0dXJuIDA7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkocmV2aXNpb24gMTc0
NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsMTEgQEAKICNkZWZpbmUgS0NhbnZhc0ZpbHRlcnNfSAogI2lmZGVmIFNWR19T
VVBQT1JUCiAKLSNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRJ
bWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgog
CiAjaWZkZWYgX19PQkpDX18KIEBjbGFzcyBDSUZpbHRlcjsKQEAgLTM1LDcgKzM5LDkgQEAgY2xh
c3MgQ0lGaWx0ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKE1BQykK
IGNsYXNzIEtDYW52YXNGaWx0ZXJRdWFydHo7CisjZW5kaWYKIAogLy8gRW51bWVyYXRpb25zCiB0
eXBlZGVmIGVudW0gewpAQCAtOTYsNyArMTAyLDcgQEAgcHJpdmF0ZToKIGNsYXNzIEtDYW52YXNG
aWx0ZXJFZmZlY3Q7CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlOwogCi1jbGFzcyBLQ2FudmFzRmls
dGVyIDogcHVibGljIEtDYW52YXNSZXNvdXJjZSB7CitjbGFzcyBLQ2FudmFzRmlsdGVyIDogcHVi
bGljIFNWR1Jlc291cmNlIHsKIHB1YmxpYzoKICAgICBLQ2FudmFzRmlsdGVyKCkgeyB9CiAgICAg
dmlydHVhbCB+S0NhbnZhc0ZpbHRlcigpIHsgfQpAQCAtMTQ4LDcgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgcmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgU3Ry
aW5nJik7CiAKLSNpZiBfX0FQUExFX18KKyNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCBD
SUZpbHRlciogZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiopIGNvbnN0ID0gMDsKICNl
bmRpZgogCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc0ltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNJbWFnZS5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdl
YkNvcmUva2NhbnZhcy9LQ2FudmFzSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWMu
c2VpZGVsQGtkZW1haWwubmV0PgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K
LSovCi0KLSNpZm5kZWYgS0NhbnZhc0ltYWdlX0gKLSNkZWZpbmUgS0NhbnZhc0ltYWdlX0gKLSNp
ZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiS0NhbnZhc1Jlc291cmNlLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlOwotCi1jbGFzcyBLQ2FudmFzSW1hZ2UgOiBwdWJs
aWMgS0NhbnZhc1Jlc291cmNlCi17Ci1wdWJsaWM6Ci0gICAgS0NhbnZhc0ltYWdlKCkgeyB9Owot
ICAgIHZpcnR1YWwgfktDYW52YXNJbWFnZSgpIHsgfTsKLQotICAgIHZpcnR1YWwgdm9pZCBpbml0
KGNvbnN0IEltYWdlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbml0KEludFNpemUpID0gMDsK
LQotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgPSAwOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKLSNlbmRpZgotCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hcmtl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXJrZXIuY3BwCShy
ZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNW
R19TVVBQT1JUCi0jaW5jbHVkZSAiS0NhbnZhc01hcmtlci5oIgotCi0jaW5jbHVkZSAiUmVuZGVy
U1ZHQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEtDYW52YXNNYXJrZXIK
LUtDYW52YXNNYXJrZXI6OktDYW52YXNNYXJrZXIoUmVuZGVyU1ZHQ29udGFpbmVyKiBtYXJrZXIp
Ci0gICAgOiBLQ2FudmFzUmVzb3VyY2UoKQotICAgICwgbV9yZWZYKDApCi0gICAgLCBtX3JlZlko
MCkKLSAgICAsIG1fbWFya2VyKG1hcmtlcikKLSAgICAsIG1fdXNlU3Ryb2tlV2lkdGgodHJ1ZSkK
LXsKLSAgICBzZXRBdXRvQW5nbGUoKTsKLX0KLQotS0NhbnZhc01hcmtlcjo6fktDYW52YXNNYXJr
ZXIoKQotewotfQotCi12b2lkIEtDYW52YXNNYXJrZXI6OnNldE1hcmtlcihSZW5kZXJTVkdDb250
YWluZXIqIG1hcmtlcikKLXsKLSAgICBtX21hcmtlciA9IG1hcmtlcjsKLX0KLQotdm9pZCBLQ2Fu
dmFzTWFya2VyOjpzZXRSZWYoZG91YmxlIHJlZlgsIGRvdWJsZSByZWZZKQotewotICAgIG1fcmVm
WCA9IHJlZlg7Ci0gICAgbV9yZWZZID0gcmVmWTsKLX0KLQotZG91YmxlIEtDYW52YXNNYXJrZXI6
OnJlZlgoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlZlg7Ci19Ci0KLWRvdWJsZSBLQ2FudmFz
TWFya2VyOjpyZWZZKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWZZOwotfQotCi12b2lkIEtD
YW52YXNNYXJrZXI6OnNldEFuZ2xlKGZsb2F0IGFuZ2xlKQotewotICAgIG1fYW5nbGUgPSBhbmds
ZTsKLX0KLQotZmxvYXQgS0NhbnZhc01hcmtlcjo6YW5nbGUoKSBjb25zdAotewotICAgIHJldHVy
biBtX2FuZ2xlOwotfQotCi12b2lkIEtDYW52YXNNYXJrZXI6OnNldEF1dG9BbmdsZSgpCi17Ci0g
ICAgbV9hbmdsZSA9IC0xOwotfQotCi12b2lkIEtDYW52YXNNYXJrZXI6OnNldFVzZVN0cm9rZVdp
ZHRoKGJvb2wgdXNlU3Ryb2tlV2lkdGgpCi17Ci0gICAgbV91c2VTdHJva2VXaWR0aCA9IHVzZVN0
cm9rZVdpZHRoOwotfQotCi1ib29sIEtDYW52YXNNYXJrZXI6OnVzZVN0cm9rZVdpZHRoKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV91c2VTdHJva2VXaWR0aDsKLX0KLQotdm9pZCBLQ2FudmFzTWFy
a2VyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCwgZG91YmxlIGFuZ2xlKQot
ewotICAgIGlmICghbV9tYXJrZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSk7Ci0gICAg
dHJhbnNmb3JtLnJvdGF0ZShtX2FuZ2xlID4gLTEgPyBtX2FuZ2xlIDogYW5nbGUpOwotICAgIAot
ICAgIC8vIHJlZlggYW5kIHJlZlkgYXJlIGdpdmVuIGluIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRv
IHRoZSB2aWV3cG9ydCBlc3RhYmxpc2hlZCBieSB0aGUgbWFya2VyLCB5ZXQgdGhleSBhZmZlY3QK
LSAgICAvLyB0aGUgdHJhbnNsYXRpb24gcGVyZm9ybWVkIG9uIHRoZSB2aWV3cG9ydCBpdHNlbGYu
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtOwotICAgIGlmIChtX3VzZVN0
cm9rZVdpZHRoKQotICAgICAgICB2aWV3cG9ydFRyYW5zZm9ybS5zY2FsZShzdHJva2VXaWR0aCwg
c3Ryb2tlV2lkdGgpOwotICAgIGlmICghbV9tYXJrZXItPnZpZXdCb3goKS5pc0VtcHR5KCkpCi0g
ICAgICAgIHZpZXdwb3J0VHJhbnNmb3JtICo9IG1fbWFya2VyLT52aWV3cG9ydFRyYW5zZm9ybSgp
OwotICAgIGRvdWJsZSByZWZYLCByZWZZOwotICAgIHZpZXdwb3J0VHJhbnNmb3JtLm1hcChtX3Jl
ZlgsIG1fcmVmWSwgJnJlZlgsICZyZWZZKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1yZWZY
LCAtcmVmWSk7Ci0gICAgCi0gICAgaWYgKG1fdXNlU3Ryb2tlV2lkdGgpCi0gICAgICAgIHRyYW5z
Zm9ybS5zY2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOwotICAgIAotICAgIC8vIEZJWE1F
OiBQYWludEluZm8gc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHRoaXMgbWV0aG9kIGluc3RlYWQgb2Yg
YmVpbmcgY3JlYXRlZCBoZXJlCi0gICAgLy8gRklYTUU6IGJvdW5kaW5nIGJveCBmcmFjdGlvbnMg
YXJlIGxvc3QKLSAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKGNvbnRleHQsIGVuY2xv
c2luZ0ludFJlY3QocmVjdCksIFBhaW50UGhhc2VGb3JlZ3JvdW5kLCAwLCAwLCAwKTsKLSAgICAK
LSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7
Ci0gICAgbV9tYXJrZXItPnNldERyYXdzQ29udGVudHModHJ1ZSk7Ci0gICAgbV9tYXJrZXItPnBh
aW50KGluZm8sIDAsIDApOwotICAgIG1fbWFya2VyLT5zZXREcmF3c0NvbnRlbnRzKGZhbHNlKTsK
LSAgICBjb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KLVRleHRTdHJlYW0mIEtDYW52YXNNYXJrZXI6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMg
PDwgIlt0eXBlPU1BUktFUl0iCi0gICAgICAgPDwgIiBbYW5nbGU9IjsKLSAgICBpZiAoYW5nbGUo
KSA9PSAtMSkgCi0gICAgICAgIHRzIDw8ICJhdXRvIiA8PCAiXSI7Ci0gICAgZWxzZSAKLSAgICAg
ICAgdHMgPDwgYW5nbGUoKSA8PCAiXSI7ICAgICAgICAKLSAgICB0cyA8PCAiIFtyZWYgeD0iIDw8
IHJlZlgoKSA8PCAiIHk9IiA8PCByZWZZKCkgPDwgIl0iOwotICAgIHJldHVybiB0czsKLX0KLQot
S0NhbnZhc01hcmtlciAqZ2V0TWFya2VyQnlJZChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IEF0
b21pY1N0cmluZyAmaWQpCi17Ci0gICAgS0NhbnZhc1Jlc291cmNlICpyZXNvdXJjZSA9IGdldFJl
c291cmNlQnlJZChkb2N1bWVudCwgaWQpOwotICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS0+
aXNNYXJrZXIoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtDYW52YXNNYXJrZXIqPihy
ZXNvdXJjZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldAotI2Vu
ZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWFya2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXJrZXIuaAkocmV2aXNp
b24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hcmtlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc01hcmtlcl9ICi0jZGVmaW5lIEtDYW52
YXNNYXJrZXJfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJLQ2FudmFzUmVzb3Vy
Y2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBLQ2FudmFzTWFya2VyIDogcHVi
bGljIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNNYXJrZXIoUmVuZGVy
U1ZHQ29udGFpbmVyKiA9IDApOwotICAgIHZpcnR1YWwgfktDYW52YXNNYXJrZXIoKTsKLSAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAg
ICB2b2lkIHNldE1hcmtlcihSZW5kZXJTVkdDb250YWluZXIqKTsKLSAgICAKLSAgICB2b2lkIHNl
dFJlZihkb3VibGUgcmVmWCwgZG91YmxlIHJlZlkpOwotICAgIGRvdWJsZSByZWZYKCkgY29uc3Q7
ICAgIAotICAgIGRvdWJsZSByZWZZKCkgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXRBbmdsZShm
bG9hdCBhbmdsZSk7Ci0gICAgdm9pZCBzZXRBdXRvQW5nbGUoKTsKLSAgICBmbG9hdCBhbmdsZSgp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXRVc2VTdHJva2VXaWR0aChib29sIHVzZVN0cm9rZVdpZHRo
ID0gdHJ1ZSk7Ci0gICAgYm9vbCB1c2VTdHJva2VXaWR0aCgpIGNvbnN0OwotCi0gICAgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSB4LCBkb3VibGUg
eSwgZG91YmxlIHN0cm9rZVdpZHRoID0gMSwgZG91YmxlIGFuZ2xlID0gMCk7Ci0KLSAgICBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsgCi0KLXBy
aXZhdGU6Ci0gICAgZG91YmxlIG1fcmVmWCwgbV9yZWZZOwotICAgIGZsb2F0IG1fYW5nbGU7Ci0g
ICAgUmVuZGVyU1ZHQ29udGFpbmVyKiBtX21hcmtlcjsKLSAgICBib29sIG1fdXNlU3Ryb2tlV2lk
dGg7Ci19OwotCi1LQ2FudmFzTWFya2VyKiBnZXRNYXJrZXJCeUlkKERvY3VtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0KLX0KLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWFza2VyLmNwcAkocmV2aXNp
b24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hc2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNWR19TVVBQ
T1JUCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgotCi0jaW5jbHVkZSAiS0NhbnZhc0ltYWdl
LmgiCi0jaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUtD
YW52YXNNYXNrZXI6OktDYW52YXNNYXNrZXIoKQotICAgIDogS0NhbnZhc1Jlc291cmNlKCkKLSAg
ICAsIG1fbWFzaygwKQotewotfQotCi1LQ2FudmFzTWFza2VyOjp+S0NhbnZhc01hc2tlcigpCi17
Ci0gICAgZGVsZXRlIG1fbWFzazsKLX0KLQotdm9pZCBLQ2FudmFzTWFza2VyOjpzZXRNYXNrKEtD
YW52YXNJbWFnZSogbWFzaykKLXsKLSAgICBpZiAobV9tYXNrICE9IG1hc2spIHsKLSAgICAgICAg
ZGVsZXRlIG1fbWFzazsKLSAgICAgICAgbV9tYXNrID0gbWFzazsKLSAgICB9Ci19Ci0KLVRleHRT
dHJlYW0mIEtDYW52YXNNYXNrZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0Ci17Ci0gICAgdHMgPDwgIlt0eXBlPU1BU0tFUl0iOwotICAgIHJldHVybiB0czsK
LX0KLQotS0NhbnZhc01hc2tlciogZ2V0TWFza2VyQnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpCi17Ci0gICAgS0NhbnZhc1Jlc291cmNlKiByZXNvdXJjZSA9
IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOwotICAgIGlmIChyZXNvdXJjZSAmJiByZXNv
dXJjZS0+aXNNYXNrZXIoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtDYW52YXNNYXNr
ZXIqPihyZXNvdXJjZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9l
dAotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFz
TWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXNrZXIuaAko
cmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hc2tlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc01hc2tlcl9ICi0jZGVmaW5l
IEtDYW52YXNNYXNrZXJfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJLQ2FudmFz
UmVzb3VyY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUZXh0U3RyZWFtOwot
Y2xhc3MgS0NhbnZhc0ltYWdlOwotCi1jbGFzcyBLQ2FudmFzTWFza2VyIDogcHVibGljIEtDYW52
YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNNYXNrZXIoKTsKLSAgICB2aXJ0dWFs
IH5LQ2FudmFzTWFza2VyKCk7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzTWFza2VyKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0TWFzayhLQ2FudmFzSW1hZ2UqKTsKLSAg
ICBLQ2FudmFzSW1hZ2UqIG1hc2soKSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlNYXNrKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNv
bnN0ID0gMDsKLQotICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYpIGNvbnN0OyAKLXByb3RlY3RlZDoKLSAgICBLQ2FudmFzSW1hZ2UqIG1fbWFzazsKLX07
Ci0KLUtDYW52YXNNYXNrZXIqIGdldE1hc2tlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNT
dHJpbmcmKTsKLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNlLmNwcAkocmV2aXNpb24g
MTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNWR19TVVBQ
T1JUCi0jaW5jbHVkZSAiS0NhbnZhc1Jlc291cmNlLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgotI2luY2x1ZGUgIlNWR1N0eWxl
ZEVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBLQ2FudmFzUmVzb3VyY2UmIHIpIAoteyAKLSAgICBy
ZXR1cm4gci5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsgCi19Ci0KLUtDYW52YXNSZXNvdXJj
ZTo6S0NhbnZhc1Jlc291cmNlKCkKLXsKLX0KLQotS0NhbnZhc1Jlc291cmNlOjp+S0NhbnZhc1Jl
c291cmNlKCkKLXsKLX0KLQotdm9pZCBLQ2FudmFzUmVzb3VyY2U6OmFkZENsaWVudChjb25zdCBS
ZW5kZXJQYXRoICppdGVtKQotewotICAgIGlmKG1fY2xpZW50cy5maW5kKGl0ZW0pICE9IG1fY2xp
ZW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnRzLmFwcGVuZChpdGVt
KTsKLX0KLQotY29uc3QgUmVuZGVyUGF0aExpc3QgJktDYW52YXNSZXNvdXJjZTo6Y2xpZW50cygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50czsKLX0KLQotdm9pZCBLQ2FudmFzUmVzb3Vy
Y2U6OmludmFsaWRhdGUoKQotewotICAgIFJlbmRlclBhdGhMaXN0OjpDb25zdEl0ZXJhdG9yIGl0
ID0gbV9jbGllbnRzLmJlZ2luKCk7Ci0gICAgUmVuZGVyUGF0aExpc3Q6OkNvbnN0SXRlcmF0b3Ig
ZW5kID0gbV9jbGllbnRzLmVuZCgpOwotCi0gICAgZm9yKDsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICBjb25zdF9jYXN0PFJlbmRlclBhdGgqPigqaXQpLT5yZXBhaW50KCk7Ci19Ci0KLVN0cmlu
ZyBLQ2FudmFzUmVzb3VyY2U6OmlkSW5SZWdpc3RyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cmVnaXN0cnlJZDsKLX0KLQotdm9pZCBLQ2FudmFzUmVzb3VyY2U6OnNldElkSW5SZWdpc3RyeShj
b25zdCBTdHJpbmcmIG5ld0lkKQotewotICAgIG1fcmVnaXN0cnlJZCA9IG5ld0lkOwotfSAKLQot
VGV4dFN0cmVhbSYgS0NhbnZhc1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAotewotICAgIHJldHVybiB0czsKLX0KLQotS0NhbnZhc1Jlc291cmNl
KiBnZXRSZXNvdXJjZUJ5SWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkKQotewotICAgIGlmIChpZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEVs
ZW1lbnQgKmVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOwotICAgIFNWR0Vs
ZW1lbnQgKnN2Z0VsZW1lbnQgPSBzdmdfZHluYW1pY19jYXN0KGVsZW1lbnQpOwotICAgIGlmIChz
dmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQtPmlzU3R5bGVkKCkpCi0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCktPmNhbnZhc1Jlc291cmNlKCk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUtSZW5kZXJpbmdQYWludFNlcnZlciogZ2V0UGFpbnRTZXJ2
ZXJCeUlkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKLXsKLSAg
ICBLQ2FudmFzUmVzb3VyY2UqIHJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBp
ZCk7Ci0gICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLT5pc1BhaW50U2VydmVyKCkpCi0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqPihyZXNvdXJjZSk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldAotI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0KSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNlLmgJKHJldmlzaW9uIDE3
NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc1Jlc291cmNlX0gKLSNkZWZpbmUgS0NhbnZh
c1Jlc291cmNlX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFZh
bHVlTGlzdC5oIgotI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCi0j
aW5jbHVkZSAiS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi10eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Y29uc3QgUmVuZGVyUGF0aCo+IFJlbmRl
clBhdGhMaXN0OwotCi1jbGFzcyBUZXh0U3RyZWFtOwotCi10eXBlZGVmIGVudW0KLXsKLSAgICAv
LyBQYWludGluZyBtb2RlCi0gICAgUlNfQ0xJUFBFUiA9IDAsCi0gICAgUlNfTUFSS0VSID0gMSwK
LSAgICBSU19JTUFHRSA9IDIsCi0gICAgUlNfRklMVEVSID0gMywKLSAgICBSU19NQVNLRVIgPSA0
Ci19IEtDUmVzb3VyY2VUeXBlOwotCi1jbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI7Ci0KLWNs
YXNzIEtDYW52YXNSZXNvdXJjZQotewotcHVibGljOgotICAgIEtDYW52YXNSZXNvdXJjZSgpOwot
ICAgIHZpcnR1YWwgfktDYW52YXNSZXNvdXJjZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoKTsKLSAgICB2b2lkIGFkZENsaWVudChjb25zdCBSZW5kZXJQYXRoKik7Ci0KLSAgICBj
b25zdCBSZW5kZXJQYXRoTGlzdCAmY2xpZW50cygpIGNvbnN0OwotICAgIAotICAgIFN0cmluZyBp
ZEluUmVnaXN0cnkoKSBjb25zdDsKLSAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25zdCBTdHJp
bmcmKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc01hc2tlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mKSBjb25zdDsgCi1wcml2YXRlOgotICAgIFJlbmRlclBhdGhMaXN0IG1fY2xpZW50czsK
LSAgICBTdHJpbmcgbV9yZWdpc3RyeUlkOwotfTsKLQotS0NhbnZhc1Jlc291cmNlKiBnZXRSZXNv
dXJjZUJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLUtSZW5kZXJpbmdQYWlu
dFNlcnZlciogZ2V0UGFpbnRTZXJ2ZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEtDYW52YXNS
ZXNvdXJjZSYpOwotCi19Ci0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VMaXN0ZW5l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VMaXN0ZW5l
ci5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VM
aXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgot
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0g
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwK
LSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc1Jl
c291cmNlTGlzdGVuZXJfSAotI2RlZmluZSBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lcl9ICi0jaWZk
ZWYgU1ZHX1NVUFBPUlQKLQotY2xhc3MgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIKLXsKLXB1Ymxp
YzoKLSAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lcigpIHsgfQotICAgIHZpcnR1YWwgfktDYW52
YXNSZXNvdXJjZUxpc3RlbmVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VOb3Rp
ZmljYXRpb24oKSBjb25zdCA9IDA7Ci19OwotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRp
ZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1RyZWVE
ZWJ1Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNUcmVlRGVidWcu
Y3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzVHJlZURlYnVn
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBACiAjaWZkZWYgU1ZHX1NVUFBP
UlQKICNpbmNsdWRlICJLQ2FudmFzVHJlZURlYnVnLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUNsaXBwZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R0NvbnRhaW5lci5oIgotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCiAjaW5jbHVkZSAiS1Jl
bmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oIgpAQCAtMzYyLDE0
ICszNjIsMTUgQEAgdm9pZCB3cml0ZVJlbmRlclJlc291cmNlcyhUZXh0U3RyZWFtJiB0cwogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU1ZHU3R5bGVkRWxlbWVudCAqc3R5bGVkID0g
c3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHN2Z0VsZW1lbnQpOwotICAgICAgICBLQ2Fu
dmFzUmVzb3VyY2UgKnJlc291cmNlID0gc3R5bGVkLT5jYW52YXNSZXNvdXJjZSgpOworICAgICAg
ICBSZWZQdHI8U1ZHUmVzb3VyY2U+IHJlc291cmNlKHN0eWxlZC0+Y2FudmFzUmVzb3VyY2UoKSk7
CiAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZWxlbWVudElkID0gc3ZnRWxlbWVudC0+Z2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKS5kZXByZWNhdGVkU3RyaW5nKCk7Ci0gICAgICAgIGlm
IChyZXNvdXJjZS0+aXNQYWludFNlcnZlcigpKQotICAgICAgICAgICAgdHMgPDwgIktSZW5kZXJp
bmdQYWludFNlcnZlciB7aWQ9XCIiIDw8IGVsZW1lbnRJZCA8PCAiXCIgIiA8PCAqc3RhdGljX2Nh
c3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyKj4ocmVzb3VyY2UpIDw8ICJ9IiA8PCBlbmRsOwotICAg
ICAgICBlbHNlCisgICAgICAgIGlmIChyZXNvdXJjZS0+aXNQYWludFNlcnZlcigpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyPiBwYWludFNlcnZlciA9IFdURjo6
c3RhdGljX3BvaW50ZXJfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI+KHJlc291cmNlKTsKKyAg
ICAgICAgICAgIHRzIDw8ICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIge2lkPVwiIiA8PCBlbGVtZW50
SWQgPDwgIlwiICIgPDwgKnBhaW50U2VydmVyIDw8ICJ9IiA8PCBlbmRsOworICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHRzIDw8ICJLQ2FudmFzUmVzb3VyY2Uge2lkPVwiIiA8PCBlbGVtZW50
SWQgPDwgIlwiICIgPDwgKnJlc291cmNlIDw8ICJ9IiA8PCBlbmRsOwogICAgIH0gd2hpbGUgKChu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShwYXJlbnQpKSk7CiB9CkluZGV4OiBXZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAkocmV2aXNpb24gMTc0NDkpCisrKyBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBQYXRoOworCiAvLyBha2Eg
d2hlcmUgdG8gZHJhdwogY2xhc3MgS1JlbmRlcmluZ0RldmljZUNvbnRleHQKIHsKQEAgLTQ1LDcg
KzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoKSA9IDA7CiB9OwogCi1jbGFzcyBLQ2FudmFzSW1hZ2U7CitjbGFzcyBTVkdS
ZXNvdXJjZUltYWdlOwogY2xhc3MgS0NhbnZhc0ZpbHRlckVmZmVjdDsKIGNsYXNzIEtSZW5kZXJp
bmdEZXZpY2UKIHsKQEAgLTYzLDEyICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBLUmVu
ZGVyaW5nRGV2aWNlQ29udGV4dCogcG9wQ29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNo
Q29udGV4dChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCopOwogICAgIAotICAgIHZpcnR1YWwgS1Jl
bmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHRGb3JJbWFnZShLQ2FudmFzSW1hZ2UqKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dEZvcklt
YWdlKFNWR1Jlc291cmNlSW1hZ2UqKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGlvbiB0b29s
cwotICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlKiBjcmVhdGVSZXNvdXJjZShjb25zdCBLQ1Jl
c291cmNlVHlwZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U1ZHUmVzb3Vy
Y2U+IGNyZWF0ZVJlc291cmNlKGNvbnN0IFNWR1Jlc291cmNlVHlwZSYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEtDYW52YXNGaWx0ZXJFZmZlY3QqIGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBL
Q0ZpbHRlckVmZmVjdFR5cGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXIqIGNyZWF0ZVBhaW50U2VydmVyKGNvbnN0IEtDUGFpbnRTZXJ2ZXJUeXBlJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI+IGNy
ZWF0ZVBhaW50U2VydmVyKGNvbnN0IEtDUGFpbnRTZXJ2ZXJUeXBlJikgY29uc3QgPSAwOwogCiBw
cml2YXRlOgogICAgIFZlY3RvcjxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCo+IG1fY29udGV4dFN0
YWNrOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlci5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ1BhaW50U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxMiBAQAogI2Rl
ZmluZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNs
dWRlICJLQ2FudmFzUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OworY2xhc3Mg
UmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyUGF0aDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xh
c3MgVGV4dFN0cmVhbTsKQEAgLTQ5LDExICs1MCwxMSBAQCBlbnVtIEtDUGFpbnRUYXJnZXRUeXBl
IHsKICAgICBBUFBMWV9UT19TVFJPS0UgPSAyCiB9OwogCi1jbGFzcyBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlCitjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXIgOiBwdWJsaWMgU1ZHUmVzb3VyY2UKIHsKIHB1YmxpYzoKICAgICBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXIoKQotICAgICAgICA6IEtDYW52YXNSZXNvdXJjZSgpCisgICAgICAgIDogU1ZHUmVzb3Vy
Y2UoKQogICAgICAgICAsIG1fYWN0aXZlQ2xpZW50KDApCiAgICAgICAgICwgbV9wYWludGluZ1Rl
eHQoZmFsc2UpCiAgICAgeyB9CkBAIC02NCw5ICs2NSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBS
ZW5kZXJQYXRoKiBhY3RpdmVDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUNsaWVudDt9
CiAgICAgdm9pZCBzZXRBY3RpdmVDbGllbnQoY29uc3QgUmVuZGVyUGF0aCogY2xpZW50KSB7IG1f
YWN0aXZlQ2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICBTdHJpbmcgaWRJblJlZ2lzdHJ5KCkgY29u
c3QgeyAgcmV0dXJuIG1fcmVnaXN0cnlJZDsgfQotICAgIHZvaWQgc2V0SWRJblJlZ2lzdHJ5KGNv
bnN0IFN0cmluZyYgbmV3SWQpIHsgbV9yZWdpc3RyeUlkID0gbmV3SWQ7IH0gCi0gICAgCiAgICAg
dmlydHVhbCBLQ1BhaW50U2VydmVyVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAgIAogICAgIC8v
IEFjdHVhbCByZW5kZXJpbmcgZnVuY3Rpb24KQEAgLTgzLDE0ICs4MSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbmRlclBhdGgoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBjb25z
dCBSZW5kZXJQYXRoKiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0ID0gMDsKIHByaXZhdGU6CiAg
ICAgY29uc3QgUmVuZGVyUGF0aCogbV9hY3RpdmVDbGllbnQ7Ci0gICAgU3RyaW5nIG1fcmVnaXN0
cnlJZDsKICAgICBib29sIG1fcGFpbnRpbmdUZXh0OwogfTsKIAogVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyJik7CiAKLUtSZW5k
ZXJpbmdQYWludFNlcnZlciogZ2V0UGFpbnRTZXJ2ZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRv
bWljU3RyaW5nJik7Ci0KIH0KIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50LmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDEyICsy
MjYsMTIgQEAgS0NQYWludFNlcnZlclR5cGUgS1JlbmRlcmluZ1BhaW50U2VydmVyUgogICAgIHJl
dHVybiBQU19SQURJQUxfR1JBRElFTlQ7CiB9CiAKLUtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKiBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6bGlzdGVuZXIoKSBjb25zdAorU1ZHUmVzb3Vy
Y2VMaXN0ZW5lciogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6Omxpc3RlbmVyKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9saXN0ZW5lcjsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIGxpc3Rl
bmVyKQordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIoU1ZH
UmVzb3VyY2VMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVy
OwogfQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJH
cmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmlu
Z1BhaW50U2VydmVyR3JhZGllbnQuaAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52
YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDkgQEAKICNkZWZpbmUgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRf
SAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsOCArNjYs
OCBAQCBwdWJsaWM6CiAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRHcmFkaWVudFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKICAgICAKLSAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciogbGlzdGVuZXIoKSBjb25zdDsK
LSAgICB2b2lkIHNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKik7CisgICAgU1ZH
UmVzb3VyY2VMaXN0ZW5lciogbGlzdGVuZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldExpc3RlbmVy
KFNWR1Jlc291cmNlTGlzdGVuZXIqKTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogcHJpdmF0ZToKQEAgLTcyLDcgKzc1LDcgQEAg
cHJpdmF0ZToKICAgICBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kIG1fc3ByZWFkTWV0aG9kOwogICAg
IGJvb2wgbV9ib3VuZGluZ0JveE1vZGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRU
cmFuc2Zvcm07Ci0gICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIG1fbGlzdGVuZXI7CisgICAg
U1ZHUmVzb3VyY2VMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CiAKIGNsYXNzIEtSZW5kZXJpbmdQ
YWludFNlcnZlckxpbmVhckdyYWRpZW50IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9r
Y2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUltYWdlLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oIgogCiAj
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6S1JlbmRlcmluZ1BhaW50
U2VydmVyUGF0dGVybigpCiAgICAgOiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIoKQotICAgICwgbV90
aWxlKDApCiAgICAgLCBtX3VzZUJvdW5kaW5nQm94TW9kZSh0cnVlKQogICAgICwgbV9saXN0ZW5l
cigwKQogewpAQCAtNDEsNyArNDAsNiBAQCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpL
UmVuZGVyaW5nCiAKIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46On5LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJQYXR0ZXJuKCkKIHsKLSAgICBkZWxldGUgbV90aWxlOwogfQogCiB2b2lkIEtSZW5k
ZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldEJib3goY29uc3QgRmxvYXRSZWN0JiByZWN0KQpA
QCAtNjQsMTIgKzYyLDEyIEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0
Qm8KICAgICBtX3VzZUJvdW5kaW5nQm94TW9kZSA9IG1vZGU7CiB9CiAKLUtDYW52YXNJbWFnZSog
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6dGlsZSgpIGNvbnN0CitTVkdSZXNvdXJjZUlt
YWdlKiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjp0aWxlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV90aWxlOworICAgIHJldHVybiBtX3RpbGUuZ2V0KCk7CiB9CiAKLXZvaWQgS1JlbmRl
cmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0VGlsZShLQ2FudmFzSW1hZ2UqIHRpbGUpCit2b2lk
IEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldFRpbGUoY29uc3QgUGFzc1JlZlB0cjxT
VkdSZXNvdXJjZUltYWdlPiYgdGlsZSkKIHsKICAgICBtX3RpbGUgPSB0aWxlOwogfQpAQCAtODks
MTIgKzg3LDEyIEBAIEtDUGFpbnRTZXJ2ZXJUeXBlIEtSZW5kZXJpbmdQYWludFNlcnZlclAKICAg
ICByZXR1cm4gUFNfUEFUVEVSTjsKIH0KIAotS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIEtSZW5k
ZXJpbmdQYWludFNlcnZlclBhdHRlcm46Omxpc3RlbmVyKCkgY29uc3QKK1NWR1Jlc291cmNlTGlz
dGVuZXIqIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46Omxpc3RlbmVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9saXN0ZW5lcjsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQ
YXR0ZXJuOjpzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciogbGlzdGVuZXIpCit2
b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldExpc3RlbmVyKFNWR1Jlc291cmNl
TGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KSW5k
ZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybi5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSAr
MjQsMTMgQEAKICNkZWZpbmUgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybl9ICiAjaWZkZWYg
U1ZHX1NVUFBPUlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtDYW52YXNJbWFnZTsKK2NsYXNzIFNWR1Jlc291cmNlSW1h
Z2U7CiAKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4gOiBwdWJsaWMgS1JlbmRl
cmluZ1BhaW50U2VydmVyCiB7CkBAIC00OCwyMiArNTAsMjIgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Qm91bmRpbmdCb3hNb2RlKGJvb2wgbW9kZSA9IHRydWUpOwogICAgIAogICAgIC8vICdQYXR0
ZXJuJyBpbnRlcmZhY2UKLSAgICBLQ2FudmFzSW1hZ2UqIHRpbGUoKSBjb25zdDsKLSAgICB2b2lk
IHNldFRpbGUoS0NhbnZhc0ltYWdlKik7CisgICAgU1ZHUmVzb3VyY2VJbWFnZSogdGlsZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0VGlsZShjb25zdCBQYXNzUmVmUHRyPFNWR1Jlc291cmNlSW1hZ2U+
Jik7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAotICAg
IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0OwotICAgIHZvaWQgc2V0
TGlzdGVuZXIoS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqKTsKKyAgICBTVkdSZXNvdXJjZUxpc3Rl
bmVyKiBsaXN0ZW5lcigpIGNvbnN0OworICAgIHZvaWQgc2V0TGlzdGVuZXIoU1ZHUmVzb3VyY2VM
aXN0ZW5lciopOwogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEtDYW52YXNJbWFnZSogbV90aWxlOworICAg
IFJlZlB0cjxTVkdSZXNvdXJjZUltYWdlPiBtX3RpbGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1f
cGF0dGVyblRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgbV9iYm94OwogICAgIGJvb2wgbV91c2VC
b3VuZGluZ0JveE1vZGU7Ci0gICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIqIG1fbGlzdGVuZXI7
CisgICAgU1ZHUmVzb3VyY2VMaXN0ZW5lciogbV9saXN0ZW5lcjsKIAogfTsKIApJbmRleDogV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWQu
aAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZp
bmUgS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tDYW52
YXNDbGlwcGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQv
S0NhbnZhc0NsaXBwZXJRdC5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rY2FudmFz
L2RldmljZS9xdC9LQ2FudmFzQ2xpcHBlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTgg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA1IEFw
cGxlIENvbXB1dGVyLCBJbmMuCi0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXJRdC5o
IgotI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2VRdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgS0NhbnZhc0NsaXBwZXJRdDo6YXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpIGNvbnN0Ci17Ci0gICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQg
PSByZW5kZXJpbmdEZXZpY2UoKS0+Y3VycmVudENvbnRleHQoKTsKLSAgICBLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dFF0KiBxdENvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dFF0Kj4oY29udGV4dCk7Ci0gICAgaWYgKG1fY2xpcERhdGEuY291bnQoKSA8IDEpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGNvbnRleHQtPmNsZWFyUGF0aCgpOwotCi0gICAgUVBhaW50ZXJQ
YXRoIG5ld1BhdGg7Ci0KLSAgICBib29sIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IGZhbHNlOwot
ICAgIFdpbmRSdWxlIGNsaXBSdWxlID0gbV9jbGlwRGF0YVswXS53aW5kUnVsZSgpOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7IHgrKykgewot
ICAgICAgICBLQ0NsaXBEYXRhIGNsaXBEYXRhID0gbV9jbGlwRGF0YVt4XTsKLSAgICAgICAgaWYg
KGNsaXBEYXRhLndpbmRSdWxlKCkgIT0gY2xpcFJ1bGUpCi0gICAgICAgICAgICBoZXRlcm9nZW5v
dXNDbGlwUnVsZXMgPSB0cnVlOwotICAgICAgIAotICAgICAgICBRUGFpbnRlclBhdGggcGF0aCA9
ICooY2xpcERhdGEucGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgIGlmIChwYXRoLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghbmV3UGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBuZXdQYXRoLmNsb3NlU3VicGF0aCgpOwotCi0gICAgICAgIC8v
IFJlc3BlY3QgY2xpcHBpbmcgdW5pdHMuLi4KLSAgICAgICAgUU1hdHJpeCB0cmFuc2Zvcm07Ci0K
LSAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hVbml0cykgewotICAgICAgICAgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZShib3VuZGluZ0JveC54KCksIGJvdW5kaW5nQm94LnkoKSk7Ci0gICAgICAgICAg
ICB0cmFuc2Zvcm0uc2NhbGUoYm91bmRpbmdCb3gud2lkdGgoKSwgYm91bmRpbmdCb3guaGVpZ2h0
KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVE9ETzogc3VwcG9ydCBoZXRlcm9nZW5vdXMg
Y2xpcCBydWxlcyEKLSAgICAgICAgLy9jbGlwUnVsZSA9IChjbGlwRGF0YS53aW5kUnVsZSgpID09
IFJVTEVfRVZFTk9ERCA/IFF0OjpPZGRFdmVuRmlsbCA6IFF0OjpXaW5kaW5nRmlsbCk7Ci0KLSAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXRoLmVsZW1lbnRDb3VudCgpOyArK2kpIHsKLSAg
ICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmY3VyID0gcGF0aC5lbGVtZW50
QXQoaSk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoY3VyLnR5cGUpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIFFQYWludGVyUGF0aDo6TW92ZVRvRWxlbWVudDoKLSAgICAgICAgICAgICAgICAgICAg
bmV3UGF0aC5tb3ZlVG8oUVBvaW50RihjdXIueCwgY3VyLnkpICogdHJhbnNmb3JtKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6
OkxpbmVUb0VsZW1lbnQ6Ci0gICAgICAgICAgICAgICAgICAgIG5ld1BhdGgubGluZVRvKFFQb2lu
dEYoY3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRWxlbWVudDoKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6
RWxlbWVudCAmYzEgPSBwYXRoLmVsZW1lbnRBdChpICsgMSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzIgPSBwYXRoLmVsZW1lbnRBdChpICsgMik7
Ci0KLSAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzEudHlwZSA9PSBRUGFpbnRlclBhdGg6
OkN1cnZlVG9EYXRhRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIFFfQVNTRVJUKGMyLnR5
cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1lbnQpOwotCi0gICAgICAgICAgICAg
ICAgICAgIG5ld1BhdGguY3ViaWNUbyhRUG9pbnRGKGN1ci54LCBjdXIueSkgKiB0cmFuc2Zvcm0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUG9pbnRGKGMxLngsIGMxLnkp
ICogdHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVBvaW50
RihjMi54LCBjMi55KSAqIHRyYW5zZm9ybSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaSArPSAy
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudDoKLSAgICAgICAg
ICAgICAgICAgICAgUV9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtX2NsaXBEYXRhLmNv
dW50KCkpIHsKLSAgICAgICAgLy8gRklYTUUhCi0gICAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRs
eSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNsaXAgcnVsZXMuCi0gICAgICAgIC8vIHdlIHdvdWxk
IGhhdmUgdG8gZGV0ZWN0IHN1Y2gsIGRyYXcgdG8gYSBtYXNrLCBhbmQgdGhlbiBjbGlwCi0gICAg
ICAgIC8vIHRvIHRoYXQgbWFzawotICAgICAgICAvLyBpZiAoIUNHQ29udGV4dElzUGF0aEVtcHR5
KGNnQ29udGV4dCkpIHsKLSAgICAgICAgICAgIGlmIChjbGlwUnVsZSA9PSBSVUxFX0VWRU5PREQp
Ci0gICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRGaWxsUnVsZShRdDo6T2RkRXZlbkZpbGwpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ld1BhdGguc2V0RmlsbFJ1bGUoUXQ6
OldpbmRpbmdGaWxsKTsKLSAgICAgICAgLy8gfQotICAgIH0KLQotICAgIHF0Q29udGV4dC0+cGFp
bnRlcigpLnNldENsaXBQYXRoKG5ld1BhdGgpOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0NsaXBwZXJRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0NsaXBwZXJRdC5oCShy
ZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS0NhbnZhc0NsaXBw
ZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgotICAgICAgICAgICAgICAgICAgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgotCi0gICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5kZWYgS0NhbnZhc0NsaXBw
ZXJRdF9oCi0jZGVmaW5lIEtDYW52YXNDbGlwcGVyUXRfaAotCi0jaW5jbHVkZSAiS0NhbnZhc0Ns
aXBwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBLQ2FudmFzQ2xpcHBlclF0
IDogcHVibGljIEtDYW52YXNDbGlwcGVyIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFzQ2xpcHBlclF0
KCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNsaXAoY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdE
ZXZpY2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LUmVu
ZGVyaW5nRGV2aWNlUXQuY3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9k
ZXZpY2UvcXQvS1JlbmRlcmluZ0RldmljZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsOCBAQAogI2luY2x1ZGUgIlJlbmRlclBhdGhRdC5oIgogI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIktDYW52YXND
bGlwcGVyUXQuaCIKLSNpbmNsdWRlICJLQ2FudmFzTWFya2VyLmgiCisjaW5jbHVkZSAiU1ZHUmVz
b3VyY2VDbGlwcGVyLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRl
ICJLUmVuZGVyaW5nRGV2aWNlUXQuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJT
b2xpZFF0LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdC5oIgpA
QCAtMTM1LDIzICsxMzUsMjMgQEAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCogS1JlbmRlcmlu
Z0RldgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF0Kj4o
Y3VycmVudENvbnRleHQoKSk7CiB9CiAKLUtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBLUmVuZGVy
aW5nRGV2aWNlUXQ6OmNvbnRleHRGb3JJbWFnZShLQ2FudmFzSW1hZ2UqIGltYWdlKSBjb25zdAor
S1JlbmRlcmluZ0RldmljZUNvbnRleHQqIEtSZW5kZXJpbmdEZXZpY2VRdDo6Y29udGV4dEZvcklt
YWdlKFNWR1Jlc291cmNlSW1hZ2UqIGltYWdlKSBjb25zdAogewogICAgIHFEZWJ1ZygiS1JlbmRl
cmluZ0RldmljZVF0Ojpjb250ZXh0Rm9ySW1hZ2UoKSBUT0RPISIpOwogICAgIHJldHVybiAwOwog
fQogCiAvLyBSZXNvdXJjZSBjcmVhdGlvbgotS0NhbnZhc1Jlc291cmNlKiBLUmVuZGVyaW5nRGV2
aWNlUXQ6OmNyZWF0ZVJlc291cmNlKGNvbnN0IEtDUmVzb3VyY2VUeXBlJiB0eXBlKSBjb25zdAor
UGFzc1JlZlB0cjxTVkdSZXNvdXJjZT4gS1JlbmRlcmluZ0RldmljZVF0OjpjcmVhdGVSZXNvdXJj
ZShjb25zdCBTVkdSZXNvdXJjZVR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBl
KQogICAgIHsKICAgICAgICAgY2FzZSBSU19DTElQUEVSOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBLQ2FudmFzQ2xpcHBlclF0KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNWR1Jlc291cmNl
Q2xpcHBlcigpOwogICAgICAgICBjYXNlIFJTX01BUktFUjoKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgS0NhbnZhc01hcmtlcigpOyAvLyBVc2UgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4uLgorICAg
ICAgICAgICAgcmV0dXJuIG5ldyBTVkdSZXNvdXJjZU1hcmtlcigpOyAvLyBVc2UgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4uLgogICAgICAgICBjYXNlIFJTX0lNQUdFOgotICAgICAgICAgICAgLy8g
cmV0dXJuIG5ldyBLQ2FudmFzSW1hZ2VRdCgpOworICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBT
VkdSZXNvdXJjZUltYWdlUXQoKTsKICAgICAgICAgY2FzZSBSU19GSUxURVI6CiAgICAgICAgICAg
ICAvLyByZXR1cm4gbmV3IEtDYW52YXNGaWx0ZXJRdCgpOwogICAgICAgICBjYXNlIFJTX01BU0tF
UjoKQEAgLTE2MSw3ICsxNjEsNyBAQCBLQ2FudmFzUmVzb3VyY2UqIEtSZW5kZXJpbmdEZXZpY2VR
dDo6Y3JlCiAgICAgfQogfQogCi1LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIEtSZW5kZXJpbmdEZXZp
Y2VRdDo6Y3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3QgS0NQYWludFNlcnZlclR5cGUmIHR5cGUpIGNv
bnN0CitQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlcj4gS1JlbmRlcmluZ0RldmljZVF0
OjpjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYgdHlwZSkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdC9LUmVuZGVyaW5nRGV2aWNlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F0L0tSZW5kZXJpbmdEZXZpY2VRdC5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ0RldmljZVF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDExICs3NCwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBjb250ZXh0IG1hbmFnZW1lbnQu
CiAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCogcXRDb250ZXh0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dEZvckltYWdlKEtDYW52YXNJ
bWFnZSopIGNvbnN0OworICAgIHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRl
eHRGb3JJbWFnZShTVkdSZXNvdXJjZUltYWdlKikgY29uc3Q7CiAKICAgICAvLyBSZXNvdXJjZSBj
cmVhdGlvbgotICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlKiBjcmVhdGVSZXNvdXJjZShjb25z
dCBLQ1Jlc291cmNlVHlwZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyKiBjcmVhdGVQYWludFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTVkdSZXNvdXJjZT4gY3JlYXRlUmVzb3VyY2UoY29uc3Qg
U1ZHUmVzb3VyY2VUeXBlJikgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEtSZW5kZXJp
bmdQYWludFNlcnZlcj4gY3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3QgS0NQYWludFNlcnZlclR5cGUm
KSBjb25zdDsKICAgICB2aXJ0dWFsIEtDYW52YXNGaWx0ZXJFZmZlY3QqIGNyZWF0ZUZpbHRlckVm
ZmVjdChjb25zdCBLQ0ZpbHRlckVmZmVjdFR5cGUmKSBjb25zdDsKIH07CiAKSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudFF0LmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPFFQb2lu
dEY+CiAKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
ICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNl
UXQuaCIKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVyblF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0
L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdC5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysg
V2ViQ29yZS9rY2FudmFzL2RldmljZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIgQEAKICNpbmNsdWRlIDxRUG9pbnRG
PgogI2luY2x1ZGUgPFFQYWludGVyUGF0aD4KIAorI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2VRdC5oIgog
I2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQ
YWludFNlcnZlclBhdHRlcm5RdC5oIgotI2luY2x1ZGUgIktDYW52YXNJbWFnZS5oIgorI2luY2x1
ZGUgIlNWR1Jlc291cmNlSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZl
clF0LmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F0L0tS
ZW5kZXJpbmdQYWludFNlcnZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgPFFQZW4+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KIAorI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgiCiAjaW5jbHVkZSAi
S1JlbmRlcmluZ1BhaW50U2VydmVyUXQuaCIKIApJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdC9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F0L0tSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkUXQuY3BwCShy
ZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXQvS1JlbmRlcmluZ1Bh
aW50U2VydmVyU29saWRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlIDxRQnJ1c2g+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAKKyNpbmNsdWRlICJSZW5kZXJQ
YXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2
aWNlUXQuaCIKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXQvUmVuZGVyUGF0aFF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6
Lm1tCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tD
YW52YXNGaWx0ZXJRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsNyBAQCBO
U0FycmF5ICpLQ2FudmFzRmlsdGVyUXVhcnR6OjpnZXRDSUZpbHRlCiAgICAgRGVwcmVjYXRlZFZh
bHVlTGlzdEl0ZXJhdG9yPEtDYW52YXNGaWx0ZXJFZmZlY3QqPiBlbmQgPSBtX2VmZmVjdHMuZW5k
KCk7CiAKICAgICBzZXRJbWFnZUZvck5hbWUoaW5wdXRJbWFnZSwgIlNvdXJjZUdyYXBoaWMiKTsg
Ly8gaW5wdXQKKwogICAgIGZvciAoO2l0ICE9IGVuZDsgaXQrKykgewogICAgICAgICBDSUZpbHRl
ciAqZmlsdGVyID0gKCppdCktPmdldENJRmlsdGVyKHRoaXMpOwogICAgICAgICBpZiAoZmlsdGVy
KQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHou
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0
ZW1RdWFydHoubW0JKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDcg
QEAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKICNpbXBvcnQgIktDYW52YXNGaWx0ZXJR
dWFydHouaCIKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIKICNpbXBvcnQgIktDYW52
YXNSZW5kZXJpbmdTdHlsZS5oIgotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgog
I2ltcG9ydCAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgogI2ltcG9ydCAiUXVhcnR6U3VwcG9y
dC5oIgogI2ltcG9ydCAiUmVuZGVyUGF0aC5oIgpJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc01hc2tlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHouaAkocmV2aXNpb24gMTc0NDkp
CisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzTWFza2VyUXVhcnR6LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAg
ICAgICAgMjAwNSwgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiS0NhbnZhc01hc2tlci5oIgotI2luY2x1ZGUgIktDYW52YXNJbWFnZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEtDYW52YXNNYXNrZXJRdWFydHogOiBw
dWJsaWMgS0NhbnZhc01hc2tlciB7Ci1wdWJsaWM6Ci0gICAgS0NhbnZhc01hc2tlclF1YXJ0eigp
IHsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCkgY29uc3Q7Ci19OwotCi19CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzTWFza2VyUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNNYXNrZXJRdWFydHoubW0JKHJldmlzaW9uIDE3NDQ5
KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc01hc2tlclF1YXJ0ei5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2ltcG9ydCAiS0NhbnZh
c01hc2tlclF1YXJ0ei5oIgotCi0jaW1wb3J0ICJTVkdSZW5kZXJTdHlsZS5oIgotCi0jaW1wb3J0
ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCi0jaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVh
cnR6LmgiCi0jaW1wb3J0ICJRdWFydHpTdXBwb3J0LmgiCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUltYWdlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIENJSW1hZ2UgKmFw
cGx5THVtaW5hbmNlVG9BbHBoYUZpbHRlcihDSUltYWdlICppbnB1dEltYWdlKQotewotICAgIENJ
RmlsdGVyICpsdW1pbmFuY2VUb0FscGhhID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lD
b2xvck1hdHJpeCJdOwotICAgIFtsdW1pbmFuY2VUb0FscGhhIHNldERlZmF1bHRzXTsKLSAgICBD
R0Zsb2F0IGFscGhhWzRdID0gezAuMjEyNSwgMC43MTU0LCAwLjA3MjEsIDB9OwotICAgIENHRmxv
YXQgemVyb1s0XSA9IHswLCAwLCAwLCAwfTsKLSAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1
ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsgIAotICAgIFtsdW1pbmFuY2VUb0Fs
cGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9y
S2V5OkAiaW5wdXRSVmVjdG9yIl07Ci0gICAgW2x1bWluYW5jZVRvQWxwaGEgc2V0VmFsdWU6W0NJ
VmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dEdWZWN0
b3IiXTsKLSAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0
aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0QlZlY3RvciJdOwotICAgIFtsdW1p
bmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOmFscGhhIGNv
dW50OjRdIGZvcktleTpAImlucHV0QVZlY3RvciJdOwotICAgIFtsdW1pbmFuY2VUb0FscGhhIHNl
dFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAi
aW5wdXRCaWFzVmVjdG9yIl07Ci0gICAgcmV0dXJuIFtsdW1pbmFuY2VUb0FscGhhIHZhbHVlRm9y
S2V5OkAib3V0cHV0SW1hZ2UiXTsKLX0KLQotc3RhdGljIENJSW1hZ2UgKmFwcGx5RXhwYW5kQWxw
aGF0b0dyYXlzY2FsZUZpbHRlcihDSUltYWdlICppbnB1dEltYWdlKQotewotICAgIENJRmlsdGVy
ICphbHBoYVRvR3JheXNjYWxlID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1h
dHJpeCJdOwotICAgIENHRmxvYXQgemVyb1s0XSA9IHswLCAwLCAwLCAwfTsKLSAgICBbYWxwaGFU
b0dyYXlzY2FsZSBzZXREZWZhdWx0c107Ci0gICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0VmFsdWU6
aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Ci0gICAgW2FscGhhVG9HcmF5c2NhbGUg
c2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6
QCJpbnB1dFJWZWN0b3IiXTsKLSAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXRWYWx1ZTpbQ0lWZWN0
b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0R1ZlY3RvciJd
OwotICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFs
dWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRCVmVjdG9yIl07Ci0gICAgW2FscGhhVG9H
cmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBX
OjEuMF0gZm9yS2V5OkAiaW5wdXRBVmVjdG9yIl07Ci0gICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0
VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjEuMCBaOjEuMCBXOjAuMF0gZm9yS2V5
OkAiaW5wdXRCaWFzVmVjdG9yIl07Ci0gICAgcmV0dXJuIFthbHBoYVRvR3JheXNjYWxlIHZhbHVl
Rm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKLX0KLQotc3RhdGljIENJSW1hZ2UgKnRyYW5zZm9ybUlt
YWdlSW50b0dyYXlzY2FsZU1hc2soQ0lJbWFnZSAqaW5wdXRJbWFnZSkKLXsKLSAgICBDSUZpbHRl
ciAqYmxhY2tCYWNrZ3JvdW5kID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb25zdGFu
dENvbG9yR2VuZXJhdG9yIl07Ci0gICAgW2JsYWNrQmFja2dyb3VuZCBzZXRWYWx1ZTpbQ0lDb2xv
ciBjb2xvcldpdGhSZWQ6MC4wIGdyZWVuOjAuMCBibHVlOjAuMCBhbHBoYToxLjBdIGZvcktleTpA
ImlucHV0Q29sb3IiXTsKLQotICAgIENJRmlsdGVyICpsYXllck92ZXJCbGFjayA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3ZlckNvbXBvc2l0aW5nIl07Ci0gICAgW2xheWVy
T3ZlckJsYWNrIHNldFZhbHVlOltibGFja0JhY2tncm91bmQgdmFsdWVGb3JLZXk6QCJvdXRwdXRJ
bWFnZSJdIGZvcktleTpAImlucHV0QmFja2dyb3VuZEltYWdlIl07ICAKLSAgICBbbGF5ZXJPdmVy
QmxhY2sgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07ICAKLQotICAg
IENJSW1hZ2UgKmx1bWluYW5jZUFscGhhID0gYXBwbHlMdW1pbmFuY2VUb0FscGhhRmlsdGVyKFts
YXllck92ZXJCbGFjayB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0pOwotICAgIENJSW1hZ2Ug
Kmx1bWluYW5jZUFzR3JheXNjYWxlID0gYXBwbHlFeHBhbmRBbHBoYXRvR3JheXNjYWxlRmlsdGVy
KGx1bWluYW5jZUFscGhhKTsKLSAgICBDSUltYWdlICphbHBoYUFzR3JheXNjYWxlID0gYXBwbHlF
eHBhbmRBbHBoYXRvR3JheXNjYWxlRmlsdGVyKGlucHV0SW1hZ2UpOwotCi0gICAgQ0lGaWx0ZXIg
Km11bHRpcGxpZWRHcmF5c2NhbGUgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSU11bHRp
cGx5Q29tcG9zaXRpbmciXTsKLSAgICBbbXVsdGlwbGllZEdyYXlzY2FsZSBzZXRWYWx1ZTpsdW1p
bmFuY2VBc0dyYXlzY2FsZSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJbWFnZSJdOyAgCi0gICAg
W211bHRpcGxpZWRHcmF5c2NhbGUgc2V0VmFsdWU6YWxwaGFBc0dyYXlzY2FsZSBmb3JLZXk6QCJp
bnB1dEltYWdlIl07ICAKLSAgICByZXR1cm4gW211bHRpcGxpZWRHcmF5c2NhbGUgdmFsdWVGb3JL
ZXk6QCJvdXRwdXRJbWFnZSJdOwotfQotCi12b2lkIEtDYW52YXNNYXNrZXJRdWFydHo6OmFwcGx5
TWFzayhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAotewotICAgIGlmICghbV9t
YXNrKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gQ3JlYXRlIGdyYXlzY2FsZSBiaXRtYXAgY29u
dGV4dAotICAgIGludCB3aWR0aCA9IG1fbWFzay0+c2l6ZSgpLndpZHRoKCk7Ci0gICAgaW50IGhl
aWdodCA9IG1fbWFzay0+c2l6ZSgpLmhlaWdodCgpOwotICAgIHZvaWQgKmltYWdlQnVmZmVyID0g
ZmFzdE1hbGxvYyh3aWR0aCAqIGhlaWdodCk7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGdyYXlDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgIENHQ29udGV4dFJl
ZiBncmF5c2NhbGVDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGltYWdlQnVmZmVyLCB3
aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCwgZ3JheUNvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFOb25l
KTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGdyYXlDb2xvclNwYWNlKTsKLSAgICBDSUNvbnRl
eHQgKmNpR3JheXNjYWxlQ29udGV4dCA9IFtDSUNvbnRleHQgY29udGV4dFdpdGhDR0NvbnRleHQ6
Z3JheXNjYWxlQ29udGV4dCBvcHRpb25zOm5pbF07Ci0KLSAgICBLQ2FudmFzSW1hZ2VRdWFydHoq
IG1hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZVF1YXJ0eio+KG1fbWFzayk7Ci0g
ICAgQ0lJbWFnZSAqZ3JheXNjYWxlTWFzayA9IHRyYW5zZm9ybUltYWdlSW50b0dyYXlzY2FsZU1h
c2soW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dMYXllcjptYXNrSW1hZ2UtPmNnTGF5ZXIoKV0pOwotICAg
IFtjaUdyYXlzY2FsZUNvbnRleHQgZHJhd0ltYWdlOmdyYXlzY2FsZU1hc2sgYXRQb2ludDpDR1Bv
aW50WmVybyBmcm9tUmVjdDpDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKLQotICAg
IENHSW1hZ2VSZWYgZ3JheXNjYWxlSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShn
cmF5c2NhbGVDb250ZXh0KTsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eio+KHJlbmRlcmluZ0RldmljZSgpKS0+Y3VycmVudENH
Q29udGV4dCgpOwotICAgIENHQ29udGV4dENsaXBUb01hc2soY2dDb250ZXh0LCBDR1JlY3RNYWtl
KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBncmF5c2NhbGVJbWFnZSk7Ci0gICAgCi0gICAgQ0dJbWFn
ZVJlbGVhc2UoZ3JheXNjYWxlSW1hZ2UpOwotICAgIENHQ29udGV4dFJlbGVhc2UoZ3JheXNjYWxl
Q29udGV4dCk7Ci0gICAgZmFzdEZyZWUoaW1hZ2VCdWZmZXIpOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZh
c1Jlc291cmNlc1F1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHouaAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBL
Q2FudmFzUmVzb3VyY2VzUXVhcnR6X2gKLSNkZWZpbmUgS0NhbnZhc1Jlc291cmNlc1F1YXJ0el9o
Ci0KLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgotCi0jaW5jbHVkZSAiS0NhbnZhc0ltYWdl
LmgiCi0jaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCi0KLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwotdHlw
ZWRlZiBzdHJ1Y3QgQ0dMYXllciAqQ0dMYXllclJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBLQ2FudmFzQ2xpcHBlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFzQ2xpcHBlciB7Ci1w
dWJsaWM6Ci0gICAgS0NhbnZhc0NsaXBwZXJRdWFydHooKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OwotfTsK
LQotY2xhc3MgS0NhbnZhc0ltYWdlUXVhcnR6IDogcHVibGljIEtDYW52YXNJbWFnZSB7Ci1wdWJs
aWM6Ci0gICAgS0NhbnZhc0ltYWdlUXVhcnR6KCkgOiBtX2NnTGF5ZXIoMCkgeyB9Ci0gICAgfktD
YW52YXNJbWFnZVF1YXJ0eigpOwotICAgIHZvaWQgaW5pdChjb25zdCBJbWFnZSYpIHsgfQotICAg
IHZvaWQgaW5pdChJbnRTaXplIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotICAgIAotICAgIENH
TGF5ZXJSZWYgY2dMYXllcigpOwotICAgIHZvaWQgc2V0Q0dMYXllcihDR0xheWVyUmVmIGxheWVy
KTsKLQotICAgIEludFNpemUgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIAotcHJpdmF0
ZToKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBDR0xheWVyUmVmIG1fY2dMYXllcjsKLX07Ci0K
LX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFz
UmVzb3VyY2VzUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0JKHJldmlzaW9uIDE3NDQ5KQorKysgV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAg
ICAgMjAwNSBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2ltcG9ydCAiS0NhbnZhc1Jl
c291cmNlc1F1YXJ0ei5oIgotCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQg
IktDYW52YXNGaWx0ZXJRdWFydHouaCIKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIK
LSNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKLSNpbXBvcnQgIlF1YXJ0elN1cHBv
cnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEtDYW52YXNDbGlwcGVyUXVhcnR6
OjphcHBseUNsaXAoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKLXsKLSAgICBL
UmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJy
ZW50Q29udGV4dCgpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxL
UmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eio+KGNvbnRleHQpLT5jZ0NvbnRleHQoKTsKLSAg
ICBpZiAobV9jbGlwRGF0YS5jb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQk9P
TCBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSBOTzsKLSAgICBXaW5kUnVsZSBjbGlwUnVsZSA9IG1f
Y2xpcERhdGFbMF0ud2luZFJ1bGUoKTsKLQotICAgIGNvbnRleHQtPmNsZWFyUGF0aCgpOwotCi0g
ICAgQ0dBZmZpbmVUcmFuc2Zvcm0gYmJveFRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFr
ZU1hcEJldHdlZW5SZWN0cyhDR1JlY3RNYWtlKDAsMCwxLDEpLCBDR1JlY3QoYm91bmRpbmdCb3gp
KTsKLQotICAgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7IHgr
KykgewotICAgICAgICBLQ0NsaXBEYXRhIGRhdGEgPSBtX2NsaXBEYXRhW3hdOwotICAgICAgICBp
ZiAoZGF0YS53aW5kUnVsZSgpICE9IGNsaXBSdWxlKQotICAgICAgICAgICAgaGV0ZXJvZ2Vub3Vz
Q2xpcFJ1bGVzID0gWUVTOwotICAgICAgICAKLSAgICAgICAgQ0dQYXRoUmVmIGNsaXBQYXRoID0g
ZGF0YS5wYXRoLnBsYXRmb3JtUGF0aCgpOwotCi0gICAgICAgIGlmIChkYXRhLmJib3hVbml0cykg
ewotICAgICAgICAgICAgQ0dNdXRhYmxlUGF0aFJlZiB0cmFuc2Zvcm1lZFBhdGggPSBDR1BhdGhD
cmVhdGVNdXRhYmxlKCk7Ci0gICAgICAgICAgICBDR1BhdGhBZGRQYXRoKHRyYW5zZm9ybWVkUGF0
aCwgJmJib3hUcmFuc2Zvcm0sIGNsaXBQYXRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dEFkZFBh
dGgoY2dDb250ZXh0LCB0cmFuc2Zvcm1lZFBhdGgpOwotICAgICAgICAgICAgQ0dQYXRoUmVsZWFz
ZSh0cmFuc2Zvcm1lZFBhdGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIENHQ29udGV4
dEFkZFBhdGgoY2dDb250ZXh0LCBjbGlwUGF0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2xpcERh
dGEuY291bnQoKSkgewotICAgICAgICAvLyBGSVhNRSEKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3Vy
cmVudGx5IGFsbG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KLSAgICAgICAgLy8gd2Ug
d291bGQgaGF2ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAK
LSAgICAgICAgLy8gdG8gdGhhdCBtYXNrICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAoIUNH
Q29udGV4dElzUGF0aEVtcHR5KGNnQ29udGV4dCkpIHsKLSAgICAgICAgICAgIGlmIChjbGlwUnVs
ZSA9PSBSVUxFX0VWRU5PREQpCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNnQ29u
dGV4dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChj
Z0NvbnRleHQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1LQ2FudmFzSW1hZ2VRdWFydHo6On5L
Q2FudmFzSW1hZ2VRdWFydHooKQotewotICAgIENHTGF5ZXJSZWxlYXNlKG1fY2dMYXllcik7Ci19
Ci0KLUNHTGF5ZXJSZWYgS0NhbnZhc0ltYWdlUXVhcnR6OjpjZ0xheWVyKCkKLXsKLSAgICByZXR1
cm4gbV9jZ0xheWVyOwotfQotCi12b2lkIEtDYW52YXNJbWFnZVF1YXJ0ejo6c2V0Q0dMYXllcihD
R0xheWVyUmVmIGxheWVyKQotewotICAgIGlmIChtX2NnTGF5ZXIgIT0gbGF5ZXIpIHsKLSAgICAg
ICAgQ0dMYXllclJlbGVhc2UobV9jZ0xheWVyKTsKLSAgICAgICAgbV9jZ0xheWVyID0gQ0dMYXll
clJldGFpbihsYXllcik7Ci0gICAgfQotfQotCi19Ci0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5k
ZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHou
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5n
RGV2aWNlUXVhcnR6LmgJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwx
MSArNjUsMTEgQEAgcHVibGljOgogICAgIC8vIGNvbnRleHQgbWFuYWdlbWVudC4KICAgICBLUmVu
ZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eiogcXVhcnR6Q29udGV4dCgpIGNvbnN0OwogICAgIENH
Q29udGV4dFJlZiBjdXJyZW50Q0dDb250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogY29udGV4dEZvckltYWdlKEtDYW52YXNJbWFnZSopIGNvbnN0Owor
ICAgIHZpcnR1YWwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHRGb3JJbWFnZShTVkdS
ZXNvdXJjZUltYWdlKikgY29uc3Q7CiAKICAgICAvLyBSZXNvdXJjZSBjcmVhdGlvbgotICAgIHZp
cnR1YWwgS0NhbnZhc1Jlc291cmNlICpjcmVhdGVSZXNvdXJjZShjb25zdCBLQ1Jlc291cmNlVHlw
ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgS1JlbmRlcmluZ1BhaW50U2VydmVyICpjcmVhdGVQYWlu
dFNlcnZlcihjb25zdCBLQ1BhaW50U2VydmVyVHlwZSYpIGNvbnN0OworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTVkdSZXNvdXJjZT4gY3JlYXRlUmVzb3VyY2UoY29uc3QgU1ZHUmVzb3VyY2VUeXBl
JikgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlcj4g
Y3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3QgS0NQYWludFNlcnZlclR5cGUmKSBjb25zdDsKICAgICB2
aXJ0dWFsIEtDYW52YXNGaWx0ZXJFZmZlY3QgKmNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBLQ0Zp
bHRlckVmZmVjdFR5cGUmKSBjb25zdDsKICAgICAKICAgICAvLyBmaWx0ZXJzIChtb3N0bHkgZGVi
dWdnaW5nKQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0Rl
dmljZVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUv
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE0ICsyNSwxNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwog
I2lmZGVmIFNWR19TVVBQT1JUCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCiAK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIK
KyNpbXBvcnQgIlNWR1Jlc291cmNlQ2xpcHBlci5oIgorI2ltcG9ydCAiU1ZHUmVzb3VyY2VJbWFn
ZS5oIgorI2ltcG9ydCAiU1ZHUmVzb3VyY2VNYXJrZXIuaCIKICNpbXBvcnQgIktDYW52YXNGaWx0
ZXJRdWFydHouaCIKLSNpbXBvcnQgIktDYW52YXNNYXNrZXJRdWFydHouaCIKLSNpbXBvcnQgIktD
YW52YXNSZXNvdXJjZXNRdWFydHouaCIKKyNpbXBvcnQgIlNWR1Jlc291cmNlTWFza2VyLmgiCiAj
aW1wb3J0ICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKQEAgLTExNywxNiArMTE5LDE1IEBAIENHQ29u
dGV4dFJlZiBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpjdXIKICAgICByZXR1cm4gcXVhcnR6Q29u
dGV4dCgpLT5jZ0NvbnRleHQoKTsKIH0KIAotS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIEtSZW5k
ZXJpbmdEZXZpY2VRdWFydHo6OmNvbnRleHRGb3JJbWFnZShLQ2FudmFzSW1hZ2UgKmltYWdlKSBj
b25zdAorS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNv
bnRleHRGb3JJbWFnZShTVkdSZXNvdXJjZUltYWdlICppbWFnZSkgY29uc3QKIHsKLSAgICBLQ2Fu
dmFzSW1hZ2VRdWFydHoqIHF1YXJ0ekltYWdlID0gc3RhdGljX2Nhc3Q8S0NhbnZhc0ltYWdlUXVh
cnR6Kj4oaW1hZ2UpOwotICAgIENHTGF5ZXJSZWYgY2dMYXllciA9IHF1YXJ0ekltYWdlLT5jZ0xh
eWVyKCk7CisgICAgQ0dMYXllclJlZiBjZ0xheWVyID0gaW1hZ2UtPmNnTGF5ZXIoKTsKICAgICBp
ZiAoIWNnTGF5ZXIpIHsKICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG5vdCBnZXQgYmFjayBh
IGxheWVyIGlmIHRoaXMgaXMgYSBsb2FkZWQgaW1hZ2UKLSAgICAgICAgLy8gbWF5YmUgdGhpcyBs
b2dpYyBzaG91bGQgZ28gaW50byBLQ2FudmFzSW1hZ2U/CisgICAgICAgIC8vIG1heWJlIHRoaXMg
bG9naWMgc2hvdWxkIGdvIGludG8gU1ZHUmVzb3VyY2VJbWFnZT8KICAgICAgICAgY2dMYXllciA9
IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjdXJyZW50Q0dDb250ZXh0KCksIENHU2l6ZShpbWFn
ZS0+c2l6ZSgpICsgSW50U2l6ZSgxLDEpKSwgTlVMTCk7ICAvLyBGSVhNRSArIDEgaXMgYSBoYWNr
CiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY29tcG9zaXRlIHRoZSBvcmlnaW5hbCBpbWFn
ZSBvbnRvIHRoZSBsYXllci4uLgotICAgICAgICBxdWFydHpJbWFnZS0+c2V0Q0dMYXllcihjZ0xh
eWVyKTsKKyAgICAgICAgaW1hZ2UtPnNldENHTGF5ZXIoY2dMYXllcik7CiAgICAgICAgIENHTGF5
ZXJSZWxlYXNlKGNnTGF5ZXIpOwogICAgIH0KICAgICByZXR1cm4gbmV3IEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0UXVhcnR6KENHTGF5ZXJHZXRDb250ZXh0KGNnTGF5ZXIpKTsKQEAgLTEzNSw3ICsx
MzYsNyBAQCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogS1JlbmRlcmluZ0RldmljCiAjcHJhZ21h
IG1hcmsgLQogI3ByYWdtYSBtYXJrIFJlc291cmNlIENyZWF0aW9uCiAKLUtSZW5kZXJpbmdQYWlu
dFNlcnZlciAqS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6Y3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3Qg
S0NQYWludFNlcnZlclR5cGUmIHR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWlu
dFNlcnZlcj4gS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6Y3JlYXRlUGFpbnRTZXJ2ZXIoY29uc3Qg
S0NQYWludFNlcnZlclR5cGUmIHR5cGUpIGNvbnN0CiB7CiAgICAgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyICpuZXdTZXJ2ZXIgPSBOVUxMOwogICAgIHN3aXRjaCh0eXBlKSB7CkBAIC0xNTUsMTkgKzE1
NiwxOSBAQCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKktSZW5kZXJpbmdEZXZpY2VRCiAgICAgcmV0
dXJuIG5ld1NlcnZlcjsKIH0KIAotS0NhbnZhc1Jlc291cmNlICpLUmVuZGVyaW5nRGV2aWNlUXVh
cnR6OjpjcmVhdGVSZXNvdXJjZShjb25zdCBLQ1Jlc291cmNlVHlwZSYgdHlwZSkgY29uc3QKK1Bh
c3NSZWZQdHI8U1ZHUmVzb3VyY2U+IEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmNyZWF0ZVJlc291
cmNlKGNvbnN0IFNWR1Jlc291cmNlVHlwZSYgdHlwZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICBjYXNlIFJTX0NMSVBQRVI6Ci0gICAgICAgIHJldHVybiBuZXcgS0NhbnZhc0Ns
aXBwZXJRdWFydHooKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTVkdSZXNvdXJjZUNsaXBwZXIoKTsK
ICAgICBjYXNlIFJTX01BUktFUjoKLSAgICAgICAgcmV0dXJuIG5ldyBLQ2FudmFzTWFya2VyKCk7
CisgICAgICAgIHJldHVybiBuZXcgU1ZHUmVzb3VyY2VNYXJrZXIoKTsKICAgICBjYXNlIFJTX0lN
QUdFOgotICAgICAgICByZXR1cm4gbmV3IEtDYW52YXNJbWFnZVF1YXJ0eigpOworICAgICAgICBy
ZXR1cm4gbmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsKICAgICBjYXNlIFJTX0ZJTFRFUjoKICAgICAg
ICAgcmV0dXJuIG5ldyBLQ2FudmFzRmlsdGVyUXVhcnR6KCk7CiAgICAgY2FzZSBSU19NQVNLRVI6
Ci0gICAgICAgIHJldHVybiBuZXcgS0NhbnZhc01hc2tlclF1YXJ0eigpOworICAgICAgICByZXR1
cm4gbmV3IFNWR1Jlc291cmNlTWFza2VyKCk7CiAgICAgfQogICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSByZXNvdXJjZSBvZiB0eXBlOiAlaSIsIHR5cGUpOwogICAgIHJldHVybiAwOwpJ
bmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVy
R3JhZGllbnRRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0JKHJldmlzaW9uIDE3
NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnRRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNywxNCBAQAog
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW1wb3J0ICJL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaCIKLQotI2ltcG9ydCAiS0NhbnZhc0ltYWdlLmgi
Ci0jaW1wb3J0ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCisjaW1wb3J0ICJTVkdSZXNvdXJj
ZUltYWdlLmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCiAjaW1wb3J0ICJL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaCIKICNpbXBvcnQgIlF1YXJ0elN1cHBvcnQuaCIKLSNpbXBv
cnQgIlJlbmRlck9iamVjdC5oIgotCisjaW1wb3J0ICJSZW5kZXJQYXRoLmgiCiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzcsNyArMTM1LDYg
QEAgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OktSZQogICAgIDogbV9zdG9w
c0NhY2hlKDApCiAgICAgLCBtX3N0b3BzQ291bnQoMCkKICAgICAsIG1fc2hhZGluZ0NhY2hlKDAp
Ci0gICAgLCBtX21hc2tJbWFnZSgwKQogewogfQogCkBAIC0xNDUsNyArMTQyLDYgQEAgS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6On5LUgogewogICAgIGRlbGV0ZSBtX3N0b3Bz
Q2FjaGU7CiAgICAgQ0dTaGFkaW5nUmVsZWFzZShtX3NoYWRpbmdDYWNoZSk7Ci0gICAgZGVsZXRl
IG1fbWFza0ltYWdlOwogfQogCiB2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVh
cnR6Ojp1cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50ICpzZXJ2ZXIpCkBAIC0yMjAsOSArMjE2LDYgQEAgYm9vbCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVudFF1YXJ0egogICAgIGlmIChzZXJ2ZXItPmxpc3RlbmVyKCkpIC8vIHRo
aXMgc2VlbXMgbGlrZSBiYWQgZGVzaWduIHRvIG1lLCBzaG91bGQgYmUgaW4gYSBjb21tb24gYmFz
ZWNsYXNzLiAtLSBlY3MgOC82LzA1CiAgICAgICAgIHNlcnZlci0+bGlzdGVuZXIoKS0+cmVzb3Vy
Y2VOb3RpZmljYXRpb24oKTsKICAgICAKLSAgICBkZWxldGUgbV9tYXNrSW1hZ2U7Ci0gICAgbV9t
YXNrSW1hZ2UgPSAwOwotCiAgICAgLy8gRklYTUU6IHRvdGFsIGNvbnN0IEhBQ0shCiAgICAgLy8g
V2UgbmVlZCBhIGhvb2sgdG8gY2FsbCB0aGlzIHdoZW4gdGhlIGdyYWRpZW50IGdldHMgdXBkYXRl
ZCwgYmVmb3JlIGRyYXduLgogICAgIGlmICghbV9zaGFkaW5nQ2FjaGUpCkBAIC0yNDYsMTIgKzIz
OSwxMiBAQCBib29sIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6CiAgICAgICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVU
b0NvbnRleHQoY29udGV4dCwgcmVuZGVyU3R5bGUsIHJlbmRlck9iamVjdCk7IC8vIEZJWE1FOiB0
aGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHBsYWNlIGZvciB0aGlzLgogICAgICAgICBpZiAoc2Vy
dmVyLT5pc1BhaW50aW5nVGV4dCgpKSB7Ci0gICAgICAgICAgICBtX21hc2tJbWFnZSA9IHN0YXRp
Y19jYXN0PEtDYW52YXNJbWFnZSo+KHF1YXJ0ekRldmljZS0+Y3JlYXRlUmVzb3VyY2UoUlNfSU1B
R0UpKTsKKyAgICAgICAgICAgIG1fbWFza0ltYWdlID0gbmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsK
ICAgICAgICAgICAgIGludCB3aWR0aCAgPSAyMDQ4OwogICAgICAgICAgICAgaW50IGhlaWdodCA9
IDIwNDg7IC8vIEZJWE1FPz8/CiAgICAgICAgICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgbV9tYXNrSW1hZ2UtPmluaXQoc2l6ZSk7Ci0gICAg
ICAgICAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IHF1YXJ0
ekRldmljZS0+Y29udGV4dEZvckltYWdlKG1fbWFza0ltYWdlKTsKKyAgICAgICAgICAgIEtSZW5k
ZXJpbmdEZXZpY2VDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jb250
ZXh0Rm9ySW1hZ2UobV9tYXNrSW1hZ2UuZ2V0KCkpOwogICAgICAgICAgICAgcXVhcnR6RGV2aWNl
LT5wdXNoQ29udGV4dChtYXNrSW1hZ2VDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBtYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6
Kj4obWFza0ltYWdlQ29udGV4dCktPmNnQ29udGV4dCgpOwogICAgICAgICAgICAgY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPihyZW5kZXJPYmplY3QpLT5zdHlsZSgpLT5zZXRDb2xvcihDb2xvcigy
NTUsIDI1NSwgMjU1KSk7CkBAIC0yOTIsNyArMjg1LDYgQEAgdm9pZCBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudFF1YXJ0egogdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1
YXJ0ejo6dGVhcmRvd24oY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgKnNlcnZl
ciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAogeyAK
ICAgICBDR1NoYWRpbmdSZWYgc2hhZGluZyA9IG1fc2hhZGluZ0NhY2hlOwotICAgIEtDYW52YXNJ
bWFnZSogbWFza0ltYWdlID0gbV9tYXNrSW1hZ2U7CiAgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0
eiogcXVhcnR6RGV2aWNlID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eio+KHJl
bmRlcmluZ0RldmljZSgpKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHF1YXJ0ekRldmlj
ZS0+Y3VycmVudENHQ29udGV4dCgpOwogICAgIFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSA9IHJl
bmRlck9iamVjdC0+c3R5bGUoKTsKQEAgLTMxNSw4ICszMDcsNyBAQCB2b2lkIEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50UXVhcnR6CiAgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYgZ3Jh
eUNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShp
bWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlDb2xvclNwYWNlLCBrQ0dJ
bWFnZUFscGhhTm9uZSk7CiAgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGdyYXlDb2xv
clNwYWNlKTsKLSAgICAgICAgICAgIEtDYW52YXNJbWFnZVF1YXJ0eiogcU1hc2tJbWFnZSA9IHN0
YXRpY19jYXN0PEtDYW52YXNJbWFnZVF1YXJ0eio+KG1hc2tJbWFnZSk7Ci0gICAgICAgICAgICBD
R0NvbnRleHREcmF3TGF5ZXJBdFBvaW50KGdyYXlzY2FsZUNvbnRleHQsIENHUG9pbnRNYWtlKDAs
IDApLCBxTWFza0ltYWdlLT5jZ0xheWVyKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xh
eWVyQXRQb2ludChncmF5c2NhbGVDb250ZXh0LCBDR1BvaW50TWFrZSgwLCAwKSwgbV9tYXNrSW1h
Z2UtPmNnTGF5ZXIoKSk7CiAgICAgICAgICAgICBDR0ltYWdlUmVmIGdyYXlzY2FsZUltYWdlID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxlQ29udGV4dCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhl
aWdodCksIGdyYXlzY2FsZUltYWdlKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlbGVhc2UoZ3Jh
eXNjYWxlQ29udGV4dCk7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAkocmV2aXNpb24gMTc0
NDkpCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEtDYW52YXNJbWFnZTsKK2NsYXNzIFNWR1Jlc291cmNlSW1hZ2U7
CiAKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlciB7CiBwdWJsaWM6CkBA
IC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFsaWRhdGVD
YWNoZXMoKTsKICAgICBDR1NoYWRpbmdSZWYgbV9zaGFkaW5nQ2FjaGU7Ci0gICAgbXV0YWJsZSBL
Q2FudmFzSW1hZ2UgKm1fbWFza0ltYWdlOworICAgIG11dGFibGUgUmVmUHRyPFNWR1Jlc291cmNl
SW1hZ2U+IG1fbWFza0ltYWdlOwogfTsKIAogY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyTGlu
ZWFyR3JhZGllbnRRdWFydHogOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRR
dWFydHosCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tCShyZXZpc2lvbiAxNzQ0OSkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0
ei5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEyIEBACiAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKKyNpbXBvcnQgIlNWR1Jlc291cmNlSW1hZ2Uu
aCIKICNpbXBvcnQgIktSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oIgorI2ltcG9ydCAiUmVu
ZGVyUGF0aC5oIgogI2ltcG9ydCAiUXVhcnR6U3VwcG9ydC5oIgotI2ltcG9ydCAiS0NhbnZhc1Jl
c291cmNlc1F1YXJ0ei5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgogCiAj
aW1wb3J0ICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKQEAgLTEzMyw3ICsxMzUsNyBAQCB2b2lk
IEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkUXVhcnR6Ojp0CiAKIHZvaWQgcGF0dGVybkNhbGxi
YWNrKHZvaWQgKmluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogewotICAgIENHTGF5ZXJSZWYg
bGF5ZXIgPSByZWludGVycHJldF9jYXN0PEtDYW52YXNJbWFnZVF1YXJ0eio+KGluZm8pLT5jZ0xh
eWVyKCk7CisgICAgQ0dMYXllclJlZiBsYXllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHUmVzb3Vy
Y2VJbWFnZSo+KGluZm8pLT5jZ0xheWVyKCk7CiAgICAgQ0dDb250ZXh0RHJhd0xheWVyQXRQb2lu
dChjb250ZXh0LCBDR1BvaW50WmVybywgbGF5ZXIpOwogfQogCkBAIC0xNTUsNyArMTU3LDcgQEAg
Ym9vbCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXVhcnR6OgogICAgIEtSZW5kZXJpbmdE
ZXZpY2VDb250ZXh0UXVhcnR6KiBxdWFydHpDb250ZXh0ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmlu
Z0RldmljZUNvbnRleHRRdWFydHoqPihyZW5kZXJpbmdDb250ZXh0KTsKICAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHF1YXJ0ekNvbnRleHQtPmNnQ29udGV4dCgpOwogCi0gICAgS0NhbnZhc0lt
YWdlKiBjZWxsID0gdGlsZSgpOworICAgIFJlZlB0cjxTVkdSZXNvdXJjZUltYWdlPiBjZWxsID0g
dGlsZSgpOwogICAgIGlmICghY2VsbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQubW0JKHJldmlz
aW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9y
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogI2ltcG9ydCAiUXVhcnR6U3Vw
cG9ydC5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktDYW52YXNS
ZXNvdXJjZXNRdWFydHouaCIKICNpbXBvcnQgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgorI2lt
cG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgInd0Zi9Bc3NlcnRpb25zLmgiCiAKICNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CkluZGV4OiBXZWJDb3JlL2tzdmcyL21pc2MvS0Nh
bnZhc1JlbmRlcmluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL21pc2Mv
S0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tz
dmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MjYgKzIzLDI5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpZmRlZiBTVkdfU1VQUE9SVAor
I2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgogCiAjaW5jbHVkZSAiQ1NTVmFsdWVM
aXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5n
U3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJTb2xpZC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclBh
dGguaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJrc3ZnLmgiCiAKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCogc2hhcmVkU29saWRQYWludFNlcnZlcigpCiB7
CiAgICAgc3RhdGljIEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkKiBfc2hhcmVkU29saWRQYWlu
dFNlcnZlciA9IDA7CiAgICAgaWYgKCFfc2hhcmVkU29saWRQYWludFNlcnZlcikKLSAgICAgICAg
X3NoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJTb2xpZCo+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihQU19TT0xJRCkp
OworICAgICAgICBfc2hhcmVkU29saWRQYWludFNlcnZlciA9IHN0YXRpY19jYXN0PEtSZW5kZXJp
bmdQYWludFNlcnZlclNvbGlkKj4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50U2VydmVy
KFBTX1NPTElEKS5yZWxlYXNlUmVmKCkpOwogICAgIHJldHVybiBfc2hhcmVkU29saWRQYWludFNl
cnZlcjsKIH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0MiwxMCBAQCBTVkdDbGlwUGF0aEVsZW1l
bnQ6OlNWR0NsaXBQYXRoRWxlbWVudChjCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKICAgICAsIG1fY2xpcFBhdGhVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UpCiB7Ci0gICAgbV9jbGlwcGVyID0gMDsKIH0KIAogU1ZHQ2xpcFBhdGhF
bGVtZW50Ojp+U1ZHQ2xpcFBhdGhFbGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9jbGlwcGVyOwog
fQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDbGlwUGF0aEVsZW1lbnQsIGlu
dCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRz
LCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fY2xpcFBhdGhVbml0
cykKQEAgLTcxLDEyICs2OSwxMyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyCiAgICAgfQogfQogCi1LQ2FudmFzQ2xpcHBlciogU1ZHQ2xpcFBhdGhFbGVtZW50Ojpj
YW52YXNSZXNvdXJjZSgpCitTVkdSZXNvdXJjZSogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52YXNS
ZXNvdXJjZSgpCiB7CiAgICAgaWYgKCF2aWV3KCkpCiAgICAgICAgIHJldHVybiAwOworCiAgICAg
aWYgKCFtX2NsaXBwZXIpCi0gICAgICAgIG1fY2xpcHBlciA9IHN0YXRpY19jYXN0PEtDYW52YXND
bGlwcGVyKj4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX0NMSVBQRVIpKTsK
KyAgICAgICAgbV9jbGlwcGVyID0gbmV3IFNWR1Jlc291cmNlQ2xpcHBlcigpOwogICAgIGVsc2UK
ICAgICAgICAgbV9jbGlwcGVyLT5yZXNldENsaXBEYXRhKCk7CiAKQEAgLTk3LDcgKzk2LDcgQEAg
S0NhbnZhc0NsaXBwZXIqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudgogICAgICAgICB9CiAgICAg
fQogICAgIGNsaXBQYXRoU3R5bGUtPmRlcmVmKHZpZXcoKS0+cmVuZGVyQXJlbmEoKSk7Ci0gICAg
cmV0dXJuIG1fY2xpcHBlcjsKKyAgICByZXR1cm4gbV9jbGlwcGVyLmdldCgpOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTc0NDkp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBLU1ZHX1NWR0NsaXBQYXRoRWxlbWVudEltcGxf
SAogI2lmZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKLSAgICAgICAgdmlydHVhbCBLQ2FudmFz
Q2xpcHBlciogY2FudmFzUmVzb3VyY2UoKTsKKyAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSog
Y2FudmFzUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyAnU1ZHQ2xpcFBhdGhFbGVtZW50JyBmdW5j
dGlvbnMKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSopOwpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDbGlwUGF0aEVsZW1lbnQsIGludCwg
aW50LCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzKQogCi0gICAgICAgIEtDYW52YXNDbGlw
cGVyKiBtX2NsaXBwZXI7CisgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZUNsaXBwZXI+IG1fY2xp
cHBlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgog
I2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDEzICs1OCwxMCBAQCBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KGNvbnN0CiAg
ICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIG1fd2lkdGgt
PnNldFZhbHVlQXNTdHJpbmcoIjEyMCUiKTsKICAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmlu
ZygiMTIwJSIpOwotCi0gICAgbV9maWx0ZXIgPSAwOwogfQogCiBTVkdGaWx0ZXJFbGVtZW50Ojp+
U1ZHRmlsdGVyRWxlbWVudCgpCiB7Ci0gICAgZGVsZXRlIG1fZmlsdGVyOwogfQogCiBBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9u
LCBlbnVtZXJhdGlvbiwgRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdOYW1lczo6ZmlsdGVy
VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX2ZpbHRlclVuaXRzKQpAQCAtMTEwLDEzICsxMDcsMTMg
QEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgIH0KIH0KIAot
S0NhbnZhc0ZpbHRlciogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQorU1ZHUmVz
b3VyY2UqIFNWR0ZpbHRlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBpZiAoIWF0
dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX2ZpbHRlcikKLSAgICAg
ICAgbV9maWx0ZXIgPSBzdGF0aWNfY2FzdDxLQ2FudmFzRmlsdGVyKj4ocmVuZGVyaW5nRGV2aWNl
KCktPmNyZWF0ZVJlc291cmNlKFJTX0ZJTFRFUikpOworICAgICAgICBtX2ZpbHRlciA9IFdURjo6
c3RhdGljX3BvaW50ZXJfY2FzdDxLQ2FudmFzRmlsdGVyPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3Jl
YXRlUmVzb3VyY2UoUlNfRklMVEVSKSk7CiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmls
dGVyVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1g7CiAgICAgbV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9k
ZSk7CkBAIC0xNDEsNyArMTM4LDcgQEAgS0NhbnZhc0ZpbHRlciogU1ZHRmlsdGVyRWxlbWVudDo6
Y2FudmFzUgogICAgICAgICAgICAgICAgIG1fZmlsdGVyLT5hZGRGaWx0ZXJFZmZlY3QoZmUtPmZp
bHRlckVmZmVjdCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbV9maWx0ZXI7Cisg
ICAgcmV0dXJuIG1fZmlsdGVyLmdldCgpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZpbHRlckVsZW1lbnQoKTsKIAot
ICAgICAgICB2aXJ0dWFsIEtDYW52YXNGaWx0ZXIqIGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAg
IHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCk7CiAKICAgICAgICAgLy8gJ1NW
R0ZpbHRlckVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2b2lkIHNldEZpbHRlclJlcyh1bnNp
Z25lZCBsb25nIGZpbHRlclJlc1gsIHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVzWSkgY29uc3Q7CkBA
IC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIGxvbmcsIEZpbHRlclJl
c1gsIGZpbHRlclJlc1gpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGaWx0ZXJFbGVtZW50LCBsb25nLCBsb25nLCBGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQogCi0g
ICAgICAgIEtDYW52YXNGaWx0ZXIqIG1fZmlsdGVyOworICAgICAgICBSZWZQdHI8S0NhbnZhc0Zp
bHRlcj4gbV9maWx0ZXI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQ0OSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKIAog
I2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCkBAIC00NCwxMiArNDUsMTAgQEAgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdH
cmFkaWVudEVsZW1lbnQoYwogICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fZ3JhZGllbnRUcmFuc2Zvcm0o
bmV3IFNWR1RyYW5zZm9ybUxpc3QpCiB7Ci0gICAgbV9yZXNvdXJjZSA9IDA7CiB9CiAKIFNWR0dy
YWRpZW50RWxlbWVudDo6flNWR0dyYWRpZW50RWxlbWVudCgpCiB7Ci0gICAgZGVsZXRlIG1fcmVz
b3VyY2U7CiB9CiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0dyYWRpZW50RWxl
bWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIEdyYWRpZW50VW5pdHMsIGdyYWRp
ZW50VW5pdHMsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9ncmFk
aWVudFVuaXRzKQpAQCAtMTAzLDIxICsxMDIsMjAgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
Om5vdGlmeUF0dHJpYnV0ZQogICAgIH0KIH0KIAotS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnQqIFNWR0dyYWRpZW50RWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQorU1ZHUmVzb3VyY2UqIFNW
R0dyYWRpZW50RWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQogewogICAgIGlmICghbV9yZXNvdXJj
ZSkgewotICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIHRlbXAgPSByZW5kZXJpbmdEZXZp
Y2UoKS0+Y3JlYXRlUGFpbnRTZXJ2ZXIoZ3JhZGllbnRUeXBlKCkpOwotICAgICAgICBtX3Jlc291
cmNlID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqPih0ZW1wKTsK
KyAgICAgICAgbV9yZXNvdXJjZSA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudD4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVBhaW50U2VydmVy
KGdyYWRpZW50VHlwZSgpKSk7CiAgICAgICAgIG1fcmVzb3VyY2UtPnNldExpc3RlbmVyKHRoaXMp
OwogICAgICAgICBidWlsZEdyYWRpZW50KG1fcmVzb3VyY2UpOwogICAgIH0KLSAgICByZXR1cm4g
bV9yZXNvdXJjZTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZS5nZXQoKTsKIH0KIAogdm9pZCBTVkdH
cmFkaWVudEVsZW1lbnQ6OnJlc291cmNlTm90aWZpY2F0aW9uKCkgY29uc3QKIHsKICAgICAvLyBX
ZSdyZSByZWZlcmVuY2VkIGJ5IGEgImNsaWVudCIsIGJ1aWxkIHRoZSBncmFkaWVudCBub3cuLi4K
LSAgICBidWlsZEdyYWRpZW50KGNvbnN0X2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Kj4odGhpcykt
PmNhbnZhc1Jlc291cmNlKCkpOworICAgIGJ1aWxkR3JhZGllbnQoc3RhdGljX2Nhc3Q8S1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQqPihjb25zdF9jYXN0PFNWR0dyYWRpZW50RWxlbWVudCo+
KHRoaXMpLT5jYW52YXNSZXNvdXJjZSgpKSk7CiB9CiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50
OjpyZWJ1aWxkU3RvcHMoKSBjb25zdApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmgJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFNWR0dyYWRpZW50RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRF
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZl
cmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1Jlc291cmNlTGlzdGVuZXIKICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBl
bnVtIFNWR0dyYWRpZW50VHlwZSB7CkBAIC01MSwxMiArNTEsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyAnU1ZHR3JhZGllbnRFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7Ci0gICAgICAg
IAotICAgICAgICB2aXJ0dWFsIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBjYW52YXNS
ZXNvdXJjZSgpOworCisgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNl
KCk7CisKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNlTm90aWZpY2F0aW9uKCkgY29uc3Q7
CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEtS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KikgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYnVpbGRHcmFkaWVudChQYXNzUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50PikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIEtDUGFpbnRTZXJ2ZXJUeXBlIGdyYWRp
ZW50VHlwZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdm9pZCByZWJ1aWxkU3RvcHMoKSBjb25zdDsK
IApAQCAtNjgsNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwgaW50LCBHcmFk
aWVudFVuaXRzLCBncmFkaWVudFVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgUmVmUHRyPFNW
R1RyYW5zZm9ybUxpc3Q+LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRUcmFuc2Zvcm0pCiAK
LSAgICAgICAgbXV0YWJsZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogbV9yZXNvdXJj
ZTsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ+
IG1fcmVzb3VyY2U7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdS
ZXNvdXJjZUltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNzQ0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OnBhcnNlTWFwcAogICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi12b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
YnVpbGRHcmFkaWVudChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogX2dyYWQpIGNvbnN0
Cit2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkaWVudChQYXNzUmVmUHRy
PEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50PiBfZ3JhZCkgY29uc3QKIHsKICAgICByZWJ1
aWxkU3RvcHMoKTsgLy8gcmVidWlsZCBzdG9wcyBiZWZvcmUgcG9zc2libHkgaW1wb3J0aW5nIHRo
ZW0gZnJvbSBhbnkgcmVmZXJlbmNlZCBncmFkaWVudC4KIApAQCAtODUsMjMgKzg1LDIzIEBAIHZv
aWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICBmbG9hdCBfeDEgPSB4
MSgpLT52YWx1ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgpOwogICAgIGZsb2F0IF94MiA9IHgyKCkt
PnZhbHVlKCksIF95MiA9IHkyKCktPnZhbHVlKCk7CiAKLSAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJMaW5lYXJHcmFkaWVudCogZ3JhZCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50Kj4oX2dyYWQpOworICAgIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJMaW5lYXJHcmFkaWVudD4gZ3JhZCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudD4oX2dyYWQpOwogICAgIEFmZmluZVRyYW5zZm9y
bSBtYXQ7CiAgICAgaWYgKGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+IDAp
CiAgICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJp
eCgpLT5tYXRyaXgoKTsKIAogICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJl
Y2F0ZWRTdHJpbmcoKTsKLSAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIHBzZXJ2ZXIgPSBnZXRQ
YWludFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CisgICAgUmVmUHRyPEtSZW5k
ZXJpbmdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgp
LCByZWYubWlkKDEpKTsKICAgICAKICAgICBpZiAocHNlcnZlciAmJiAocHNlcnZlci0+dHlwZSgp
ID09IFBTX1JBRElBTF9HUkFESUVOVCB8fCBwc2VydmVyLT50eXBlKCkgPT0gUFNfTElORUFSX0dS
QURJRU5UKSkgewogICAgICAgICBib29sIGlzTGluZWFyID0gcHNlcnZlci0+dHlwZSgpID09IFBT
X0xJTkVBUl9HUkFESUVOVDsKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQq
IGdyYWRpZW50ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqPihw
c2VydmVyKTsKKyAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqIGdyYWRpZW50
ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqPihwc2VydmVyLmdl
dCgpKTsKIAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Z3JhZGllbnRVbml0
c0F0dHIpKQogICAgICAgICAgICAgYmJveCA9IGdyYWRpZW50LT5ib3VuZGluZ0JveE1vZGUoKTsK
ICAgICAgICAgICAgIAogICAgICAgICBpZiAoaXNMaW5lYXIpIHsKLSAgICAgICAgICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCo+KHBzZXJ2ZXIpOworICAgICAgICAgICAg
S1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQqIGxpbmVhciA9IHN0YXRpY19jYXN0
PEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50Kj4ocHNlcnZlci5nZXQoKSk7CiAg
ICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDFBdHRyKSkKICAgICAgICAg
ICAgICAgICBfeDEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS54KCk7CiAgICAgICAgICAgICBl
bHNlIGlmIChiYm94KQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmgJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgYnVpbGRHcmFkaWVudChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChQYXNzUmVmUHRyPEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50PikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgS0NQYWludFNlcnZl
clR5cGUgZ3JhZGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gUFNfTElORUFSX0dSQURJRU5UOyB9
CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDExIEBAIFNWR01hcmtlckVsZW1l
bnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3QKICAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01BUktF
UlVOSVRTX1NUUk9LRVdJRFRIKQogICAgICwgbV9vcmllbnRUeXBlKDApCiAgICAgLCBtX29yaWVu
dEFuZ2xlKG5ldyBTVkdBbmdsZSh0aGlzKSkKLSAgICAsIG1fbWFya2VyKDApCiB7CiB9CiAKIFNW
R01hcmtlckVsZW1lbnQ6On5TVkdNYXJrZXJFbGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9tYXJr
ZXI7CiB9CiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKQpAQCAtMTEyLDEwICsxMTAsMTAgQEAgdm9pZCBTVkdNYXJrZXJF
bGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKAogICAgIHNldE9yaWVudEFuZ2xlQmFzZVZhbHVlKGFu
Z2xlKTsKIH0KIAotS0NhbnZhc01hcmtlciogU1ZHTWFya2VyRWxlbWVudDo6Y2FudmFzUmVzb3Vy
Y2UoKQorU1ZHUmVzb3VyY2UqIFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKIHsK
ICAgICBpZiAoIW1fbWFya2VyKQotICAgICAgICBtX21hcmtlciA9IHN0YXRpY19jYXN0PEtDYW52
YXNNYXJrZXIqPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNfTUFSS0VSKSk7
CisgICAgICAgIG1fbWFya2VyID0gbmV3IFNWR1Jlc291cmNlTWFya2VyKCk7CiAgICAgCiAgICAg
bV9tYXJrZXItPnNldE1hcmtlcihzdGF0aWNfY2FzdDxSZW5kZXJTVkdDb250YWluZXIqPihyZW5k
ZXJlcigpKSk7CiAKQEAgLTEzMiw3ICsxMzAsNyBAQCBLQ2FudmFzTWFya2VyKiBTVkdNYXJrZXJF
bGVtZW50OjpjYW52YXNSCiAgICAgbV9tYXJrZXItPnNldFJlZihyZWZYKCktPnZhbHVlKCksIHJl
ZlkoKS0+dmFsdWUoKSk7CiAgICAgbV9tYXJrZXItPnNldFVzZVN0cm9rZVdpZHRoKG1hcmtlclVu
aXRzKCkgPT0gU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIKTsKICAgICAKLSAgICByZXR1cm4g
bV9tYXJrZXI7CisgICAgcmV0dXJuIG1fbWFya2VyLmdldCgpOwogfQogCiBSZW5kZXJPYmplY3Qq
IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAko
cmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNkZWZpbmUgU1ZHTWFya2VyRWxlbWVu
dF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIktDYW52YXNNYXJrZXIuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZU1hcmtlci5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJT
VkdMYW5nU3BhY2UuaCIKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAK
ICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxl
KSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAg
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwotICAgICAgICB2aXJ0dWFsIEtDYW52YXNNYXJrZXIqIGNhbnZhc1Jlc291
cmNlKCk7CisgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCk7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CkBAIC04Myw3ICs4Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdN
YXJrZXJFbGVtZW50LCBpbnQsIGludCwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xl
KiwgUmVmUHRyPFNWR0FuZ2xlPiwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQogCi0gICAgICAg
IEtDYW52YXNNYXJrZXIqIG1fbWFya2VyOworICAgICAgICBSZWZQdHI8U1ZHUmVzb3VyY2VNYXJr
ZXI+IG1fbWFya2VyOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiU1ZHTWFza0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIktDYW52YXNJbWFnZS5oIgorI2luY2x1ZGUgIlNWR1Jlc291
cmNlSW1hZ2UuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCkBAIC00OCwxNCArNDgs
MTIgQEAgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvbnN0IFF1YQogICAgICwgbV95
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCiAgICAg
LCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKICAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9y
dEVsZW1lbnQoKSkpCi0gICAgLCBtX21hc2tlcigwKQogICAgICwgbV9kaXJ0eSh0cnVlKQogewog
fQogCiBTVkdNYXNrRWxlbWVudDo6flNWR01hc2tFbGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9t
YXNrZXI7CiB9CiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3guZ2V0KCkpCkBAIC0xMDEsMTQgKzk5LDE1IEBAIHZvaWQgU1ZHTWFza0VsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICB9CiB9CiAKLUtDYW52YXNJbWFnZSogU1ZHTWFz
a0VsZW1lbnQ6OmRyYXdNYXNrZXJDb250ZW50KCkKK1NWR1Jlc291cmNlSW1hZ2UqIFNWR01hc2tF
bGVtZW50OjpkcmF3TWFza2VyQ29udGVudCgpCiB7CiAgICAgS1JlbmRlcmluZ0RldmljZSogZGV2
aWNlID0gcmVuZGVyaW5nRGV2aWNlKCk7CiAgICAgaWYgKCFkZXZpY2UtPmN1cnJlbnRDb250ZXh0
KCkpIC8vIEZJWE1FOiBoYWNrIGZvciBub3cgdW50aWwgSW1hZ2U6OmxvY2tGb2N1cyBleGlzdHMK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBLQ2FudmFzSW1hZ2UqIG1hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFn
ZSo+KGRldmljZS0+Y3JlYXRlUmVzb3VyY2UoUlNfSU1BR0UpKTsKKworICAgIFNWR1Jlc291cmNl
SW1hZ2UqIG1hc2tJbWFnZSA9IG5ldyBTVkdSZXNvdXJjZUltYWdlKCk7CiAKICAgICBJbnRTaXpl
IHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0
KCktPnZhbHVlKCkpKTsKICAgICBtYXNrSW1hZ2UtPmluaXQoc2l6ZSk7CkBAIC0xMzcsMTggKzEz
NiwxOCBAQCBSZW5kZXJPYmplY3QqIFNWR01hc2tFbGVtZW50OjpjcmVhdGVSZW5kCiAgICAgcmV0
dXJuIG1hc2tDb250YWluZXI7CiB9CiAKLUtDYW52YXNNYXNrZXIqIFNWR01hc2tFbGVtZW50Ojpj
YW52YXNSZXNvdXJjZSgpCitTVkdSZXNvdXJjZSogU1ZHTWFza0VsZW1lbnQ6OmNhbnZhc1Jlc291
cmNlKCkKIHsKICAgICBpZiAoIW1fbWFza2VyKSB7Ci0gICAgICAgIG1fbWFza2VyID0gc3RhdGlj
X2Nhc3Q8S0NhbnZhc01hc2tlcio+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVSZXNvdXJjZShS
U19NQVNLRVIpKTsKKyAgICAgICAgbV9tYXNrZXIgPSBuZXcgU1ZHUmVzb3VyY2VNYXNrZXIoKTsK
ICAgICAgICAgbV9kaXJ0eSA9IHRydWU7CiAgICAgfQogICAgIGlmIChtX2RpcnR5KSB7Ci0gICAg
ICAgIEtDYW52YXNJbWFnZSogbmV3TWFza0ltYWdlID0gZHJhd01hc2tlckNvbnRlbnQoKTsKLSAg
ICAgICAgbV9tYXNrZXItPnNldE1hc2sobmV3TWFza0ltYWdlKTsKLSAgICAgICAgbV9kaXJ0eSA9
IChuZXdNYXNrSW1hZ2UgIT0gMCk7CisgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZUltYWdlPiBt
YXNrKGRyYXdNYXNrZXJDb250ZW50KCkpOworICAgICAgICBtX21hc2tlci0+c2V0TWFzayhtYXNr
KTsKKyAgICAgICAgbV9kaXJ0eSA9IChtYXNrICE9IDApOwogICAgIH0KLSAgICByZXR1cm4gbV9t
YXNrZXI7CisgICAgcmV0dXJuIG1fbWFza2VyLmdldCgpOwogfQogCiB9CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2Rl
ZmluZSBTVkdNYXNrRWxlbWVudF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIktD
YW52YXNNYXNrZXIuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUg
IlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2Uu
aCIKICNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgiCkBAIC01MiwxMCArNTIs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgICAgIHZpcnR1YWwg
S0NhbnZhc01hc2tlciogY2FudmFzUmVzb3VyY2UoKTsKKyAgICAgICAgdmlydHVhbCBTVkdSZXNv
dXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgS0NhbnZh
c0ltYWdlKiBkcmF3TWFza2VyQ29udGVudCgpOworICAgICAgICBTVkdSZXNvdXJjZUltYWdlKiBk
cmF3TWFza2VyQ29udGVudCgpOwogCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRf
REVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQpAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgS0NhbnZhc01hc2tlciogbV9t
YXNrZXI7CisgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZU1hc2tlcj4gbV9tYXNrZXI7CiAgICAg
ICAgIGJvb2wgbV9kaXJ0eTsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNs
dWRlICJLQ2FudmFzSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUltYWdlLmgiCiAjaW5j
bHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKQEAgLTUwLDcgKzUw
LDcgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KGNvbgogICAgICwgU1ZH
TGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwg
U1ZHRml0VG9WaWV3Qm94KCkKLSAgICAsIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyKCkKKyAgICAs
IFNWR1Jlc291cmNlTGlzdGVuZXIoKQogICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
V0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKICAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMs
IExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQogICAgICwgbV93aWR0aChuZXcgU1ZHTGVu
Z3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCkBAIC01OSwxNCArNTksMTEg
QEAgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KGNvbgogICAgICwgbV9wYXR0
ZXJuQ29udGVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVT
RSkKICAgICAsIG1fcGF0dGVyblRyYW5zZm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlzdCkKIHsKLSAg
ICBtX3RpbGUgPSAwOwotICAgIG1fcGFpbnRTZXJ2ZXIgPSAwOwogICAgIG1faWdub3JlQXR0cmli
dXRlQ2hhbmdlcyA9IGZhbHNlOwogfQogCiBTVkdQYXR0ZXJuRWxlbWVudDo6flNWR1BhdHRlcm5F
bGVtZW50KCkKIHsKLSAgICBkZWxldGUgbV9wYWludFNlcnZlcjsKIH0KIAogQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVu
dW1lcmF0aW9uLCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5V
bml0c0F0dHIubG9jYWxOYW1lKCksIG1fcGF0dGVyblVuaXRzKQpAQCAtMTM5LDEyICsxMzYsMTIg
QEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cmVzb3VyY2VOb3RpZmljYQogdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZXNGcm9tUmVmZXJlbmNlUGF0dGVybihjb25zdCBTVkdQ
YXR0ZXJuRWxlbWVudCogdGFyZ2V0LCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm1N
YXRyaXgpCiB7CiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBocmVmKCkuZGVwcmVjYXRlZFN0
cmluZygpOwotICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciogcmVmU2VydmVyID0gZ2V0UGFpbnRT
ZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOworICAgIFJlZlB0cjxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXI+IHJlZlNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCBy
ZWYubWlkKDEpKTsKIAogICAgIGlmICghcmVmU2VydmVyIHx8IHJlZlNlcnZlci0+dHlwZSgpICE9
IFBTX1BBVFRFUk4pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJQYXR0ZXJuKiByZWZQYXR0ZXJuID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybio+KHJlZlNlcnZlcik7CisgICAgUmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4+IHJlZlBhdHRlcm4gPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8S1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVybj4ocmVmU2VydmVyKTsKICAgICAKICAgICBpZiAoIWhhc0F0dHJp
YnV0ZShTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0cikpIHsKICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSA9IHRhcmdldC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpwYXR0ZXJuVW5p
dHNBdHRyKTsKQEAgLTE4NCwxNiArMTgxLDE1IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRy
YXdQYXR0ZXJuQ29udGUKICAgICAgICAgICAgIHNhdmVkQ29udGV4dCA9IGNvbnN0X2Nhc3Q8U1ZH
UGF0dGVybkVsZW1lbnQqPih0aGlzKS0+cHVzaEF0dHJpYnV0ZUNvbnRleHQoYWN0aXZlRWxlbWVu
dCk7CiAgICAgfQogICAgIAotICAgIGRlbGV0ZSBtX3RpbGU7Ci0gICAgbV90aWxlID0gc3RhdGlj
X2Nhc3Q8S0NhbnZhc0ltYWdlKj4oZGV2aWNlLT5jcmVhdGVSZXNvdXJjZShSU19JTUFHRSkpOwor
ICAgIG1fdGlsZSA9IG5ldyBTVkdSZXNvdXJjZUltYWdlKCk7CiAgICAgbV90aWxlLT5pbml0KG5l
d1NpemUpOwogCi0gICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHBhdHRlcm5Db250ZXh0ID0g
ZGV2aWNlLT5jb250ZXh0Rm9ySW1hZ2UobV90aWxlKTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCogcGF0dGVybkNvbnRleHQgPSBkZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtX3RpbGUuZ2V0
KCkpOwogICAgIGRldmljZS0+cHVzaENvbnRleHQocGF0dGVybkNvbnRleHQpOwogICAgIEZsb2F0
UmVjdCByZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBo
ZWlnaHQoKS0+dmFsdWUoKSk7CiAgICAgbV9wYWludFNlcnZlci0+c2V0QmJveChyZWN0KTsKICAg
ICBtX3BhaW50U2VydmVyLT5zZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm1NYXRy
aXgpOwotICAgIG1fcGFpbnRTZXJ2ZXItPnNldFRpbGUobV90aWxlKTsKKyAgICBtX3BhaW50U2Vy
dmVyLT5zZXRUaWxlKG1fdGlsZS5nZXQoKSk7CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0KHBhdHRlcm5Db250ZXh0LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CiAKQEAg
LTMyOCwxNCArMzI0LDEzIEBAIFJlbmRlck9iamVjdCogU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0
ZVIKICAgICByZXR1cm4gcGF0dGVybkNvbnRhaW5lcjsKIH0KIAotS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybiogU1ZHUGF0dGVybkVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKK1NWR1Jlc291
cmNlKiBTVkdQYXR0ZXJuRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQogewogICAgIGlmICghbV9w
YWludFNlcnZlcikgewotICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIHBzZXJ2ZXIgPSBy
ZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFpbnRTZXJ2ZXIoS0NQYWludFNlcnZlclR5cGUoUFNf
UEFUVEVSTikpOwotICAgICAgICBtX3BhaW50U2VydmVyID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVybio+KHBzZXJ2ZXIpOworICAgICAgICBtX3BhaW50U2VydmVyID0g
V1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4+KHJl
bmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihLQ1BhaW50U2VydmVyVHlwZShQU19Q
QVRURVJOKSkpOwogICAgICAgICBtX3BhaW50U2VydmVyLT5zZXRMaXN0ZW5lcihjb25zdF9jYXN0
PFNWR1BhdHRlcm5FbGVtZW50Kj4odGhpcykpOwogICAgIH0KLSAgICByZXR1cm4gbV9wYWludFNl
cnZlcjsKKyAgICByZXR1cm4gbV9wYWludFNlcnZlci5nZXQoKTsKIH0KIAogU1ZHTWF0cml4KiBT
VkdQYXR0ZXJuRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKIAotY2xhc3Mg
S0NhbnZhc0ltYWdlOworY2xhc3MgU1ZHUmVzb3VyY2VJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUKIHsKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdSZXNvdXJjZUxpc3RlbmVyCiAgICAg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxl
KSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAg
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwotICAgICAgICB2aXJ0dWFsIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRl
cm4qIGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZh
c1Jlc291cmNlKCk7CiAKICAgICAgICAgLy8gJ3ZpcnR1YWwgU1ZHTG9jYXRhYmxlJyBmdW5jdGlv
bnMKICAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwpAQCAtODIsOSAr
ODIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgaW50LCBQYXR0ZXJuQ29udGVudFVuaXRz
LCBwYXR0ZXJuQ29udGVudFVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQdHI8U1ZHVHJh
bnNmb3JtTGlzdD4sIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pCiAKLSAgICAg
ICAgbXV0YWJsZSBLQ2FudmFzSW1hZ2UqIG1fdGlsZTsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8
U1ZHUmVzb3VyY2VJbWFnZT4gbV90aWxlOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9pZ25vcmVB
dHRyaWJ1dGVDaGFuZ2VzOwotICAgICAgICBtdXRhYmxlIEtSZW5kZXJpbmdQYWludFNlcnZlclBh
dHRlcm4qIG1fcGFpbnRTZXJ2ZXI7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEtSZW5kZXJpbmdQ
YWludFNlcnZlclBhdHRlcm4+IG1fcGFpbnRTZXJ2ZXI7CiAgICAgICAgIAogICAgICAgICB2aXJ0
dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhp
czsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwCiAgICAgICAgIFNWR0dyYWRpZW50
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLXZvaWQgU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50KiBfZ3JhZCkgY29uc3QKK3ZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdy
YWRpZW50KFBhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ+IF9ncmFkKSBj
b25zdAogewogICAgIHJlYnVpbGRTdG9wcygpOyAvLyByZWJ1aWxkIHN0b3BzIGJlZm9yZSBwb3Nz
aWJseSBpbXBvcnRpbmcgdGhlbSBmcm9tIGFueSByZWZlcmVuY2VkIGdyYWRpZW50LgogCkBAIC05
NCwyMyArOTQsMjMgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAog
ICAgIGZsb2F0IF9meCA9IGZ4U2V0ID8gZngoKS0+dmFsdWUoKSA6IF9jeDsKICAgICBmbG9hdCBf
ZnkgPSBmeVNldCA/IGZ5KCktPnZhbHVlKCkgOiBfY3k7CiAKLSAgICBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJSYWRpYWxHcmFkaWVudCogZ3JhZCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQYWludFNl
cnZlclJhZGlhbEdyYWRpZW50Kj4oX2dyYWQpOworICAgIFJlZlB0cjxLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJSYWRpYWxHcmFkaWVudD4gZ3JhZCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4oX2dyYWQpOwogICAgIEFmZmluZVRyYW5z
Zm9ybSBtYXQ7CiAgICAgaWYgKGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+
IDApCiAgICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1h
dHJpeCgpLT5tYXRyaXgoKTsKIAogICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRl
cHJlY2F0ZWRTdHJpbmcoKTsKLSAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIHBzZXJ2ZXIgPSBn
ZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CisgICAgUmVmUHRyPEtS
ZW5kZXJpbmdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVu
dCgpLCByZWYubWlkKDEpKTsKIAogICAgIGlmIChwc2VydmVyICYmIChwc2VydmVyLT50eXBlKCkg
PT0gUFNfUkFESUFMX0dSQURJRU5UIHx8IHBzZXJ2ZXItPnR5cGUoKSA9PSBQU19MSU5FQVJfR1JB
RElFTlQpKSB7CiAgICAgICAgIGJvb2wgaXNSYWRpYWwgPSBwc2VydmVyLT50eXBlKCkgPT0gUFNf
UkFESUFMX0dSQURJRU5UOwotICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCog
Z3JhZGllbnQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCo+KHBz
ZXJ2ZXIpOworICAgICAgICBSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ+IGdy
YWRpZW50ID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50Pihwc2VydmVyKTsKIAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
Z3JhZGllbnRVbml0c0F0dHIpKQogICAgICAgICAgICAgYmJveCA9IGdyYWRpZW50LT5ib3VuZGlu
Z0JveE1vZGUoKTsKIAogICAgICAgICBpZiAoaXNSYWRpYWwpIHsKLSAgICAgICAgICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50KiByYWRpYWwgPSBzdGF0aWNfY2FzdDxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCo+KHBzZXJ2ZXIpOworICAgICAgICAgICAg
UmVmUHRyPEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PiByYWRpYWwgPSBXVEY6
OnN0YXRpY19wb2ludGVyX2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+
KHBzZXJ2ZXIpOwogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmN4QXR0
cikpCiAgICAgICAgICAgICAgICAgX2N4ID0gcmFkaWFsLT5ncmFkaWVudENlbnRlcigpLngoKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogCiAgICAgICAgIC8vIEluaGVyaXQgY29s
b3Igc3RvcHMgaWYgZW1wdHkKICAgICAgICAgaWYgKGdyYWQtPmdyYWRpZW50U3RvcHMoKS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFN0b3BzKGdyYWRpZW50KTsKKyAg
ICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3RvcHMoZ3JhZGllbnQuZ2V0KCkpOwogCiAgICAg
ICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKSkKICAgICAg
ICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKGdyYWRpZW50LT5zcHJlYWRNZXRo
b2QoKSk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBidWls
ZEdyYWRpZW50KEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KikgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KFBhc3NSZWZQdHI8S1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnQ+KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBLQ1BhaW50U2VydmVyVHlwZSBn
cmFkaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBQU19SQURJQUxfR1JBRElFTlQ7IH0KIAogICAg
IHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlz
aW9uIDE3NDQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsYWJsZS5oIgorI2luY2x1
ZGUgIlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwotICAgIGNsYXNzIEtDYW52YXNS
ZXNvdXJjZTsKICAgICBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlOwogICAgIGNsYXNzIFJlbmRlclBh
dGg7CiAgICAgY2xhc3MgUmVuZGVyVmlldzsKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkg
Y29uc3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgICAgIHZpcnR1
YWwgS0NhbnZhc1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAg
ICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKSB7IHJldHVybiAwOyB9CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDE3NDQ5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDI5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCi0KLSNpbmNsdWRlICJGb250LmgiCi0jaW5jbHVkZSAiVGV4dFN0eWxlLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSgpIDogZmlsbENvbG9y
KENvbG9yOjpibGFjayksIHBhaW50aW5nRGlzYWJsZWQoZmFsc2UpIHsgfQotICAgIEZvbnQgZm9u
dDsKLSAgICBQZW4gcGVuOwotICAgIENvbG9yIGZpbGxDb2xvcjsKLSAgICBib29sIHBhaW50aW5n
RGlzYWJsZWQ7Ci19OwotICAgICAgICAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGUgewot
cHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUoKTsKLSAgICAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZSBzdGF0ZTsKLSAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0U3RhdGU+IHN0
YWNrOwotICAgIFZlY3RvcjxJbnRSZWN0PiBtX2ZvY3VzUmluZ1JlY3RzOwotICAgIGludCBtX2Zv
Y3VzUmluZ1dpZHRoOwotICAgIGludCBtX2ZvY3VzUmluZ09mZnNldDsKLSAgICBib29sIG1fdXBk
YXRpbmdDb250cm9sVGludHM7Ci19OwotCi1HcmFwaGljc0NvbnRleHRQcml2YXRlOjpHcmFwaGlj
c0NvbnRleHRQcml2YXRlKCkKLSAgICA6IG1fZm9jdXNSaW5nV2lkdGgoMCkKLSAgICAsIG1fZm9j
dXNSaW5nT2Zmc2V0KDApCi0gICAgLCBtX3VwZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQotewot
fQotCi1HcmFwaGljc0NvbnRleHRQcml2YXRlKiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dFByaXZhdGUoKQotewotICAgIHJldHVybiBuZXcgR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHRQ
cml2YXRlKEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIGRlbGV0ZU1lKQotewotICAgIGRlbGV0ZSBk
ZWxldGVNZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKQotewotICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29tbW9uLT5zdGFj
ay5hcHBlbmQobV9jb21tb24tPnN0YXRlKTsKLSAgICAKLSAgICBzYXZlUGxhdGZvcm1TdGF0ZSgp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCi17Ci0gICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29tbW9uLT5zdGFj
ay5pc0VtcHR5KCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFUlJPUiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cmVzdG9yZSgpIHN0YWNrIGlzIGVtcHR5Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9jb21tb24tPnN0YXRlID0gbV9jb21tb24tPnN0YWNrLmxhc3QoKTsKLSAgICBtX2Nv
bW1vbi0+c3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIAotICAgIHJlc3RvcmVQbGF0Zm9ybVN0YXRl
KCk7Ci19Ci0KLWNvbnN0IEZvbnQmIEdyYXBoaWNzQ29udGV4dDo6Zm9udCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5mb250OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0Rm9udChjb25zdCBGb250JiBhRm9udCkKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUuZm9u
dCA9IGFGb250OwotfQotCi1jb25zdCBQZW4mIEdyYXBoaWNzQ29udGV4dDo6cGVuKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jb21tb24tPnN0YXRlLnBlbjsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBlbihjb25zdCBQZW4mIHBlbikKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVu
ID0gcGVuOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKFBlbjo6UGVuU3R5bGUg
c3R5bGUpCi17Ci0gICAgbV9jb21tb24tPnN0YXRlLnBlbi5zZXRTdHlsZShzdHlsZSk7Ci0gICAg
bV9jb21tb24tPnN0YXRlLnBlbi5zZXRDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIG1fY29tbW9u
LT5zdGF0ZS5wZW4uc2V0V2lkdGgoMCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
ZW4oUkdCQTMyIHJnYikKLXsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFN0eWxlKFBlbjo6
U29saWRMaW5lKTsKLSAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldENvbG9yKHJnYik7Ci0gICAg
bV9jb21tb24tPnN0YXRlLnBlbi5zZXRXaWR0aCgwKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9jb21tb24tPnN0
YXRlLmZpbGxDb2xvciA9IGNvbG9yOwotfQotCi1Db2xvciBHcmFwaGljc0NvbnRleHQ6OmZpbGxD
b2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3I7Ci19
Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX3VwZGF0aW5nQ29udHJvbFRpbnRzOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCBiKQotewotICAg
IHNldFBhaW50aW5nRGlzYWJsZWQoYik7Ci0gICAgbV9jb21tb24tPm1fdXBkYXRpbmdDb250cm9s
VGludHMgPSBiOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGFpbnRpbmdEaXNhYmxl
ZChib29sIGYpCi17Ci0gICAgbV9jb21tb24tPnN0YXRlLnBhaW50aW5nRGlzYWJsZWQgPSBmOwot
fQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHAs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoteyAgICAgICAgCi0gICAgZHJhd0ltYWdlKGltYWdlLCBw
LCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQotewotICAgIGRyYXdJbWFnZShpbWFnZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEp
LCBvcCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3ApCi17Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBJbnRSZWN0KGRlc3QsIHNyY1Jl
Y3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3ApOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBG
bG9hdFJlY3QoZGVzdCksIHNyY1JlY3QsIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50KQotewot
ICAgIGRyYXdUZXh0KHJ1biwgcG9pbnQsIFRleHRTdHlsZSgpKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBv
aW50LCBjb25zdCBUZXh0U3R5bGUmIHN0eWxlKQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmb250KCkuZHJhd1RleHQodGhpcywgcnVu
LCBzdHlsZSwgcG9pbnQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0hpZ2hsaWdo
dEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGludCBo
LCBjb25zdCBUZXh0U3R5bGUmIHN0eWxlLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQot
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZp
bGxSZWN0KGZvbnQoKS5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHN0eWxlLCBwb2ludCwgaCks
IGJhY2tncm91bmRDb2xvcik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojppbml0Rm9jdXNS
aW5nKGludCB3aWR0aCwgaW50IG9mZnNldCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgY2xlYXJGb2N1c1JpbmcoKTsKLSAgICAKLSAgICBtX2Nv
bW1vbi0+bV9mb2N1c1JpbmdXaWR0aCA9IHdpZHRoOwotICAgIG1fY29tbW9uLT5tX2ZvY3VzUmlu
Z09mZnNldCA9IG9mZnNldDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyRm9jdXNS
aW5nKCkKLXsKLSAgICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdSZWN0cy5jbGVhcigpOwotfQotCi1J
bnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQm91bmRpbmdSZWN0KCkKLXsKLSAgICBJ
bnRSZWN0IHJlc3VsdCA9IEludFJlY3QoMCwgMCwgMCwgMCk7Ci0gICAgCi0gICAgY29uc3QgVmVj
dG9yPEludFJlY3Q+JiByZWN0cyA9IGZvY3VzUmluZ1JlY3RzKCk7Ci0gICAgdW5zaWduZWQgcmVj
dENvdW50ID0gcmVjdHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0
Q291bnQ7IGkrKykKLSAgICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKLSAgICAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZEZvY3VzUmlu
Z1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8IHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb21tb24tPm1fZm9j
dXNSaW5nUmVjdHMuYXBwZW5kKHJlY3QpOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1
c1JpbmdXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1dp
ZHRoOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdPZmZzZXQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NvbW1vbi0+bV9mb2N1c1JpbmdPZmZzZXQ7Ci19Ci0KLWNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdSZWN0cygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1JlY3RzOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdHN3ID0g
c3JjLndpZHRoKCk7Ci0gICAgZmxvYXQgdHNoID0gc3JjLmhlaWdodCgpOwotICAgIGZsb2F0IHR3
ID0gZGVzdC53aWR0aCgpOwotICAgIGZsb2F0IHRoID0gZGVzdC5oZWlnaHQoKTsKLSAgICAgICAg
Ci0gICAgaWYgKHRzdyA9PSAtMSkKLSAgICAgICAgdHN3ID0gaW1hZ2UtPndpZHRoKCk7Ci0gICAg
aWYgKHRzaCA9PSAtMSkKLSAgICAgICAgdHNoID0gaW1hZ2UtPmhlaWdodCgpOwotCi0gICAgaWYg
KHR3ID09IC0xKQotICAgICAgICB0dyA9IGltYWdlLT53aWR0aCgpOwotICAgIGlmICh0aCA9PSAt
MSkKLSAgICAgICAgdGggPSBpbWFnZS0+aGVpZ2h0KCk7Ci0KLSAgICBpbWFnZS0+ZHJhdyh0aGlz
LCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVj
dChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCByZWN0LCBzcmNQ
b2ludCwgdGlsZVNpemUsIG9wKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxl
ZEltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1
bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKQotICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0g
ICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyY1JlY3QpOwotCi0gICAgaW1h
Z2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIG9wKTsKLX0K
LQotfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNzQ0OSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgR3JhcGhp
Y3NDb250ZXh0X2gKLSNkZWZpbmUgR3JhcGhpY3NDb250ZXh0X2gKLQotI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1
ZGUgIlBlbi5oIgotI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJVQ2hhci5o
IgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgotCi0jaWYgUExBVEZPUk0oQ0cpCi10eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLXR5cGVkZWYgc3RydWN0IF9j
YWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3Mg
UVBhaW50ZXI7Ci10eXBlZGVmIFFQYWludGVyIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwotI2Vs
c2UKLXR5cGVkZWYgdm9pZCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oV0lOKQotdHlwZWRlZiBzdHJ1Y3QgSERDX18qIEhEQzsKLSNlbmRpZgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVRoaWNrbmVz
cyA9IDM7Ci0gICAgY29uc3QgaW50IGNNaXNzcGVsbGluZ0xpbmVQYXR0ZXJuV2lkdGggPSA0Owot
ICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybkdhcFdpZHRoID0gMTsKLQotICAg
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBGb250OwotICAgIGNsYXNzIEdyYXBo
aWNzQ29udGV4dFByaXZhdGU7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOwotICAgIGNsYXNzIEtVUkw7Ci0gICAgY2xhc3MgUGF0aDsKLSAgICBjbGFzcyBUZXh0UnVu
OwotICAgIGNsYXNzIFRleHRTdHlsZTsKLQotI2lmZGVmIFNWR19TVVBQT1JUCi0gICAgY2xhc3Mg
S1JlbmRlcmluZ0RldmljZUNvbnRleHQ7Ci0jZW5kaWYKLQotICAgIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dCA6IE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOwotICAgICAgICB+R3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgICAgCi0gICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdDsKLQotICAgICAgICBjb25zdCBGb250JiBmb250KCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0Rm9udChjb25zdCBGb250Jik7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBQZW4m
IHBlbigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFBlbihjb25zdCBQZW4mKTsKLSAgICAgICAg
dm9pZCBzZXRQZW4oUGVuOjpQZW5TdHlsZSk7Ci0gICAgICAgIHZvaWQgc2V0UGVuKFJHQkEzMik7
Ci0gICAgICAgIAotICAgICAgICBDb2xvciBmaWxsQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdm9p
ZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKLQotICAgICAgICB2b2lkIHNhdmUoKTsKLSAg
ICAgICAgdm9pZCByZXN0b3JlKCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGRyYXdSZWN0KGNv
bnN0IEludFJlY3QmKTsKLSAgICAgICAgdm9pZCBkcmF3TGluZShjb25zdCBJbnRQb2ludCYsIGNv
bnN0IEludFBvaW50Jik7Ci0gICAgICAgIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgSW50UmVjdCYp
OwotICAgICAgICB2b2lkIGRyYXdBcmMoY29uc3QgSW50UmVjdCYsIGZsb2F0IHRoaWNrbmVzcywg
aW50IHN0YXJ0QW5nbGUsIGludCBhbmdsZVNwYW4pOwotICAgICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKLQotICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEludFJlY3Qm
LCBjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IENvbG9yJik7Ci0gICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
OwotICAgICAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdp
ZHRoKTsKLQotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIGNvbnN0IEludFBvaW50Jiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFn
ZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJ
bWFnZShJbWFnZSosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAotICAgICAgICAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgc3Jj
UG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAotICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCAKLSAgICAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9IEltYWdlOjpTdHJldGNoVGls
ZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLAotICAgICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLQotICAgICAgICB2
b2lkIGNsaXAoY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xp
cChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0KTsKLSAgICAgICAgdm9pZCBhZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRS
ZWN0JiwgaW50IHRoaWNrbmVzcyk7Ci0KLSAgICAgICAgLy8gRnVuY3Rpb25zIHRvIHdvcmsgYXJv
dW5kIGJ1Z3MgaW4gZm9jdXMgcmluZyBjbGlwcGluZyBvbiBNYWMuCi0gICAgICAgIHZvaWQgc2V0
Rm9jdXNSaW5nQ2xpcChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xlYXJGb2N1c1Jp
bmdDbGlwKCk7Ci0KLSAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3Qg
SW50UG9pbnQmKTsKLSAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBUZXh0U3R5bGUmKTsKLSAgICAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0
Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmLCBpbnQgaCwgY29uc3QgVGV4
dFN0eWxlJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcik7Ci0KLSAgICAgICAgRmxvYXRS
ZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIAotICAg
ICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBJbnRQb2ludCYsIGludCB5T2Zmc2V0LCBp
bnQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOwotICAgICAgICB2b2lkIGRyYXdMaW5lRm9yTWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIoY29uc3QgSW50UG9pbnQmLCBpbnQgd2lkdGgsIGJvb2wgZ3JhbW1h
cik7Ci0gICAgICAgIAotICAgICAgICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRQYWludGluZ0Rpc2FibGVkKGJvb2wpOwotICAgICAgICAKLSAgICAgICAg
Ym9vbCB1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFVwZGF0
aW5nQ29udHJvbFRpbnRzKGJvb2wpOwotCi0gICAgICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCBvcGFjaXR5KTsKLSAgICAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigp
OwotCi0gICAgICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEludFNpemUmLCBpbnQgYmx1ciwgY29u
c3QgQ29sb3ImKTsKLSAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOwotCi0gICAgICAgIHZvaWQg
aW5pdEZvY3VzUmluZyhpbnQgd2lkdGgsIGludCBvZmZzZXQpOwotICAgICAgICB2b2lkIGFkZEZv
Y3VzUmluZ1JlY3QoY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2b2lkIGRyYXdGb2N1c1Jpbmco
Y29uc3QgQ29sb3ImKTsKLSAgICAgICAgdm9pZCBjbGVhckZvY3VzUmluZygpOwotICAgICAgICBJ
bnRSZWN0IGZvY3VzUmluZ0JvdW5kaW5nUmVjdCgpOwotCi0gICAgICAgIHZvaWQgc2V0TGluZVdp
ZHRoKGZsb2F0KTsKLSAgICAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwotICAgICAgICB2
b2lkIHNldExpbmVKb2luKExpbmVKb2luKTsKLSAgICAgICAgdm9pZCBzZXRNaXRlckxpbWl0KGZs
b2F0KTsKLQotICAgICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKLQotICAgICAgICB2b2lkIHNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICAgICAgdm9pZCBj
bGlwKGNvbnN0IFBhdGgmKTsKLQotICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYp
OwotICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAgICAgIHZv
aWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwotICAgICAgICBJbnRQb2ludCBvcmlnaW4o
KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29u
c3QgSW50UmVjdCYpOwotCi0gICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSAgICAgICAgS1JlbmRlcmluZ0RldmljZUNv
bnRleHQqIGNyZWF0ZVJlbmRlcmluZ0RldmljZUNvbnRleHQoKTsKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotICAgICAgICBHcmFwaGljc0NvbnRleHQoSERDKTsgLy8gRklYTUU6IFRvIGJl
IHJlbW92ZWQuCi0gICAgICAgIEhEQyBnZXRXaW5kb3dzQ29udGV4dChib29sIHN1cHBvcnRBbHBo
YUJsZW5kID0gZmFsc2UsIGNvbnN0IEludFJlY3QqID0gMCk7IC8vIFRoZSBwYXNzZWQgaW4gcmVj
dCBpcyB1c2VkIHRvIGNyZWF0ZSBhIGJpdG1hcCBmb3IgY29tcG9zaXRpbmcgaW5zaWRlIHRyYW5z
cGFyZW5jeSBsYXllcnMuCi0gICAgICAgIHZvaWQgcmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQywg
Ym9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IGZhbHNlLCBjb25zdCBJbnRSZWN0KiA9IDApOyAgICAv
LyBUaGUgcGFzc2VkIGluIEhEQyBzaG91bGQgYmUgdGhlIG9uZSBoYW5kZWQgYmFjayBieSBnZXRX
aW5kb3dzQ29udGV4dC4KLSNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzYXZl
UGxhdGZvcm1TdGF0ZSgpOwotICAgICAgICB2b2lkIHJlc3RvcmVQbGF0Zm9ybVN0YXRlKCk7Ci0K
LSAgICAgICAgaW50IGZvY3VzUmluZ1dpZHRoKCkgY29uc3Q7Ci0gICAgICAgIGludCBmb2N1c1Jp
bmdPZmZzZXQoKSBjb25zdDsKLSAgICAgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBmb2N1c1Jp
bmdSZWN0cygpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHRQcml2YXRl
KiBjcmVhdGVHcmFwaGljc0NvbnRleHRQcml2YXRlKCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3lHcmFwaGljc0NvbnRleHRQcml2YXRlKEdyYXBoaWNzQ29udGV4dFByaXZhdGUqKTsKLQot
ICAgICAgICBHcmFwaGljc0NvbnRleHRQcml2YXRlKiBtX2NvbW1vbjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGE7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0X2gKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vR3JhcGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L0dyYXBoaWNzVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NU
eXBlcy5oIgotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7Ci0gICAgImNsZWFyIiwKLSAgICAiY29w
eSIsCi0gICAgInNvdXJjZS1vdmVyIiwKLSAgICAic291cmNlLWluIiwKLSAgICAic291cmNlLW91
dCIsCi0gICAgInNvdXJjZS1hdG9wIiwKLSAgICAiZGVzdGluYXRpb24tb3ZlciIsCi0gICAgImRl
c3RpbmF0aW9uLWluIiwKLSAgICAiZGVzdGluYXRpb24tb3V0IiwKLSAgICAiZGVzdGluYXRpb24t
YXRvcCIsCi0gICAgInhvciIsCi0gICAgImRhcmtlciIsCi0gICAgImhpZ2hsaWdodCIsCi0gICAg
ImxpZ2h0ZXIiCi19OwotY29uc3QgaW50IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMgPSBzaXpl
b2YoY29tcG9zaXRlT3BlcmF0b3JOYW1lcykgLyBzaXplb2YoY29tcG9zaXRlT3BlcmF0b3JOYW1l
c1swXSk7Ci0KLWJvb2wgcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb25zdCBTdHJpbmcmIHMsIENv
bXBvc2l0ZU9wZXJhdG9yJiBvcCkKLXsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbXBv
c2l0ZU9wZXJhdG9yTmFtZXM7IGkrKykKLSAgICAgICAgaWYgKHMgPT0gY29tcG9zaXRlT3BlcmF0
b3JOYW1lc1tpXSkgewotICAgICAgICAgICAgb3AgPSBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVy
YXRvcj4oaSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVy
YXRvciBvcCkKLXsKLSAgICBBU1NFUlQob3AgPj0gMCk7Ci0gICAgQVNTRVJUKG9wIDwgbnVtQ29t
cG9zaXRlT3BlcmF0b3JOYW1lcyk7Ci0gICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNb
b3BdOwotfQotCi1ib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmIHMsIExpbmVDYXAmIGNh
cCkKLXsKLSAgICBpZiAocyA9PSAiYnV0dCIpIHsKLSAgICAgICAgY2FwID0gQnV0dENhcDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChzID09ICJyb3VuZCIpIHsKLSAgICAg
ICAgY2FwID0gUm91bmRDYXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAo
cyA9PSAic3F1YXJlIikgewotICAgICAgICBjYXAgPSBTcXVhcmVDYXA7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBsaW5lQ2FwTmFt
ZShMaW5lQ2FwIGNhcCkKLXsKLSAgICBBU1NFUlQoY2FwID49IDApOwotICAgIEFTU0VSVChjYXAg
PCAzKTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lc1szXSA9IHsgImJ1dHQiLCAicm91bmQi
LCAic3F1YXJlIiB9OwotICAgIHJldHVybiBuYW1lc1tjYXBdOwotfQotCi1ib29sIHBhcnNlTGlu
ZUpvaW4oY29uc3QgU3RyaW5nJiBzLCBMaW5lSm9pbiYgam9pbikKLXsKLSAgICBpZiAocyA9PSAi
bWl0ZXIiKSB7Ci0gICAgICAgIGpvaW4gPSBNaXRlckpvaW47Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAocyA9PSAicm91bmQiKSB7Ci0gICAgICAgIGpvaW4gPSBSb3VuZEpv
aW47Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocyA9PSAiYmV2ZWwiKSB7
Ci0gICAgICAgIGpvaW4gPSBCZXZlbEpvaW47Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBsaW5lSm9pbk5hbWUoTGluZUpvaW4gam9p
bikKLXsKLSAgICBBU1NFUlQoam9pbiA+PSAwKTsKLSAgICBBU1NFUlQoam9pbiA8IDMpOwotICAg
IGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVzWzNdID0geyAibWl0ZXIiLCAicm91bmQiLCAiYmV2ZWwi
IH07Ci0gICAgcmV0dXJuIG5hbWVzW2pvaW5dOwotfQotCi19CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dyYXBo
aWNzVHlwZXMuaAkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNz
VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEdyYXBoaWNzVHlwZXNfaAotI2RlZmluZSBHcmFwaGlj
c1R5cGVzX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgU3RyaW5nOwotCi0g
ICAgLy8gTm90ZTogVGhlc2UgY29uc3RhbnRzIGV4YWN0bHkgbWF0Y2ggdGhlIE5TQ29tcG9zaXRl
T3BlcmF0b3IgY29uc3RhbnRzIG9mCi0gICAgLy8gQXBwS2l0IG9uIE1hYyBPUyBYLiBJZiB0aGF0
J3MgZXZlciBjaGFuZ2VkLCB3ZSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUgTWFjCi0gICAgLy8gcGxh
dGZvcm0gY29kZSB0byBtYXAgb25lIHRvIHRoZSBvdGhlci4KLSAgICBlbnVtIENvbXBvc2l0ZU9w
ZXJhdG9yIHsKLSAgICAgICAgQ29tcG9zaXRlQ2xlYXIsCi0gICAgICAgIENvbXBvc2l0ZUNvcHks
Ci0gICAgICAgIENvbXBvc2l0ZVNvdXJjZU92ZXIsCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZUlu
LAotICAgICAgICBDb21wb3NpdGVTb3VyY2VPdXQsCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZUF0
b3AsCi0gICAgICAgIENvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlciwKLSAgICAgICAgQ29tcG9zaXRl
RGVzdGluYXRpb25JbiwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQsCi0gICAgICAg
IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcCwKLSAgICAgICAgQ29tcG9zaXRlWE9SLAotICAgICAg
ICBDb21wb3NpdGVQbHVzRGFya2VyLAotICAgICAgICBDb21wb3NpdGVIaWdobGlnaHQsCi0gICAg
ICAgIENvbXBvc2l0ZVBsdXNMaWdodGVyCi0gICAgfTsKLQotICAgIGVudW0gTGluZUNhcCB7IEJ1
dHRDYXAsIFJvdW5kQ2FwLCBTcXVhcmVDYXAgfTsKLQotICAgIGVudW0gTGluZUpvaW4geyBNaXRl
ckpvaW4sIFJvdW5kSm9pbiwgQmV2ZWxKb2luIH07Ci0KLSAgICBlbnVtIEhvcml6b250YWxBbGln
bm1lbnQgeyBBbGlnbkxlZnQsIEFsaWduUmlnaHQsIEFsaWduSENlbnRlciB9OwotCi0gICAgU3Ry
aW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRvcik7Ci0gICAgYm9vbCBw
YXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9yJik7
Ci0KLSAgICBTdHJpbmcgbGluZUNhcE5hbWUoTGluZUNhcCk7Ci0gICAgYm9vbCBwYXJzZUxpbmVD
YXAoY29uc3QgU3RyaW5nJiwgTGluZUNhcCYpOwotCi0gICAgU3RyaW5nIGxpbmVKb2luTmFtZShM
aW5lSm9pbik7Ci0gICAgYm9vbCBwYXJzZUxpbmVKb2luKGNvbnN0IFN0cmluZyYsIExpbmVKb2lu
Jik7Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCisjaW5jbHVkZSAiRm9udC5oIgorI2lu
Y2x1ZGUgIlRleHRTdHlsZS5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUoKSA6IGZpbGxDb2xvcihDb2xvcjo6YmxhY2spLCBwYWludGluZ0Rpc2FibGVk
KGZhbHNlKSB7IH0KKyAgICBGb250IGZvbnQ7CisgICAgUGVuIHBlbjsKKyAgICBDb2xvciBmaWxs
Q29sb3I7CisgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkOworfTsKKyAgICAgICAgCitjbGFzcyBH
cmFwaGljc0NvbnRleHRQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRQcml2
YXRlKCk7CisgICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGU7CisgICAgVmVjdG9y
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBzdGFjazsKKyAgICBWZWN0b3I8SW50UmVjdD4gbV9mb2N1
c1JpbmdSZWN0czsKKyAgICBpbnQgbV9mb2N1c1JpbmdXaWR0aDsKKyAgICBpbnQgbV9mb2N1c1Jp
bmdPZmZzZXQ7CisgICAgYm9vbCBtX3VwZGF0aW5nQ29udHJvbFRpbnRzOworfTsKKworR3JhcGhp
Y3NDb250ZXh0UHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpCisgICAgOiBtX2ZvY3Vz
UmluZ1dpZHRoKDApCisgICAgLCBtX2ZvY3VzUmluZ09mZnNldCgwKQorICAgICwgbV91cGRhdGlu
Z0NvbnRyb2xUaW50cyhmYWxzZSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSogR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGVHcmFwaGljc0NvbnRleHRQcml2YXRlKCkKK3sKKyAgICByZXR1
cm4gbmV3IEdyYXBoaWNzQ29udGV4dFByaXZhdGU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkZXN0cm95R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShHcmFwaGljc0NvbnRleHRQcml2YXRlKiBk
ZWxldGVNZSkKK3sKKyAgICBkZWxldGUgZGVsZXRlTWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzYXZlKCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NvbW1vbi0+c3RhY2suYXBwZW5kKG1fY29tbW9uLT5zdGF0ZSk7CisgICAg
CisgICAgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmUoKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX2NvbW1vbi0+c3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIExPR19FUlJP
UigiRVJST1Igdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKSBzdGFjayBpcyBlbXB0eSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY29tbW9uLT5zdGF0ZSA9IG1fY29tbW9u
LT5zdGFjay5sYXN0KCk7CisgICAgbV9jb21tb24tPnN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAK
KyAgICByZXN0b3JlUGxhdGZvcm1TdGF0ZSgpOworfQorCitjb25zdCBGb250JiBHcmFwaGljc0Nv
bnRleHQ6OmZvbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUuZm9udDsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZvbnQoY29uc3QgRm9udCYgYUZvbnQpCit7
CisgICAgbV9jb21tb24tPnN0YXRlLmZvbnQgPSBhRm9udDsKK30KKworY29uc3QgUGVuJiBHcmFw
aGljc0NvbnRleHQ6OnBlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5w
ZW47Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQZW4oY29uc3QgUGVuJiBwZW4pCit7
CisgICAgbV9jb21tb24tPnN0YXRlLnBlbiA9IHBlbjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBlbihQZW46OlBlblN0eWxlIHN0eWxlKQoreworICAgIG1fY29tbW9uLT5zdGF0ZS5w
ZW4uc2V0U3R5bGUoc3R5bGUpOworICAgIG1fY29tbW9uLT5zdGF0ZS5wZW4uc2V0Q29sb3IoQ29s
b3I6OmJsYWNrKTsKKyAgICBtX2NvbW1vbi0+c3RhdGUucGVuLnNldFdpZHRoKDApOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGVuKFJHQkEzMiByZ2IpCit7CisgICAgbV9jb21tb24t
PnN0YXRlLnBlbi5zZXRTdHlsZShQZW46OlNvbGlkTGluZSk7CisgICAgbV9jb21tb24tPnN0YXRl
LnBlbi5zZXRDb2xvcihyZ2IpOworICAgIG1fY29tbW9uLT5zdGF0ZS5wZW4uc2V0V2lkdGgoMCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKK30KKworQ29s
b3IgR3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nv
bW1vbi0+c3RhdGUuZmlsbENvbG9yOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRp
bmdDb250cm9sVGludHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1vbi0+bV91cGRhdGlu
Z0NvbnRyb2xUaW50czsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVwZGF0aW5nQ29u
dHJvbFRpbnRzKGJvb2wgYikKK3sKKyAgICBzZXRQYWludGluZ0Rpc2FibGVkKGIpOworICAgIG1f
Y29tbW9uLT5tX3VwZGF0aW5nQ29udHJvbFRpbnRzID0gYjsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBhaW50aW5nRGlzYWJsZWQoYm9vbCBmKQoreworICAgIG1fY29tbW9uLT5zdGF0
ZS5wYWludGluZ0Rpc2FibGVkID0gZjsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQ6OnBhaW50
aW5nRGlzYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUucGFpbnRp
bmdEaXNhYmxlZDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sgICAgICAg
IAorICAgIGRyYXdJbWFnZShpbWFnZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBjb25zdCBJ
bnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBkcmF3SW1hZ2UoaW1hZ2Us
IHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3ApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRlc3QsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIGRyYXdJbWFnZShp
bWFnZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQor
eworICAgIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmNSZWN0LCBvcCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBkcmF3VGV4dChydW4sIHBvaW50LCBUZXh0U3R5
bGUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgVGV4dFN0eWxlJiBzdHlsZSkKK3sK
KyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Zm9udCgpLmRyYXdUZXh0KHRoaXMsIHJ1biwgc3R5bGUsIHBvaW50KTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgSW50UG9pbnQmIHBvaW50LCBpbnQgaCwgY29uc3QgVGV4dFN0eWxlJiBzdHlsZSwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmaWxsUmVjdChmb250KCkuc2VsZWN0aW9uUmVjdEZvclRl
eHQocnVuLCBzdHlsZSwgcG9pbnQsIGgpLCBiYWNrZ3JvdW5kQ29sb3IpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6aW5pdEZvY3VzUmluZyhpbnQgd2lkdGgsIGludCBvZmZzZXQpCit7Cisg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNsZWFyRm9j
dXNSaW5nKCk7CisgICAgCisgICAgbV9jb21tb24tPm1fZm9jdXNSaW5nV2lkdGggPSB3aWR0aDsK
KyAgICBtX2NvbW1vbi0+bV9mb2N1c1JpbmdPZmZzZXQgPSBvZmZzZXQ7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGVhckZvY3VzUmluZygpCit7CisgICAgbV9jb21tb24tPm1fZm9jdXNS
aW5nUmVjdHMuY2xlYXIoKTsKK30KKworSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmlu
Z0JvdW5kaW5nUmVjdCgpCit7CisgICAgSW50UmVjdCByZXN1bHQgPSBJbnRSZWN0KDAsIDAsIDAs
IDApOworICAgIAorICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBmb2N1c1JpbmdS
ZWN0cygpOworICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCisgICAgICAgIHJlc3VsdC51bml0
ZShyZWN0c1tpXSk7CisgICAgICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphZGRGb2N1c1JpbmdSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCByZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY29tbW9uLT5tX2ZvY3VzUmluZ1JlY3RzLmFwcGVuZChyZWN0KTsKK30KKwor
aW50IEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nV2lkdGgoKSBjb25zdAoreworICAgIHJldHVy
biBtX2NvbW1vbi0+bV9mb2N1c1JpbmdXaWR0aDsKK30KKworaW50IEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb21tb24tPm1fZm9jdXNS
aW5nT2Zmc2V0OworfQorCitjb25zdCBWZWN0b3I8SW50UmVjdD4mIEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nUmVjdHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbW1vbi0+bV9mb2N1c1Jp
bmdSZWN0czsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZsb2F0IHRzdyA9IHNyYy53aWR0aCgpOworICAgIGZsb2F0IHRzaCA9IHNy
Yy5oZWlnaHQoKTsKKyAgICBmbG9hdCB0dyA9IGRlc3Qud2lkdGgoKTsKKyAgICBmbG9hdCB0aCA9
IGRlc3QuaGVpZ2h0KCk7CisgICAgICAgIAorICAgIGlmICh0c3cgPT0gLTEpCisgICAgICAgIHRz
dyA9IGltYWdlLT53aWR0aCgpOworICAgIGlmICh0c2ggPT0gLTEpCisgICAgICAgIHRzaCA9IGlt
YWdlLT5oZWlnaHQoKTsKKworICAgIGlmICh0dyA9PSAtMSkKKyAgICAgICAgdHcgPSBpbWFnZS0+
d2lkdGgoKTsKKyAgICBpZiAodGggPT0gLTEpCisgICAgICAgIHRoID0gaW1hZ2UtPmhlaWdodCgp
OworCisgICAgaW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxv
YXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3cs
IHRzaCkpLCBvcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJ
bWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2lu
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltYWdlLT5k
cmF3VGlsZWQodGhpcywgcmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBvcCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwg
SW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaFJ1bGUgPT0g
SW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkKKyAgICAg
ICAgLy8gSnVzdCBkbyBhIHNjYWxlLgorICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBk
ZXN0LCBzcmNSZWN0KTsKKworICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVj
dCwgaFJ1bGUsIHZSdWxlLCBvcCk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzQ29udGV4dF9o
CisjZGVmaW5lIEdyYXBoaWNzQ29udGV4dF9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQZW4uaCIK
KyNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiVUNoYXIuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBM
QVRGT1JNKENHKQordHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0OworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBlZGVmIHN0cnVjdCBfY2Fpcm8gUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShRVCkKK2NsYXNzIFFQYWludGVyOwor
dHlwZWRlZiBRUGFpbnRlciBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbHNlCit0eXBlZGVm
IHZvaWQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJ
TikKK3R5cGVkZWYgc3RydWN0IEhEQ19fKiBIREM7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY29uc3QgaW50IGNNaXNzcGVsbGluZ0xpbmVUaGlja25lc3MgPSAzOworICAg
IGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybldpZHRoID0gNDsKKyAgICBjb25zdCBp
bnQgY01pc3NwZWxsaW5nTGluZVBhdHRlcm5HYXBXaWR0aCA9IDE7CisKKyAgICBjbGFzcyBBZmZp
bmVUcmFuc2Zvcm07CisgICAgY2xhc3MgRm9udDsKKyAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQ
cml2YXRlOworICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKKyAgICBj
bGFzcyBLVVJMOworICAgIGNsYXNzIFBhdGg7CisgICAgY2xhc3MgVGV4dFJ1bjsKKyAgICBjbGFz
cyBUZXh0U3R5bGU7CisKKyNpZmRlZiBTVkdfU1VQUE9SVAorICAgIGNsYXNzIEtSZW5kZXJpbmdE
ZXZpY2VDb250ZXh0OworI2VuZGlmCisKKyAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQgOiBOb25j
b3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqKTsKKyAgICAgICAgfkdyYXBoaWNzQ29udGV4dCgpOworICAgICAgIAor
ICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7
CisKKyAgICAgICAgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEZv
bnQoY29uc3QgRm9udCYpOworICAgICAgICAKKyAgICAgICAgY29uc3QgUGVuJiBwZW4oKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRQZW4oY29uc3QgUGVuJik7CisgICAgICAgIHZvaWQgc2V0UGVu
KFBlbjo6UGVuU3R5bGUpOworICAgICAgICB2b2lkIHNldFBlbihSR0JBMzIpOworICAgICAgICAK
KyAgICAgICAgQ29sb3IgZmlsbENvbG9yKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0RmlsbENv
bG9yKGNvbnN0IENvbG9yJik7CisKKyAgICAgICAgdm9pZCBzYXZlKCk7CisgICAgICAgIHZvaWQg
cmVzdG9yZSgpOworICAgICAgICAKKyAgICAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBJbnRSZWN0
Jik7CisgICAgICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2lu
dCYpOworICAgICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAg
dm9pZCBkcmF3QXJjKGNvbnN0IEludFJlY3QmLCBmbG9hdCB0aGlja25lc3MsIGludCBzdGFydEFu
Z2xlLCBpbnQgYW5nbGVTcGFuKTsKKyAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihzaXpl
X3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBzaG91bGRBbnRpYWxpYXMgPSBm
YWxzZSk7CisKKyAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgQ29s
b3ImKTsKKyAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xv
ciYpOworICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAg
dm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CisKKyAg
ICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKElt
YWdlKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2Uq
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBG
bG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwKKyAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Uq
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwKKyAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgCisgICAgICAg
ICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKKyAgICAgICAgICAgIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisKKyAgICAgICAgdm9pZCBjbGlwKGNv
bnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBj
b25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCk7Cisg
ICAgICAgIHZvaWQgYWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYsIGludCB0
aGlja25lc3MpOworCisgICAgICAgIC8vIEZ1bmN0aW9ucyB0byB3b3JrIGFyb3VuZCBidWdzIGlu
IGZvY3VzIHJpbmcgY2xpcHBpbmcgb24gTWFjLgorICAgICAgICB2b2lkIHNldEZvY3VzUmluZ0Ns
aXAoY29uc3QgSW50UmVjdCYpOworICAgICAgICB2b2lkIGNsZWFyRm9jdXNSaW5nQ2xpcCgpOwor
CisgICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEludFBvaW50Jik7
CisgICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgVGV4dFN0eWxlJik7CisgICAgICAgIHZvaWQgZHJhd0hpZ2hsaWdodEZvclRleHQoY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEludFBvaW50JiwgaW50IGgsIGNvbnN0IFRleHRTdHlsZSYsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgICAgIEZsb2F0UmVjdCByb3VuZFRv
RGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICAKKyAgICAgICAgdm9pZCBk
cmF3TGluZUZvclRleHQoY29uc3QgSW50UG9pbnQmLCBpbnQgeU9mZnNldCwgaW50IHdpZHRoLCBi
b29sIHByaW50aW5nKTsKKyAgICAgICAgdm9pZCBkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGNvbnN0IEludFBvaW50JiwgaW50IHdpZHRoLCBib29sIGdyYW1tYXIpOworICAgICAg
IAorICAgICAgICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRQYWludGluZ0Rpc2FibGVkKGJvb2wpOworICAgICAgICAKKyAgICAgICAgYm9vbCB1cGRhdGlu
Z0NvbnRyb2xUaW50cygpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVwZGF0aW5nQ29udHJvbFRp
bnRzKGJvb2wpOworCisgICAgICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBv
cGFjaXR5KTsKKyAgICAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpOworCisgICAgICAg
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEludFNpemUmLCBpbnQgYmx1ciwgY29uc3QgQ29sb3ImKTsK
KyAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOworCisgICAgICAgIHZvaWQgaW5pdEZvY3VzUmlu
ZyhpbnQgd2lkdGgsIGludCBvZmZzZXQpOworICAgICAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3Qo
Y29uc3QgSW50UmVjdCYpOworICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgQ29sb3Im
KTsKKyAgICAgICAgdm9pZCBjbGVhckZvY3VzUmluZygpOworICAgICAgICBJbnRSZWN0IGZvY3Vz
UmluZ0JvdW5kaW5nUmVjdCgpOworCisgICAgICAgIHZvaWQgc2V0TGluZVdpZHRoKGZsb2F0KTsK
KyAgICAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOworICAgICAgICB2b2lkIHNldExpbmVK
b2luKExpbmVKb2luKTsKKyAgICAgICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KTsKKworICAg
ICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKKworICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICAgICAgdm9pZCBjbGlwKGNvbnN0IFBh
dGgmKTsKKworICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2
b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7CisgICAgICAgIHZvaWQgdHJhbnNsYXRl
KGZsb2F0IHgsIGZsb2F0IHkpOworICAgICAgICBJbnRQb2ludCBvcmlnaW4oKTsKKyAgICAgICAg
CisgICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29uc3QgSW50UmVjdCYp
OworCisgICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworCisj
aWZkZWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNyZWF0
ZVJlbmRlcmluZ0RldmljZUNvbnRleHQoKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQor
ICAgICAgICBHcmFwaGljc0NvbnRleHQoSERDKTsgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQuCisg
ICAgICAgIEhEQyBnZXRXaW5kb3dzQ29udGV4dChib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gZmFs
c2UsIGNvbnN0IEludFJlY3QqID0gMCk7IC8vIFRoZSBwYXNzZWQgaW4gcmVjdCBpcyB1c2VkIHRv
IGNyZWF0ZSBhIGJpdG1hcCBmb3IgY29tcG9zaXRpbmcgaW5zaWRlIHRyYW5zcGFyZW5jeSBsYXll
cnMuCisgICAgICAgIHZvaWQgcmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQywgYm9vbCBzdXBwb3J0
QWxwaGFCbGVuZCA9IGZhbHNlLCBjb25zdCBJbnRSZWN0KiA9IDApOyAgICAvLyBUaGUgcGFzc2Vk
IGluIEhEQyBzaG91bGQgYmUgdGhlIG9uZSBoYW5kZWQgYmFjayBieSBnZXRXaW5kb3dzQ29udGV4
dC4KKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzYXZlUGxhdGZvcm1TdGF0
ZSgpOworICAgICAgICB2b2lkIHJlc3RvcmVQbGF0Zm9ybVN0YXRlKCk7CisKKyAgICAgICAgaW50
IGZvY3VzUmluZ1dpZHRoKCkgY29uc3Q7CisgICAgICAgIGludCBmb2N1c1JpbmdPZmZzZXQoKSBj
b25zdDsKKyAgICAgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBmb2N1c1JpbmdSZWN0cygpIGNv
bnN0OworCisgICAgICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHRQcml2YXRlKiBjcmVhdGVHcmFw
aGljc0NvbnRleHRQcml2YXRlKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lHcmFwaGlj
c0NvbnRleHRQcml2YXRlKEdyYXBoaWNzQ29udGV4dFByaXZhdGUqKTsKKworICAgICAgICBHcmFw
aGljc0NvbnRleHRQcml2YXRlKiBtX2NvbW1vbjsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKiBtX2RhdGE7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7CisgICAgImNsZWFyIiwK
KyAgICAiY29weSIsCisgICAgInNvdXJjZS1vdmVyIiwKKyAgICAic291cmNlLWluIiwKKyAgICAi
c291cmNlLW91dCIsCisgICAgInNvdXJjZS1hdG9wIiwKKyAgICAiZGVzdGluYXRpb24tb3ZlciIs
CisgICAgImRlc3RpbmF0aW9uLWluIiwKKyAgICAiZGVzdGluYXRpb24tb3V0IiwKKyAgICAiZGVz
dGluYXRpb24tYXRvcCIsCisgICAgInhvciIsCisgICAgImRhcmtlciIsCisgICAgImhpZ2hsaWdo
dCIsCisgICAgImxpZ2h0ZXIiCit9OworY29uc3QgaW50IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXMgPSBzaXplb2YoY29tcG9zaXRlT3BlcmF0b3JOYW1lcykgLyBzaXplb2YoY29tcG9zaXRlT3Bl
cmF0b3JOYW1lc1swXSk7CisKK2Jvb2wgcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb25zdCBTdHJp
bmcmIHMsIENvbXBvc2l0ZU9wZXJhdG9yJiBvcCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXM7IGkrKykKKyAgICAgICAgaWYgKHMgPT0gY29tcG9z
aXRlT3BlcmF0b3JOYW1lc1tpXSkgeworICAgICAgICAgICAgb3AgPSBzdGF0aWNfY2FzdDxDb21w
b3NpdGVPcGVyYXRvcj4oaSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21w
b3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBBU1NFUlQob3AgPj0gMCk7CisgICAgQVNTRVJUKG9w
IDwgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7CisgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJh
dG9yTmFtZXNbb3BdOworfQorCitib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmIHMsIExp
bmVDYXAmIGNhcCkKK3sKKyAgICBpZiAocyA9PSAiYnV0dCIpIHsKKyAgICAgICAgY2FwID0gQnV0
dENhcDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChzID09ICJyb3VuZCIp
IHsKKyAgICAgICAgY2FwID0gUm91bmRDYXA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBpZiAocyA9PSAic3F1YXJlIikgeworICAgICAgICBjYXAgPSBTcXVhcmVDYXA7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBs
aW5lQ2FwTmFtZShMaW5lQ2FwIGNhcCkKK3sKKyAgICBBU1NFUlQoY2FwID49IDApOworICAgIEFT
U0VSVChjYXAgPCAzKTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lc1szXSA9IHsgImJ1dHQi
LCAicm91bmQiLCAic3F1YXJlIiB9OworICAgIHJldHVybiBuYW1lc1tjYXBdOworfQorCitib29s
IHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiBzLCBMaW5lSm9pbiYgam9pbikKK3sKKyAgICBp
ZiAocyA9PSAibWl0ZXIiKSB7CisgICAgICAgIGpvaW4gPSBNaXRlckpvaW47CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocyA9PSAicm91bmQiKSB7CisgICAgICAgIGpvaW4g
PSBSb3VuZEpvaW47CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocyA9PSAi
YmV2ZWwiKSB7CisgICAgICAgIGpvaW4gPSBCZXZlbEpvaW47CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBsaW5lSm9pbk5hbWUoTGlu
ZUpvaW4gam9pbikKK3sKKyAgICBBU1NFUlQoam9pbiA+PSAwKTsKKyAgICBBU1NFUlQoam9pbiA8
IDMpOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVzWzNdID0geyAibWl0ZXIiLCAicm91bmQi
LCAiYmV2ZWwiIH07CisgICAgcmV0dXJuIG5hbWVzW2pvaW5dOworfQorCit9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdy
YXBoaWNzVHlwZXNfaAorI2RlZmluZSBHcmFwaGljc1R5cGVzX2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgU3RyaW5nOworCisgICAgLy8gTm90ZTogVGhlc2UgY29uc3RhbnRz
IGV4YWN0bHkgbWF0Y2ggdGhlIE5TQ29tcG9zaXRlT3BlcmF0b3IgY29uc3RhbnRzIG9mCisgICAg
Ly8gQXBwS2l0IG9uIE1hYyBPUyBYLiBJZiB0aGF0J3MgZXZlciBjaGFuZ2VkLCB3ZSdsbCBuZWVk
IHRvIGNoYW5nZSB0aGUgTWFjCisgICAgLy8gcGxhdGZvcm0gY29kZSB0byBtYXAgb25lIHRvIHRo
ZSBvdGhlci4KKyAgICBlbnVtIENvbXBvc2l0ZU9wZXJhdG9yIHsKKyAgICAgICAgQ29tcG9zaXRl
Q2xlYXIsCisgICAgICAgIENvbXBvc2l0ZUNvcHksCisgICAgICAgIENvbXBvc2l0ZVNvdXJjZU92
ZXIsCisgICAgICAgIENvbXBvc2l0ZVNvdXJjZUluLAorICAgICAgICBDb21wb3NpdGVTb3VyY2VP
dXQsCisgICAgICAgIENvbXBvc2l0ZVNvdXJjZUF0b3AsCisgICAgICAgIENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3ZlciwKKyAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25JbiwKKyAgICAgICAgQ29t
cG9zaXRlRGVzdGluYXRpb25PdXQsCisgICAgICAgIENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcCwK
KyAgICAgICAgQ29tcG9zaXRlWE9SLAorICAgICAgICBDb21wb3NpdGVQbHVzRGFya2VyLAorICAg
ICAgICBDb21wb3NpdGVIaWdobGlnaHQsCisgICAgICAgIENvbXBvc2l0ZVBsdXNMaWdodGVyCisg
ICAgfTsKKworICAgIGVudW0gTGluZUNhcCB7IEJ1dHRDYXAsIFJvdW5kQ2FwLCBTcXVhcmVDYXAg
fTsKKworICAgIGVudW0gTGluZUpvaW4geyBNaXRlckpvaW4sIFJvdW5kSm9pbiwgQmV2ZWxKb2lu
IH07CisKKyAgICBlbnVtIEhvcml6b250YWxBbGlnbm1lbnQgeyBBbGlnbkxlZnQsIEFsaWduUmln
aHQsIEFsaWduSENlbnRlciB9OworCisgICAgU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShD
b21wb3NpdGVPcGVyYXRvcik7CisgICAgYm9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNvbnN0
IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9yJik7CisKKyAgICBTdHJpbmcgbGluZUNhcE5hbWUo
TGluZUNhcCk7CisgICAgYm9vbCBwYXJzZUxpbmVDYXAoY29uc3QgU3RyaW5nJiwgTGluZUNhcCYp
OworCisgICAgU3RyaW5nIGxpbmVKb2luTmFtZShMaW5lSm9pbik7CisgICAgYm9vbCBwYXJzZUxp
bmVKb2luKGNvbnN0IFN0cmluZyYsIExpbmVKb2luJik7CisKK30KKworI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2UuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCisKKyNpbmNsdWRlICJLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCisjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTVkdSZXNvdXJjZTo6U1ZHUmVzb3VyY2UoKQoreworfQorCitTVkdSZXNvdXJj
ZTo6flNWR1Jlc291cmNlKCkKK3sKK30KKwordm9pZCBTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZSgp
Cit7CisgICAgUmVuZGVyUGF0aExpc3Q6OkNvbnN0SXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVn
aW4oKTsKKyAgICBSZW5kZXJQYXRoTGlzdDo6Q29uc3RJdGVyYXRvciBlbmQgPSBtX2NsaWVudHMu
ZW5kKCk7CisKKyAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGNvbnN0X2Nhc3Q8
UmVuZGVyUGF0aCo+KCppdCktPnJlcGFpbnQoKTsKK30KKwordm9pZCBTVkdSZXNvdXJjZTo6YWRk
Q2xpZW50KGNvbnN0IFJlbmRlclBhdGgqIGl0ZW0pCit7CisgICAgaWYobV9jbGllbnRzLmZpbmQo
aXRlbSkgIT0gbV9jbGllbnRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVu
dHMuYXBwZW5kKGl0ZW0pOworfQorCitjb25zdCBSZW5kZXJQYXRoTGlzdCYgU1ZHUmVzb3VyY2U6
OmNsaWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudHM7Cit9CisKK1N0cmluZyBT
VkdSZXNvdXJjZTo6aWRJblJlZ2lzdHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWdpc3Ry
eUlkOworfQorCit2b2lkIFNWR1Jlc291cmNlOjpzZXRJZEluUmVnaXN0cnkoY29uc3QgU3RyaW5n
JiBpZCkKK3sKKyAgICBtX3JlZ2lzdHJ5SWQgPSBpZDsKK30KKworVGV4dFN0cmVhbSYgU1ZHUmVz
b3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRzOworfQorCitTVkdSZXNvdXJjZSogZ2V0UmVzb3VyY2VCeUlkKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoaWQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVu
dC0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBzdmdf
ZHluYW1pY19jYXN0KGVsZW1lbnQpOworCisgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVu
dC0+aXNTdHlsZWQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1l
bnQqPihzdmdFbGVtZW50KS0+Y2FudmFzUmVzb3VyY2UoKTsKKworICAgIHJldHVybiAwOworfQor
CitLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIGdldFBhaW50U2VydmVyQnlJZChEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgU1ZHUmVzb3VyY2UqIHJlc291
cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJlc291cmNlICYm
IHJlc291cmNlLT5pc1BhaW50U2VydmVyKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIqPihyZXNvdXJjZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdSZXNvdXJj
ZSYgcikKK3sKKyAgICByZXR1cm4gci5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dmcvU1ZHUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N2Zy9TVkdSZXNvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdmcvU1ZHUmVzb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgU1ZHUmVzb3VyY2VfSAorI2RlZmluZSBTVkdSZXNvdXJj
ZV9ICisKKyNpbmNsdWRlICJTaGFyZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgUmVuZGVyUGF0aDsKKyAgICBjbGFzcyBU
ZXh0U3RyZWFtOworICAgIGNsYXNzIEF0b21pY1N0cmluZzsKKyAgICBjbGFzcyBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXI7CisKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Y29uc3QgUmVu
ZGVyUGF0aCo+IFJlbmRlclBhdGhMaXN0OworCisgICAgZW51bSBTVkdSZXNvdXJjZVR5cGUgewor
ICAgICAgICAvLyBQYWludGluZyBtb2RlCisgICAgICAgIFJTX0NMSVBQRVIgPSAwLAorICAgICAg
ICBSU19NQVJLRVIgPSAxLAorICAgICAgICBSU19JTUFHRSA9IDIsCisgICAgICAgIFJTX0ZJTFRF
UiA9IDMsCisgICAgICAgIFJTX01BU0tFUiA9IDQKKyAgICB9OworCisgICAgLy8gVGhlIFNWR1Jl
c291cmNlIGZpbGUgcmVwcmVzZW50IHZhcmlvdXMgZ3JhcGhpY3MgcmVzb3VyY2VzOgorICAgIC8v
IC0gRmlsdGVyIHJlc291cmNlCisgICAgLy8gLSBDbGlwcGVyIHJlc291cmNlCisgICAgLy8gLSBN
YXNrZXIgcmVzb3VyY2UKKyAgICAvLyAtIE1hcmtlciByZXNvdXJjZQorICAgIC8vIC0gUGF0dGVy
biByZXNvdXJjZQorICAgIC8vIC0gTGluZWFyL1JhZGlhbCBncmFkaWVudCByZXNvdXJjZQorICAg
IC8vCisgICAgLy8gU1ZHIGNyZWF0ZXMvdXNlcyB0aGVzZSByZXNvdXJjZXMuCisKKyAgICBjbGFz
cyBTVkdSZXNvdXJjZSA6IHB1YmxpYyBTaGFyZWQ8U1ZHUmVzb3VyY2U+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFNWR1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgflNWR1Jlc291cmNlKCk7
CisgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICAgICAgdm9p
ZCBhZGRDbGllbnQoY29uc3QgUmVuZGVyUGF0aCopOworCisgICAgICAgIGNvbnN0IFJlbmRlclBh
dGhMaXN0JiBjbGllbnRzKCkgY29uc3Q7CisKKyAgICAgICAgU3RyaW5nIGlkSW5SZWdpc3RyeSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25zdCBTdHJpbmcmKTsKKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcgbV9y
ZWdpc3RyeUlkOworICAgICAgICBSZW5kZXJQYXRoTGlzdCBtX2NsaWVudHM7CisgICAgfTsKKwor
ICAgIC8vIEhlbHBlciBjbGFzcyBub3RpZnlpbmcgYWJvdXQgY2hhbmdlcyBpbiB0aGUgcmVzb3Vy
Y2VzCisgICAgY2xhc3MgU1ZHUmVzb3VyY2VMaXN0ZW5lcgorICAgIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgflNWR1Jlc291cmNlTGlzdGVuZXIoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlc291cmNlTm90aWZpY2F0aW9uKCkgY29uc3QgPSAwOworICAgIH07CisKKyAgICBT
VkdSZXNvdXJjZSogZ2V0UmVzb3VyY2VCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CisgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKiBnZXRQYWludFNlcnZlckJ5SWQoRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IFNWR1Jlc291cmNlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFNWR1Jlc291cmNlX0gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3ZnL1NWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlQ2xpcHBlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKKworI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNUcmVlRGVidWcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdSZXNvdXJjZUNsaXBwZXI6OlNWR1Jlc291cmNlQ2xp
cHBlcigpCisgICAgOiBTVkdSZXNvdXJjZSgpCit7Cit9CisKK1NWR1Jlc291cmNlQ2xpcHBlcjo6
flNWR1Jlc291cmNlQ2xpcHBlcigpCit7Cit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjpy
ZXNldENsaXBEYXRhKCkKK3sKKyAgICBtX2NsaXBEYXRhLmNsZWFyKCk7Cit9CisKK3ZvaWQgU1ZH
UmVzb3VyY2VDbGlwcGVyOjphZGRDbGlwRGF0YShjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBy
dWxlLCBib29sIGJib3hVbml0cykKK3sKKyAgICBtX2NsaXBEYXRhLmFkZFBhdGgocGF0aCwgcnVs
ZSwgYmJveFVuaXRzKTsKK30KKworY29uc3QgQ2xpcERhdGFMaXN0JiBTVkdSZXNvdXJjZUNsaXBw
ZXI6OmNsaXBEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGlwRGF0YTsKK30KKworVGV4
dFN0cmVhbSYgU1ZHUmVzb3VyY2VDbGlwcGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlwZT1DTElQUEVSXSI7CisgICAgdHMg
PDwgIiBbY2xpcCBkYXRhPSIgPDwgY2xpcERhdGEoKSA8PCAiXSI7CisgICAgcmV0dXJuIHRzOwor
fQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBXaW5kUnVsZSBydWxl
KQoreworICAgIHN3aXRjaCAocnVsZSkgeworICAgICAgICBjYXNlIFJVTEVfTk9OWkVSTzoKKyAg
ICAgICAgICAgIHRzIDw8ICJOT04tWkVSTyI7IGJyZWFrOworICAgICAgICBjYXNlIFJVTEVfRVZF
Tk9ERDoKKyAgICAgICAgICAgIHRzIDw8ICJFVkVOLU9ERCI7IGJyZWFrOworICAgIH0KKworICAg
IHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgQ2xpcERhdGEmIGQpCit7CisgICAgdHMgPDwgIlt3aW5kaW5nPSIgPDwgZC53aW5kUnVs
ZSA8PCAiXSI7CisKKyAgICBpZiAoZC5iYm94VW5pdHMpCisgICAgICAgIHRzIDw8ICIgW2JvdW5k
aW5nIGJveCBtb2RlPSIgPDwgZC5iYm94VW5pdHMgPDwgIl0iOworCisgICAgdHMgPDwgIiBbcGF0
aD0iIDw8IGQucGF0aC5kZWJ1Z1N0cmluZygpIDw8ICJdIjsKKyAgICByZXR1cm4gdHM7Cit9CisK
K1NWR1Jlc291cmNlQ2xpcHBlciogZ2V0Q2xpcHBlckJ5SWQoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIFNWR1Jlc291cmNlKiByZXNvdXJjZSA9IGdl
dFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOworICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJj
ZS0+aXNDbGlwcGVyKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdSZXNvdXJjZUNs
aXBwZXIqPihyZXNvdXJjZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2VD
bGlwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZH
UmVzb3VyY2VDbGlwcGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N2Zy9TVkdSZXNvdXJjZUNsaXBwZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdSZXNvdXJjZUNsaXBwZXJfSAorI2RlZmlu
ZSBTVkdSZXNvdXJjZUNsaXBwZXJfSAorCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJQYXRoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDbGlwRGF0
YSB7CisgICAgICAgIFBhdGggcGF0aDsKKyAgICAgICAgV2luZFJ1bGUgd2luZFJ1bGU7CisgICAg
ICAgIGJvb2wgYmJveFVuaXRzIDogMTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IFN0ZXAgYXdh
eSBmcm9tIERlcHJlY2F0ZWRWYWx1ZUxpc3QKKyAgICBjbGFzcyBDbGlwRGF0YUxpc3QgOiBwdWJs
aWMgRGVwcmVjYXRlZFZhbHVlTGlzdDxDbGlwRGF0YT4geworICAgIHB1YmxpYzoKKyAgICAgICAg
aW5saW5lIHZvaWQgYWRkUGF0aChjb25zdCBQYXRoJiBwYXRoRGF0YSwgV2luZFJ1bGUgd2luZFJ1
bGUsIGJvb2wgYmJveFVuaXRzKQorICAgICAgICB7CisgICAgICAgICAgICBDbGlwRGF0YSBjbGlw
RGF0YTsKKworICAgICAgICAgICAgY2xpcERhdGEucGF0aCA9IHBhdGhEYXRhOworICAgICAgICAg
ICAgY2xpcERhdGEud2luZFJ1bGUgPSB3aW5kUnVsZTsKKyAgICAgICAgICAgIGNsaXBEYXRhLmJi
b3hVbml0cyA9IGJib3hVbml0czsKKyAgICAgICAgCisgICAgICAgICAgICBhcHBlbmQoY2xpcERh
dGEpOworICAgICAgICB9CisgICAgfTsKKworICAgIGNsYXNzIFNWR1Jlc291cmNlQ2xpcHBlciA6
IHB1YmxpYyBTVkdSZXNvdXJjZSB7CisgICAgcHVibGljOgorICAgICAgICBTVkdSZXNvdXJjZUNs
aXBwZXIoKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHUmVzb3VyY2VDbGlwcGVyKCk7CisgICAgICAK
KyAgICAgICAgdm9pZCByZXNldENsaXBEYXRhKCk7CisgICAgICAgIHZvaWQgYWRkQ2xpcERhdGEo
Y29uc3QgUGF0aCYsIFdpbmRSdWxlLCBib29sIGJib3hVbml0cyk7CisKKyAgICAgICAgY29uc3Qg
Q2xpcERhdGFMaXN0JiBjbGlwRGF0YSgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICAg
ICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHNwZWNpZmljIHJlbmRlcmluZyBkZXZpY2Vz
CisgICAgICAgIHZvaWQgYXBwbHlDbGlwKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNv
bnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpcERhdGFMaXN0IG1fY2xpcERhdGE7Cisg
ICAgfTsKKworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdpbmRSdWxl
KTsKKyAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwRGF0
YSYpOworCisgICAgU1ZHUmVzb3VyY2VDbGlwcGVyKiBnZXRDbGlwcGVyQnlJZChEb2N1bWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBTVkdSZXNvdXJjZUNsaXBwZXJfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHUmVzb3VyY2VJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlSW1hZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlSW1hZ2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdSZXNvdXJjZUltYWdl
X0gKKyNkZWZpbmUgU1ZHUmVzb3VyY2VJbWFnZV9ICisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgc3Ry
dWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dMYXllciAqQ0dM
YXllclJlZjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBJbWFn
ZTsKKyAgICBjbGFzcyBJbnRTaXplOworCisgICAgY2xhc3MgU1ZHUmVzb3VyY2VJbWFnZSA6IHB1
YmxpYyBTVkdSZXNvdXJjZSB7CisgICAgcHVibGljOgorICAgICAgICBTVkdSZXNvdXJjZUltYWdl
KCk7CisKKyNpZiBQTEFURk9STShNQUMpCisJdmlydHVhbCB+U1ZHUmVzb3VyY2VJbWFnZSgpOwor
I2VuZGlmCisKKyAgICAgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHNwZWNpZmljIHJl
bmRlcmluZyBkZXZpY2VzIAorICAgICAgICB2b2lkIGluaXQoY29uc3QgSW1hZ2UmKTsKKyAgICAg
ICAgdm9pZCBpbml0KEludFNpemUpOworCisgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0Owor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBDR0xheWVyUmVmIGNnTGF5ZXIoKTsKKyAgICAg
ICAgdm9pZCBzZXRDR0xheWVyKENHTGF5ZXJSZWYgbGF5ZXIpOworICAgIAorICAgIHByaXZhdGU6
CisgICAgICAgIEludFNpemUgbV9zaXplOworICAgICAgICBDR0xheWVyUmVmIG1fY2dMYXllcjsK
KyNlbmRpZgorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNW
R1Jlc291cmNlSW1hZ2VfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZH
UmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3ZnL1NWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZU1hcmtlci5oIgorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1NWR1Jlc291cmNlTWFya2VyOjpTVkdSZXNvdXJjZU1hcmtlcigpCisgICAgOiBTVkdSZXNv
dXJjZSgpCisgICAgLCBtX3JlZlgoMC4wKQorICAgICwgbV9yZWZZKDAuMCkKKyAgICAsIG1fYW5n
bGUoLTEpIC8vIGp1c3QgbGlrZSB1c2luZyBzZXRBdXRvQW5nbGUoKQorICAgICwgbV9tYXJrZXIo
MCkKKyAgICAsIG1fdXNlU3Ryb2tlV2lkdGgodHJ1ZSkKK3sKK30KKworU1ZHUmVzb3VyY2VNYXJr
ZXI6On5TVkdSZXNvdXJjZU1hcmtlcigpCit7Cit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VNYXJrZXI6
OnNldE1hcmtlcihSZW5kZXJTVkdDb250YWluZXIqIG1hcmtlcikKK3sKKyAgICBtX21hcmtlciA9
IG1hcmtlcjsKK30KKwordm9pZCBTVkdSZXNvdXJjZU1hcmtlcjo6c2V0UmVmKGRvdWJsZSByZWZY
LCBkb3VibGUgcmVmWSkKK3sKKyAgICBtX3JlZlggPSByZWZYOworICAgIG1fcmVmWSA9IHJlZlk7
Cit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHN0
cm9rZVdpZHRoLCBkb3VibGUgYW5nbGUpCit7CisgICAgaWYgKCFtX21hcmtlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKHgsIHkpOworICAgIHRyYW5zZm9ybS5yb3RhdGUobV9hbmdsZSA+IC0xID8gbV9h
bmdsZSA6IGFuZ2xlKTsKKworICAgIC8vIHJlZlggYW5kIHJlZlkgYXJlIGdpdmVuIGluIGNvb3Jk
aW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCBlc3RhYmxpc2hlZCBieSB0aGUgbWFya2Vy
LCB5ZXQgdGhleSBhZmZlY3QKKyAgICAvLyB0aGUgdHJhbnNsYXRpb24gcGVyZm9ybWVkIG9uIHRo
ZSB2aWV3cG9ydCBpdHNlbGYuCisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3Jt
OworICAgIGlmIChtX3VzZVN0cm9rZVdpZHRoKQorICAgICAgICB2aWV3cG9ydFRyYW5zZm9ybS5z
Y2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOworICAgIGlmICghbV9tYXJrZXItPnZpZXdC
b3goKS5pc0VtcHR5KCkpCisgICAgICAgIHZpZXdwb3J0VHJhbnNmb3JtICo9IG1fbWFya2VyLT52
aWV3cG9ydFRyYW5zZm9ybSgpOworICAgIGRvdWJsZSByZWZYLCByZWZZOworICAgIHZpZXdwb3J0
VHJhbnNmb3JtLm1hcChtX3JlZlgsIG1fcmVmWSwgJnJlZlgsICZyZWZZKTsKKyAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKC1yZWZYLCAtcmVmWSk7CisKKyAgICBpZiAobV91c2VTdHJva2VXaWR0aCkK
KyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKHN0cm9rZVdpZHRoLCBzdHJva2VXaWR0aCk7CisKKyAg
ICAvLyBGSVhNRTogUGFpbnRJbmZvIHNob3VsZCBiZSBwYXNzZWQgaW50byB0aGlzIG1ldGhvZCBp
bnN0ZWFkIG9mIGJlaW5nIGNyZWF0ZWQgaGVyZQorICAgIC8vIEZJWE1FOiBib3VuZGluZyBib3gg
ZnJhY3Rpb25zIGFyZSBsb3N0CisgICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbyhjb250
ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpLCBQYWludFBoYXNlRm9yZWdyb3VuZCwgMCwgMCwg
MCk7CisKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5z
Zm9ybSk7CisgICAgbV9tYXJrZXItPnNldERyYXdzQ29udGVudHModHJ1ZSk7CisgICAgbV9tYXJr
ZXItPnBhaW50KGluZm8sIDAsIDApOworICAgIG1fbWFya2VyLT5zZXREcmF3c0NvbnRlbnRzKGZh
bHNlKTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7Cit9CisKK1RleHRTdHJlYW0mIFNWR1Jlc291
cmNlTWFya2VyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
eworICAgIHRzIDw8ICJbdHlwZT1NQVJLRVJdIgorICAgICAgICA8PCAiIFthbmdsZT0iOworCisg
ICAgaWYgKGFuZ2xlKCkgPT0gLTEpCisgICAgICAgIHRzIDw8ICJhdXRvIiA8PCAiXSI7CisgICAg
ZWxzZQorICAgICAgICB0cyA8PCBhbmdsZSgpIDw8ICJdIjsKKworICAgIHRzIDw8ICIgW3JlZiB4
PSIgPDwgcmVmWCgpIDw8ICIgeT0iIDw8IHJlZlkoKSA8PCAiXSI7CisgICAgcmV0dXJuIHRzOwor
fQorCitTVkdSZXNvdXJjZU1hcmtlciogZ2V0TWFya2VyQnlJZChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgU1ZHUmVzb3VyY2UqIHJlc291cmNlID0g
Z2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHJlc291cmNlICYmIHJlc291
cmNlLT5pc01hcmtlcigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VN
YXJrZXIqPihyZXNvdXJjZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHUmVzb3VyY2VN
YXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdS
ZXNvdXJjZU1hcmtlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHUmVzb3VyY2VNYXJrZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdSZXNvdXJjZU1hcmtlcl9ICisjZGVmaW5lIFNW
R1Jlc291cmNlTWFya2VyX0gKKworI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CisgICAgY2xhc3MgUmVuZGVyU1ZHQ29udGFpbmVyOworCisgICAgY2xhc3MgU1ZHUmVz
b3VyY2VNYXJrZXIgOiBwdWJsaWMgU1ZHUmVzb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAg
U1ZHUmVzb3VyY2VNYXJrZXIoKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHUmVzb3VyY2VNYXJrZXIo
KTsKKworICAgICAgICB2b2lkIHNldE1hcmtlcihSZW5kZXJTVkdDb250YWluZXIqKTsKKworICAg
ICAgICB2b2lkIHNldFJlZihkb3VibGUgcmVmWCwgZG91YmxlIHJlZlkpOworICAgICAgICBkb3Vi
bGUgcmVmWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmWDsgfQorICAgICAgICBkb3VibGUgcmVmWSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmWTsgfQorCisgICAgICAgIHZvaWQgc2V0QW5nbGUoZmxvYXQg
YW5nbGUpIHsgbV9hbmdsZSA9IGFuZ2xlOyB9CisgICAgICAgIHZvaWQgc2V0QXV0b0FuZ2xlKCkg
eyBtX2FuZ2xlID0gLTE7IH0KKyAgICAgICAgZmxvYXQgYW5nbGUoKSBjb25zdCB7IHJldHVybiBt
X2FuZ2xlOyB9CisKKyAgICAgICAgdm9pZCBzZXRVc2VTdHJva2VXaWR0aChib29sIHVzZVN0cm9r
ZVdpZHRoID0gdHJ1ZSkgeyBtX3VzZVN0cm9rZVdpZHRoID0gdXNlU3Ryb2tlV2lkdGg7IH0KKyAg
ICAgICAgYm9vbCB1c2VTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlU3Ryb2tlV2lk
dGg7IH0KKworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiwgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgc3Ryb2tlV2lkdGggPSAxLCBkb3VibGUg
YW5nbGUgPSAwKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXJrZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBkb3Vi
bGUgbV9yZWZYLCBtX3JlZlk7CisgICAgICAgIGZsb2F0IG1fYW5nbGU7CisgICAgICAgIFJlbmRl
clNWR0NvbnRhaW5lciogbV9tYXJrZXI7CisgICAgICAgIGJvb2wgbV91c2VTdHJva2VXaWR0aDsK
KyAgICB9OworCisgICAgU1ZHUmVzb3VyY2VNYXJrZXIqIGdldE1hcmtlckJ5SWQoRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gU1ZHUmVzb3VyY2VNYXJrZXJfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgiCisKKyNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NWR1Jlc291cmNlTWFza2VyOjpTVkdSZXNvdXJjZU1hc2tlcigpCisgICAgOiBTVkdS
ZXNvdXJjZSgpCit7Cit9CisKK1NWR1Jlc291cmNlTWFza2VyOjp+U1ZHUmVzb3VyY2VNYXNrZXIo
KQoreworfQorCit2b2lkIFNWR1Jlc291cmNlTWFza2VyOjpzZXRNYXNrKGNvbnN0IFBhc3NSZWZQ
dHI8U1ZHUmVzb3VyY2VJbWFnZT4mIG1hc2spCit7CisgICAgbV9tYXNrID0gbWFzazsKK30KKwor
U1ZHUmVzb3VyY2VJbWFnZSogU1ZHUmVzb3VyY2VNYXNrZXI6Om1hc2soKSBjb25zdAoreworICAg
IHJldHVybiBtX21hc2suZ2V0KCk7Cit9CisKK1RleHRTdHJlYW0mIFNWR1Jlc291cmNlTWFza2Vy
OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRz
IDw8ICJbdHlwZT1NQVNLRVJdIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK1NWR1Jlc291cmNlTWFz
a2VyKiBnZXRNYXNrZXJCeUlkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpZCkKK3sKKyAgICBTVkdSZXNvdXJjZSogcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUJ5SWQoZG9j
dW1lbnQsIGlkKTsKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzTWFza2VyKCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdSZXNvdXJjZU1hc2tlcio+KHJlc291cmNlKTsK
KworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNlTWFza2VyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZU1h
c2tlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFNWR1Jlc291cmNlTWFza2VyX0gKKyNkZWZpbmUgU1ZHUmVzb3VyY2VNYXNrZXJfSAor
CisjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIFNWR1Jlc291cmNlSW1hZ2U7CisKKyAgICBjbGFz
cyBTVkdSZXNvdXJjZU1hc2tlciA6IHB1YmxpYyBTVkdSZXNvdXJjZSB7CisgICAgcHVibGljOgor
ICAgICAgICBTVkdSZXNvdXJjZU1hc2tlcigpOworICAgICAgICB2aXJ0dWFsIH5TVkdSZXNvdXJj
ZU1hc2tlcigpOworCisgICAgICAgIHZvaWQgc2V0TWFzayhjb25zdCBQYXNzUmVmUHRyPFNWR1Jl
c291cmNlSW1hZ2U+Jik7CisgICAgICAgIFNWR1Jlc291cmNlSW1hZ2UqIG1hc2soKSBjb25zdDsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXNrZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJikgY29uc3Q7CisKKyAgICAgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHNw
ZWNpZmljIHJlbmRlcmluZyBkZXZpY2VzCisgICAgICAgIHZvaWQgYXBwbHlNYXNrKGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVm
UHRyPFNWR1Jlc291cmNlSW1hZ2U+IG1fbWFzazsKKyAgICB9OworCisgICAgU1ZHUmVzb3VyY2VN
YXNrZXIqIGdldE1hc2tlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHUmVzb3VyY2VNYXNrZXJfSApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVzb3VyY2VDbGlwcGVy
Q2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZH
UmVzb3VyY2VDbGlwcGVyQ2cubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9jZy9TVkdSZXNvdXJjZUNsaXBwZXJDZy5tbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAgICAgMjAwNSBBbGV4YW5kZXIg
S2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmZGVmIFNWR19TVVBQT1JUCisjaW1wb3J0ICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKKwor
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJLQ2FudmFzRmlsdGVyUXVhcnR6
LmgiCisjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCisjaW1wb3J0ICJRdWFydHpT
dXBwb3J0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTVkdSZXNvdXJjZUNsaXBw
ZXI6OmFwcGx5Q2xpcChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAoreworICAg
IEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0ID0gcmVuZGVyaW5nRGV2aWNlKCktPmN1
cnJlbnRDb250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHN0YXRpY19jYXN0
PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6Kj4oY29udGV4dCktPmNnQ29udGV4dCgpOwor
ICAgIGlmIChtX2NsaXBEYXRhLmNvdW50KCkgPCAxKQorICAgICAgICByZXR1cm47CisKKyAgICBC
T09MIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IE5POworICAgIFdpbmRSdWxlIGNsaXBSdWxlID0g
bV9jbGlwRGF0YVswXS53aW5kUnVsZTsKKworICAgIGNvbnRleHQtPmNsZWFyUGF0aCgpOworCisg
ICAgQ0dBZmZpbmVUcmFuc2Zvcm0gYmJveFRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFr
ZU1hcEJldHdlZW5SZWN0cyhDR1JlY3RNYWtlKDAsMCwxLDEpLCBDR1JlY3QoYm91bmRpbmdCb3gp
KTsKKworICAgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7IHgr
KykgeworICAgICAgICBDbGlwRGF0YSBkYXRhID0gbV9jbGlwRGF0YVt4XTsKKyAgICAgICAgaWYg
KGRhdGEud2luZFJ1bGUgIT0gY2xpcFJ1bGUpCisgICAgICAgICAgICBoZXRlcm9nZW5vdXNDbGlw
UnVsZXMgPSBZRVM7CisgICAgICAgIAorICAgICAgICBDR1BhdGhSZWYgY2xpcFBhdGggPSBkYXRh
LnBhdGgucGxhdGZvcm1QYXRoKCk7CisKKyAgICAgICAgaWYgKGRhdGEuYmJveFVuaXRzKSB7Cisg
ICAgICAgICAgICBDR011dGFibGVQYXRoUmVmIHRyYW5zZm9ybWVkUGF0aCA9IENHUGF0aENyZWF0
ZU11dGFibGUoKTsKKyAgICAgICAgICAgIENHUGF0aEFkZFBhdGgodHJhbnNmb3JtZWRQYXRoLCAm
YmJveFRyYW5zZm9ybSwgY2xpcFBhdGgpOworICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChj
Z0NvbnRleHQsIHRyYW5zZm9ybWVkUGF0aCk7CisgICAgICAgICAgICBDR1BhdGhSZWxlYXNlKHRy
YW5zZm9ybWVkUGF0aCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQ0dDb250ZXh0QWRk
UGF0aChjZ0NvbnRleHQsIGNsaXBQYXRoKTsKKyAgICB9CisKKyAgICBpZiAobV9jbGlwRGF0YS5j
b3VudCgpKSB7CisgICAgICAgIC8vIEZJWE1FIQorICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50
bHkgYWxsb3cgZm9yIGhldGVyb2dlbm91cyBjbGlwIHJ1bGVzLgorICAgICAgICAvLyB3ZSB3b3Vs
ZCBoYXZlIHRvIGRldGVjdCBzdWNoLCBkcmF3IHRvIGEgbWFzaywgYW5kIHRoZW4gY2xpcAorICAg
ICAgICAvLyB0byB0aGF0IG1hc2sgICAgICAgICAgICAgICAgCisgICAgICAgIGlmICghQ0dDb250
ZXh0SXNQYXRoRW1wdHkoY2dDb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKGNsaXBSdWxlID09
IFJVTEVfRVZFTk9ERCkKKyAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAoY2dDb250ZXh0
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNnQ29u
dGV4dCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2
Zy9jZy9TVkdSZXNvdXJjZUltYWdlQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVzb3VyY2VJbWFnZUNnLm1tCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVzb3VyY2VJbWFnZUNnLm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBTVkdfU1VQUE9SVAorI2ltcG9ydCAiU1ZHUmVzb3VyY2VJbWFn
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR1Jlc291cmNlSW1hZ2U6OlNWR1Jlc291
cmNlSW1hZ2UoKQorICAgIDogbV9jZ0xheWVyKDApCit7Cit9CisKK1NWR1Jlc291cmNlSW1hZ2U6
On5TVkdSZXNvdXJjZUltYWdlKCkKK3sKKyAgICBDR0xheWVyUmVsZWFzZShtX2NnTGF5ZXIpOwor
fQorCit2b2lkIFNWR1Jlc291cmNlSW1hZ2U6OmluaXQoY29uc3QgSW1hZ2UmKQoreworICAgIC8v
IG5vLW9wCit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VJbWFnZTo6aW5pdChJbnRTaXplIHNpemUpCit7
CisgICAgbV9zaXplID0gc2l6ZTsgICAgCit9CisKK0ludFNpemUgU1ZHUmVzb3VyY2VJbWFnZTo6
c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworQ0dMYXllclJlZiBTVkdS
ZXNvdXJjZUltYWdlOjpjZ0xheWVyKCkKK3sKKyAgICByZXR1cm4gbV9jZ0xheWVyOworfQorCit2
b2lkIFNWR1Jlc291cmNlSW1hZ2U6OnNldENHTGF5ZXIoQ0dMYXllclJlZiBsYXllcikKK3sKKyAg
ICBpZiAobV9jZ0xheWVyICE9IGxheWVyKSB7CisgICAgICAgIENHTGF5ZXJSZWxlYXNlKG1fY2dM
YXllcik7CisgICAgICAgIG1fY2dMYXllciA9IENHTGF5ZXJSZXRhaW4obGF5ZXIpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2NnL1NWR1Jlc291cmNlTWFza2VyQ2cu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVz
b3VyY2VNYXNrZXJDZy5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3ZnL2NnL1NWR1Jlc291cmNlTWFza2VyQ2cubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFsZXhhbmRlciBLZWxsZXR0
IDxseXBhbm92QGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWZk
ZWYgU1ZHX1NVUFBPUlQKKyNpbXBvcnQgIlNWR1Jlc291cmNlTWFza2VyLmgiCisjaW1wb3J0ICJT
VkdSZXNvdXJjZUltYWdlLmgiCisjaW1wb3J0ICJTVkdSZW5kZXJTdHlsZS5oIgorCisjaW1wb3J0
ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCisjaW1wb3J0ICJRdWFydHpTdXBwb3J0LmgiCisK
KyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIENJSW1hZ2UqIGFwcGx5THVtaW5hbmNlVG9BbHBoYUZpbHRlcihDSUltYWdlKiBp
bnB1dEltYWdlKQoreworICAgIENJRmlsdGVyKiBsdW1pbmFuY2VUb0FscGhhID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1hdHJpeCJdOworICAgIFtsdW1pbmFuY2VUb0FscGhh
IHNldERlZmF1bHRzXTsKKyAgICBDR0Zsb2F0IGFscGhhWzRdID0gezAuMjEyNSwgMC43MTU0LCAw
LjA3MjEsIDB9OworICAgIENHRmxvYXQgemVyb1s0XSA9IHswLCAwLCAwLCAwfTsKKyAgICBbbHVt
aW5hbmNlVG9BbHBoYSBzZXRWYWx1ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsg
IAorICAgIFtsdW1pbmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFs
dWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07CisgICAgW2x1bWluYW5j
ZVRvQWxwaGEgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0
XSBmb3JLZXk6QCJpbnB1dEdWZWN0b3IiXTsKKyAgICBbbHVtaW5hbmNlVG9BbHBoYSBzZXRWYWx1
ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0
QlZlY3RvciJdOworICAgIFtsdW1pbmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0
b3JXaXRoVmFsdWVzOmFscGhhIGNvdW50OjRdIGZvcktleTpAImlucHV0QVZlY3RvciJdOworICAg
IFtsdW1pbmFuY2VUb0FscGhhIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnpl
cm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07CisgICAgcmV0dXJuIFtsdW1p
bmFuY2VUb0FscGhhIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKK30KKworc3RhdGljIENJ
SW1hZ2UqIGFwcGx5RXhwYW5kQWxwaGF0b0dyYXlzY2FsZUZpbHRlcihDSUltYWdlKiBpbnB1dElt
YWdlKQoreworICAgIENJRmlsdGVyKiBhbHBoYVRvR3JheXNjYWxlID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiQ0lDb2xvck1hdHJpeCJdOworICAgIENHRmxvYXQgemVyb1s0XSA9IHswLCAw
LCAwLCAwfTsKKyAgICBbYWxwaGFUb0dyYXlzY2FsZSBzZXREZWZhdWx0c107CisgICAgW2FscGhh
VG9HcmF5c2NhbGUgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07Cisg
ICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6
emVybyBjb3VudDo0XSBmb3JLZXk6QCJpbnB1dFJWZWN0b3IiXTsKKyAgICBbYWxwaGFUb0dyYXlz
Y2FsZSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVlczp6ZXJvIGNvdW50OjRdIGZv
cktleTpAImlucHV0R1ZlY3RvciJdOworICAgIFthbHBoYVRvR3JheXNjYWxlIHNldFZhbHVlOltD
SVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRCVmVj
dG9yIl07CisgICAgW2FscGhhVG9HcmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3Rvcldp
dGhYOjAuMCBZOjAuMCBaOjAuMCBXOjEuMF0gZm9yS2V5OkAiaW5wdXRBVmVjdG9yIl07CisgICAg
W2FscGhhVG9HcmF5c2NhbGUgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjEu
MCBaOjEuMCBXOjAuMF0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07CisgICAgcmV0dXJuIFth
bHBoYVRvR3JheXNjYWxlIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKK30KKworc3RhdGlj
IENJSW1hZ2UqIHRyYW5zZm9ybUltYWdlSW50b0dyYXlzY2FsZU1hc2soQ0lJbWFnZSogaW5wdXRJ
bWFnZSkKK3sKKyAgICBDSUZpbHRlciogYmxhY2tCYWNrZ3JvdW5kID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiQ0lDb25zdGFudENvbG9yR2VuZXJhdG9yIl07CisgICAgW2JsYWNrQmFja2dy
b3VuZCBzZXRWYWx1ZTpbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MC4wIGdyZWVuOjAuMCBibHVlOjAu
MCBhbHBoYToxLjBdIGZvcktleTpAImlucHV0Q29sb3IiXTsKKworICAgIENJRmlsdGVyKiBsYXll
ck92ZXJCbGFjayA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3ZlckNvbXBv
c2l0aW5nIl07CisgICAgW2xheWVyT3ZlckJsYWNrIHNldFZhbHVlOltibGFja0JhY2tncm91bmQg
dmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIGZvcktleTpAImlucHV0QmFja2dyb3VuZEltYWdl
Il07ICAKKyAgICBbbGF5ZXJPdmVyQmxhY2sgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJp
bnB1dEltYWdlIl07ICAKKworICAgIENJSW1hZ2UqIGx1bWluYW5jZUFscGhhID0gYXBwbHlMdW1p
bmFuY2VUb0FscGhhRmlsdGVyKFtsYXllck92ZXJCbGFjayB2YWx1ZUZvcktleTpAIm91dHB1dElt
YWdlIl0pOworICAgIENJSW1hZ2UqIGx1bWluYW5jZUFzR3JheXNjYWxlID0gYXBwbHlFeHBhbmRB
bHBoYXRvR3JheXNjYWxlRmlsdGVyKGx1bWluYW5jZUFscGhhKTsKKyAgICBDSUltYWdlKiBhbHBo
YUFzR3JheXNjYWxlID0gYXBwbHlFeHBhbmRBbHBoYXRvR3JheXNjYWxlRmlsdGVyKGlucHV0SW1h
Z2UpOworCisgICAgQ0lGaWx0ZXIqIG11bHRpcGxpZWRHcmF5c2NhbGUgPSBbQ0lGaWx0ZXIgZmls
dGVyV2l0aE5hbWU6QCJDSU11bHRpcGx5Q29tcG9zaXRpbmciXTsKKyAgICBbbXVsdGlwbGllZEdy
YXlzY2FsZSBzZXRWYWx1ZTpsdW1pbmFuY2VBc0dyYXlzY2FsZSBmb3JLZXk6QCJpbnB1dEJhY2tn
cm91bmRJbWFnZSJdOyAgCisgICAgW211bHRpcGxpZWRHcmF5c2NhbGUgc2V0VmFsdWU6YWxwaGFB
c0dyYXlzY2FsZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07ICAKKyAgICByZXR1cm4gW211bHRpcGxp
ZWRHcmF5c2NhbGUgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOworfQorCit2b2lkIFNWR1Jl
c291cmNlTWFza2VyOjphcHBseU1hc2soY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fbWFzaykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENyZWF0ZSBn
cmF5c2NhbGUgYml0bWFwIGNvbnRleHQKKyAgICBpbnQgd2lkdGggPSBtX21hc2stPnNpemUoKS53
aWR0aCgpOworICAgIGludCBoZWlnaHQgPSBtX21hc2stPnNpemUoKS5oZWlnaHQoKTsKKyAgICB2
b2lkKiBpbWFnZUJ1ZmZlciA9IGZhc3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOworICAgIENHQ29s
b3JTcGFjZVJlZiBncmF5Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXko
KTsKKyAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxlQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgsIGdyYXlDb2xvclNwYWNl
LCBrQ0dJbWFnZUFscGhhTm9uZSk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShncmF5Q29sb3JT
cGFjZSk7CisgICAgQ0lDb250ZXh0KiBjaUdyYXlzY2FsZUNvbnRleHQgPSBbQ0lDb250ZXh0IGNv
bnRleHRXaXRoQ0dDb250ZXh0OmdyYXlzY2FsZUNvbnRleHQgb3B0aW9uczpuaWxdOworCisgICAg
U1ZHUmVzb3VyY2VJbWFnZSogbWFza0ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VJbWFn
ZSo+KG1fbWFzay5nZXQoKSk7CisgICAgQ0lJbWFnZSogZ3JheXNjYWxlTWFzayA9IHRyYW5zZm9y
bUltYWdlSW50b0dyYXlzY2FsZU1hc2soW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dMYXllcjptYXNrSW1h
Z2UtPmNnTGF5ZXIoKV0pOworICAgIFtjaUdyYXlzY2FsZUNvbnRleHQgZHJhd0ltYWdlOmdyYXlz
Y2FsZU1hc2sgYXRQb2ludDpDR1BvaW50WmVybyBmcm9tUmVjdDpDR1JlY3RNYWtlKDAsIDAsIHdp
ZHRoLCBoZWlnaHQpXTsKKworICAgIENHSW1hZ2VSZWYgZ3JheXNjYWxlSW1hZ2UgPSBDR0JpdG1h
cENvbnRleHRDcmVhdGVJbWFnZShncmF5c2NhbGVDb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eio+KHJlbmRlcmlu
Z0RldmljZSgpKS0+Y3VycmVudENHQ29udGV4dCgpOworICAgIENHQ29udGV4dENsaXBUb01hc2so
Y2dDb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBncmF5c2NhbGVJbWFn
ZSk7CisgICAgCisgICAgQ0dJbWFnZVJlbGVhc2UoZ3JheXNjYWxlSW1hZ2UpOworICAgIENHQ29u
dGV4dFJlbGVhc2UoZ3JheXNjYWxlQ29udGV4dCk7CisgICAgZmFzdEZyZWUoaW1hZ2VCdWZmZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTVkdfU1VQUE9SVApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VDbGlwcGVy
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL3F0L1NW
R1Jlc291cmNlQ2xpcHBlclF0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL3F0L1NWR1Jlc291cmNlQ2xpcHBlclF0LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMTggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAg
MjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUNs
aXBwZXIuaCIKKworI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2VRdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dCogY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4dCgpOworICAgIEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0UXQqIHF0Q29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJp
bmdEZXZpY2VDb250ZXh0UXQqPihjb250ZXh0KTsKKyAgICBpZiAobV9jbGlwRGF0YS5jb3VudCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dC0+Y2xlYXJQYXRoKCk7CisKKyAg
ICBRUGFpbnRlclBhdGggbmV3UGF0aDsKKworICAgIGJvb2wgaGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVz
ID0gZmFsc2U7CisgICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBtX2NsaXBEYXRhWzBdLndpbmRSdWxl
OworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7
IHgrKykgeworICAgICAgICBDbGlwRGF0YSBjbGlwRGF0YSA9IG1fY2xpcERhdGFbeF07CisgICAg
ICAgIGlmIChjbGlwRGF0YS53aW5kUnVsZSAhPSBjbGlwUnVsZSkKKyAgICAgICAgICAgIGhldGVy
b2dlbm91c0NsaXBSdWxlcyA9IHRydWU7CisgICAgICAgCisgICAgICAgIFFQYWludGVyUGF0aCBw
YXRoID0gKihjbGlwRGF0YS5wYXRoLnBsYXRmb3JtUGF0aCgpKTsKKyAgICAgICAgaWYgKHBhdGgu
aXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFuZXdQYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG5ld1BhdGguY2xvc2VTdWJwYXRoKCk7CisKKyAgICAg
ICAgLy8gUmVzcGVjdCBjbGlwcGluZyB1bml0cy4uLgorICAgICAgICBRTWF0cml4IHRyYW5zZm9y
bTsKKworICAgICAgICBpZiAoY2xpcERhdGEuYmJveFVuaXRzKSB7CisgICAgICAgICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKGJvdW5kaW5nQm94LngoKSwgYm91bmRpbmdCb3gueSgpKTsKKyAgICAg
ICAgICAgIHRyYW5zZm9ybS5zY2FsZShib3VuZGluZ0JveC53aWR0aCgpLCBib3VuZGluZ0JveC5o
ZWlnaHQoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IGhldGVyb2dl
bm91cyBjbGlwIHJ1bGVzIQorICAgICAgICAvL2NsaXBSdWxlID0gKGNsaXBEYXRhLndpbmRSdWxl
KCkgPT0gUlVMRV9FVkVOT0REID8gUXQ6Ok9kZEV2ZW5GaWxsIDogUXQ6OldpbmRpbmdGaWxsKTsK
KworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhdGguZWxlbWVudENvdW50KCk7ICsraSkg
eworICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjdXIgPSBwYXRoLmVs
ZW1lbnRBdChpKTsKKworICAgICAgICAgICAgc3dpdGNoIChjdXIudHlwZSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpNb3ZlVG9FbGVtZW50OgorICAgICAgICAgICAgICAg
ICAgICBuZXdQYXRoLm1vdmVUbyhRUG9pbnRGKGN1ci54LCBjdXIueSkgKiB0cmFuc2Zvcm0pOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFFQYWludGVy
UGF0aDo6TGluZVRvRWxlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgbmV3UGF0aC5saW5lVG8o
UVBvaW50RihjdXIueCwgY3VyLnkpICogdHJhbnNmb3JtKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1cnZlVG9FbGVtZW50
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQ
YXRoOjpFbGVtZW50ICZjMSA9IHBhdGguZWxlbWVudEF0KGkgKyAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjMiA9IHBhdGguZWxlbWVudEF0KGkg
KyAyKTsKKworICAgICAgICAgICAgICAgICAgICBRX0FTU0VSVChjMS50eXBlID09IFFQYWludGVy
UGF0aDo6Q3VydmVUb0RhdGFFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgUV9BU1NFUlQo
YzIudHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbmV3UGF0aC5jdWJpY1RvKFFQb2ludEYoY3VyLngsIGN1ci55KSAqIHRyYW5z
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFQb2ludEYoYzEueCwg
YzEueSkgKiB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR
UG9pbnRGKGMyLngsIGMyLnkpICogdHJhbnNmb3JtKTsKKworICAgICAgICAgICAgICAgICAgICBp
ICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6Q3VydmVUb0RhdGFFbGVtZW50OgorICAg
ICAgICAgICAgICAgICAgICBRX0FTU0VSVChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fY2xpcERh
dGEuY291bnQoKSkgeworICAgICAgICAvLyBGSVhNRSEKKyAgICAgICAgLy8gV2UgZG9uJ3QgY3Vy
cmVudGx5IGFsbG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KKyAgICAgICAgLy8gd2Ug
d291bGQgaGF2ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAK
KyAgICAgICAgLy8gdG8gdGhhdCBtYXNrCisgICAgICAgIC8vIGlmICghQ0dDb250ZXh0SXNQYXRo
RW1wdHkoY2dDb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKGNsaXBSdWxlID09IFJVTEVfRVZF
Tk9ERCkKKyAgICAgICAgICAgICAgICBuZXdQYXRoLnNldEZpbGxSdWxlKFF0OjpPZGRFdmVuRmls
bCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRGaWxsUnVs
ZShRdDo6V2luZGluZ0ZpbGwpOworICAgICAgICAvLyB9CisgICAgfQorCisgICAgcXRDb250ZXh0
LT5wYWludGVyKCkuc2V0Q2xpcFBhdGgobmV3UGF0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvcXQvU1ZHUmVzb3VyY2VJbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N2Zy9xdC9TVkdSZXNvdXJjZUltYWdlUXQuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VJbWFnZVF0
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlSW1hZ2UuaCIKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogRm9yIG5vdyB3ZSBvbmx5IHN0dWIgdGhpcyBt
ZXRob2RzIQorCit2b2lkIFNWR1Jlc291cmNlSW1hZ2U6OmluaXQoY29uc3QgSW1hZ2UmKQorewor
fQorCit2b2lkIFNWR1Jlc291cmNlSW1hZ2U6OmluaXQoSW50U2l6ZSBzaXplKQoreworfQorCitJ
bnRTaXplIFNWR1Jlc291cmNlSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRT
aXplKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VNYXNrZXJR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZH
UmVzb3VyY2VNYXNrZXJRdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9xdC9TVkdSZXNvdXJjZU1hc2tlclF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlN
YXNrKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisJLy8gRklYTUU6IGlt
cGxlbWVudCBtZSA6LSkKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisvLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAko
cmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJQYXRoLmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAxNzQ0OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIu
aCIKLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgotI2luY2x1ZGUgIktDYW52YXNNYXNrZXIu
aCIKLSNpbmNsdWRlICJLQ2FudmFzTWFya2VyLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlw
cGVyLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKKyNpbmNsdWRlICJTVkdSZXNv
dXJjZU1hcmtlci5oIgogI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgogI2luY2x1
ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCkBA
IC0xOTMsMTAgKzE5MywxMCBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyAmcGFp
bnRJCiAgICAgICAgIGNvbnRleHQgPSBkZXZpY2UtPmN1cnJlbnRDb250ZXh0KCk7CiAgICAgfQog
Ci0gICAgaWYgKEtDYW52YXNDbGlwcGVyKiBjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1l
bnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkpKQorICAg
IGlmIChTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChkb2N1bWVu
dCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkpCiAgICAg
ICAgIGNsaXBwZXItPmFwcGx5Q2xpcChyZWxhdGl2ZUJCb3godHJ1ZSkpOwogCi0gICAgaWYgKEtD
YW52YXNNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+
c3ZnU3R5bGUoKS0+bWFza0VsZW1lbnQoKS5zdWJzdHJpbmcoMSkpKQorICAgIGlmIChTVkdSZXNv
dXJjZU1hc2tlciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5z
dmdTdHlsZSgpLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCiAgICAgICAgIG1hc2tlci0+
YXBwbHlNYXNrKHJlbGF0aXZlQkJveCh0cnVlKSk7CiAKICAgICBjb250ZXh0LT5jbGVhclBhdGgo
KTsKQEAgLTMxNSwxOCArMzE1LDE4IEBAIHN0cnVjdCBNYXJrZXJEYXRhIHsKICAgICBGbG9hdFBv
aW50IGluc2xvcGVQb2ludHNbMl07CiAgICAgRmxvYXRQb2ludCBvdXRzbG9wZVBvaW50c1syXTsK
ICAgICBNYXJrZXJUeXBlIHR5cGU7Ci0gICAgS0NhbnZhc01hcmtlciAqbWFya2VyOworICAgIFNW
R1Jlc291cmNlTWFya2VyICptYXJrZXI7CiB9OwogCiBzdHJ1Y3QgRHJhd01hcmtlcnNEYXRhIHsK
LSAgICBEcmF3TWFya2Vyc0RhdGEoR3JhcGhpY3NDb250ZXh0KiwgS0NhbnZhc01hcmtlciogc3Rh
cnRNYXJrZXIsIEtDYW52YXNNYXJrZXIqIG1pZE1hcmtlciwgZG91YmxlIHN0cm9rZVdpZHRoKTsK
KyAgICBEcmF3TWFya2Vyc0RhdGEoR3JhcGhpY3NDb250ZXh0KiwgU1ZHUmVzb3VyY2VNYXJrZXIq
IHN0YXJ0TWFya2VyLCBTVkdSZXNvdXJjZU1hcmtlciogbWlkTWFya2VyLCBkb3VibGUgc3Ryb2tl
V2lkdGgpOwogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dDsKICAgICBpbnQgZWxlbWVudElu
ZGV4OwogICAgIE1hcmtlckRhdGEgcHJldmlvdXNNYXJrZXJEYXRhOwotICAgIEtDYW52YXNNYXJr
ZXIqIG1pZE1hcmtlcjsKKyAgICBTVkdSZXNvdXJjZU1hcmtlciogbWlkTWFya2VyOwogfTsKIAot
RHJhd01hcmtlcnNEYXRhOjpEcmF3TWFya2Vyc0RhdGEoR3JhcGhpY3NDb250ZXh0KiBjLCBLQ2Fu
dmFzTWFya2VyICpzdGFydCwgS0NhbnZhc01hcmtlciAqbWlkLCBkb3VibGUgc3Ryb2tlV2lkdGgp
CitEcmF3TWFya2Vyc0RhdGE6OkRyYXdNYXJrZXJzRGF0YShHcmFwaGljc0NvbnRleHQqIGMsIFNW
R1Jlc291cmNlTWFya2VyICpzdGFydCwgU1ZHUmVzb3VyY2VNYXJrZXIgKm1pZCwgZG91YmxlIHN0
cm9rZVdpZHRoKQogICAgIDogY29udGV4dChjKQogICAgICwgZWxlbWVudEluZGV4KDApCiAgICAg
LCBtaWRNYXJrZXIobWlkKQpAQCAtNDI4LDkgKzQyOCw5IEBAIHZvaWQgUmVuZGVyUGF0aDo6ZHJh
d01hcmtlcnNJZk5lZWRlZChHcmEKICAgICBEb2N1bWVudCAqZG9jID0gZG9jdW1lbnQoKTsKICAg
ICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwog
Ci0gICAgS0NhbnZhc01hcmtlciogc3RhcnRNYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3Zn
U3R5bGUtPnN0YXJ0TWFya2VyKCkuc3Vic3RyaW5nKDEpKTsKLSAgICBLQ2FudmFzTWFya2VyKiBt
aWRNYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPm1pZE1hcmtlcigpLnN1YnN0
cmluZygxKSk7Ci0gICAgS0NhbnZhc01hcmtlciogZW5kTWFya2VyID0gZ2V0TWFya2VyQnlJZChk
b2MsIHN2Z1N0eWxlLT5lbmRNYXJrZXIoKS5zdWJzdHJpbmcoMSkpOworICAgIFNWR1Jlc291cmNl
TWFya2VyKiBzdGFydE1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3RhcnRN
YXJrZXIoKS5zdWJzdHJpbmcoMSkpOworICAgIFNWR1Jlc291cmNlTWFya2VyKiBtaWRNYXJrZXIg
PSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPm1pZE1hcmtlcigpLnN1YnN0cmluZygxKSk7
CisgICAgU1ZHUmVzb3VyY2VNYXJrZXIqIGVuZE1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBz
dmdTdHlsZS0+ZW5kTWFya2VyKCkuc3Vic3RyaW5nKDEpKTsKICAgICAKICAgICBpZiAoIXN0YXJ0
TWFya2VyICYmICFtaWRNYXJrZXIgJiYgIWVuZE1hcmtlcikKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAxNzQ0
OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDggKzI0LDggQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlJl
bmRlclNWR0NvbnRhaW5lci5oIgogCi0jaW5jbHVkZSAiS0NhbnZhc0NsaXBwZXIuaCIKLSNpbmNs
dWRlICJLQ2FudmFzTWFza2VyLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNl
LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgpAQCAtMTc1LDEwICsxNzUsMTAgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KFBhaW50SW5mbwogICAgIAogICAgIEZsb2F0UmVjdCBzdHJva2VCQm94ID0gcmVsYXRpdmVC
Qm94KHRydWUpOwogICAgIAotICAgIGlmIChLQ2FudmFzQ2xpcHBlciAqY2xpcHBlciA9IGdldENs
aXBwZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmNsaXBQYXRoKCkuc3Vi
c3RyaW5nKDEpKSkKKyAgICBpZiAoU1ZHUmVzb3VyY2VDbGlwcGVyICpjbGlwcGVyID0gZ2V0Q2xp
cHBlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5zdWJz
dHJpbmcoMSkpKQogICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAoc3Ryb2tlQkJveCk7CiAKLSAg
ICBpZiAoS0NhbnZhc01hc2tlciAqbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBz
dHlsZSgpLT5zdmdTdHlsZSgpLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYg
KFNWR1Jlc291cmNlTWFza2VyICptYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN0
eWxlKCktPnN2Z1N0eWxlKCktPm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkKICAgICAgICAg
bWFza2VyLT5hcHBseU1hc2soc3Ryb2tlQkJveCk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gc3R5
bGUoKS0+b3BhY2l0eSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAko
cmV2aXNpb24gMTc0NDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgIkF0dHIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJLQ2FudmFzQ2xpcHBlci5oIgot
I2luY2x1ZGUgIktDYW52YXNNYXNrZXIuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBwZXIu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdE
ZXZpY2UuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmgiCkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpw
YWludChQYWludEluZm8mIHBhCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gRmxvYXRSZWN0
KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3Zn
U3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgICAgICAgICAgCi0gICAgaWYgKEtDYW52
YXNDbGlwcGVyKiBjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUt
PmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkKKyAgICBpZiAoU1ZHUmVzb3VyY2VDbGlwcGVyKiBj
bGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCku
c3Vic3RyaW5nKDEpKSkKICAgICAgICAgY2xpcHBlci0+YXBwbHlDbGlwKGJvdW5kaW5nQm94KTsK
IAotICAgIGlmIChLQ2FudmFzTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50
KCksIHN2Z1N0eWxlLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYgKFNWR1Jl
c291cmNlTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0eWxl
LT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCiAgICAgICAgIG1hc2tlci0+YXBwbHlNYXNr
KGJvdW5kaW5nQm94KTsKIAogICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRlciA9IGdldEZpbHRlckJ5
SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmZpbHRlcigpLnN1YnN0cmluZygxKSk7CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMTc0NDkpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksOCArMjksOCBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCi0jaW5jbHVkZSAi
S0NhbnZhc01hc2tlci5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBlci5oIgorI2luY2x1
ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxl
LmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVC
b3guaCIKQEAgLTgwLDEwICs4MCwxMCBAQCB2b2lkIHBhaW50U1ZHSW5saW5lRmxvdyhJbmxpbmVG
bG93Qm94KiBmCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94KHR4K2Zsb3ctPnhQb3MoKSAsIHR5
K2Zsb3ctPnlQb3MoKSwgZmxvdy0+d2lkdGgoKSwgZmxvdy0+aGVpZ2h0KCkpOwogICAgIAogICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5
bGUoKTsKLSAgICBpZiAoS0NhbnZhc0NsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChv
YmplY3QtPmRvY3VtZW50KCksIHN2Z1N0eWxlLT5jbGlwUGF0aCgpLnN1YnN0cmluZygxKSkpCisg
ICAgaWYgKFNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKG9iamVj
dC0+ZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkKICAgICAg
ICAgY2xpcHBlci0+YXBwbHlDbGlwKGJvdW5kaW5nQm94KTsKICAgICAKLSAgICBpZiAoS0NhbnZh
c01hc2tlciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChvYmplY3QtPmRvY3VtZW50KCksIHN2Z1N0
eWxlLT5tYXNrRWxlbWVudCgpLnN1YnN0cmluZygxKSkpCisgICAgaWYgKFNWR1Jlc291cmNlTWFz
a2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKG9iamVjdC0+ZG9jdW1lbnQoKSwgc3ZnU3R5bGUt
Pm1hc2tFbGVtZW50KCkuc3Vic3RyaW5nKDEpKSkKICAgICAgICAgbWFza2VyLT5hcHBseU1hc2so
Ym91bmRpbmdCb3gpOwogICAgIAogICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRlciA9IGdldEZpbHRl
ckJ5SWQob2JqZWN0LT5kb2N1bWVudCgpLCBzdmdTdHlsZS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEp
KTsKSW5kZXg6IFdlYktpdFF0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRRdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViS2l0UXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTAtMzEgIE5pa29sYXMgWmltbWVybWFubiAgPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgbmV3IHBsYXRmb3JtL2dyYXBoaWNzIGluY2x1ZGUgZGlyZWN0b3J5LiAK
KyAgICAgICAgCisgICAgICAgICogUXRMYXVuY2hlci9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJLaXRQYXJ0L0NNYWtlTGlzdHMudHh0OgorCiAyMDA2LTEwLTI2ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4u
CkluZGV4OiBXZWJLaXRRdC9RdExhdW5jaGVyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFF0L1F0TGF1bmNoZXIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3NDQ5KQorKysg
V2ViS2l0UXQvUXRMYXVuY2hlci9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2
ICs1LDggQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wYWdlCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNvcmUvbG9hZGVyCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNvcmUvcGxhdGZvcm0KKyAgIEJFRk9SRSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcworICAg
QkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N2ZwogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8u
Li9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9xdAogICAgQkVGT1JFICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS8uLi8uLi9XZWJDb3JlL2tzdmcyCkluZGV4OiBXZWJLaXRRdC9XZWJL
aXRQYXJ0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFF0L1dlYktpdFBhcnQv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3NDQ5KQorKysgV2ViS2l0UXQvV2ViS2l0UGFydC9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDggQEAgaW5jbHVkZV9kaXJl
Y3RvcmllcyAoCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dl
YkNvcmUvcGFnZQogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi9X
ZWJDb3JlL2xvYWRlcgogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8u
Li9XZWJDb3JlL3BsYXRmb3JtCisgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
Ly4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MKKyAgIEJFRk9SRSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcKICAgIEJF
Rk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uL1dlYkNv
cmUvcGxhdGZvcm0vcXQKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4v
Li4vV2ViQ29yZS9rc3ZnMgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0NDkpCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAwNi0xMC0zMSAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcGxhdGZvcm0vZ3JhcGhp
Y3MgaW5jbHVkZSBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5xdHByb2ovQ01ha2VMaXN0cy50eHQ6CisKIDIwMDYtMTAtMzAgIFN0ZXBoYW5pZSBM
ZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHByb2ovQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUucXRwcm9qL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzQ0OSkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnF0cHJvai9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDggQEAgaW5jbHVkZV9kaXJlY3RvcmllcygK
ICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vLi4vLi4vV2ViQ29yZS9w
YWdlCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uLy4uL1dlYkNv
cmUvbG9hZGVyCiAgICBCRUZPUkUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uLy4uLy4u
L1dlYkNvcmUvcGxhdGZvcm0KKyAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
Li4vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcworICAgQkVGT1JFICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS8uLi8uLi8uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zwog
ICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLi8uLi8uLi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsKICAgIEJFRk9SRSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4v
Li4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9xdAogICAgQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS8uLi8uLi8uLi9XZWJDb3JlL2tzdmcyCg==
</data>
<flag name="review"
          id="3904"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>