<?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>229024</bug_id>
          
          <creation_ts>2021-08-11 21:38:00 -0700</creation_ts>
          <short_desc>Support canvas text drawing with wide gamut colors</short_desc>
          <delta_ts>2021-08-23 14:36:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/30098</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783733</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-11 21:38:00 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783738</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-11 21:41:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/81828477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784708</commentid>
    <comment_count>2</comment_count>
      <attachid>435651</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-16 18:07:18 -0700</bug_when>
    <thetext>Created attachment 435651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784709</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-08-16 18:08:09 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784713</commentid>
    <comment_count>4</comment_count>
      <attachid>435653</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-16 18:26:17 -0700</bug_when>
    <thetext>Created attachment 435653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784931</commentid>
    <comment_count>5</comment_count>
      <attachid>435653</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-17 14:21:38 -0700</bug_when>
    <thetext>Comment on attachment 435653
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ColorCG.cpp:57
&gt; +Color::Color(CGColorRef color, OptionSet&lt;Flags&gt; flags)

This will change the behavior of all sRGB CGColorRef -&gt; Color creations to no longer clamp / use the inline form. The reason I had been holding off on doing this is I wanted to audit all the places where we use this constructor to see if it is what they really wanted.

What I would propose doing here is to make the Color(CGColorRef, OptionSet&lt;Flags&gt;) constructor (and any others that takes a CGColorRef) private, and replace the existing callers with an explicit roundAndClampToSRGBALossy() function. And then, I would add another function that does this color space aware conversion and update the one call site you are interested in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785065</commentid>
    <comment_count>6</comment_count>
      <attachid>435752</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-18 00:32:07 -0700</bug_when>
    <thetext>Created attachment 435752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785066</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-18 00:36:08 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; This will change the behavior of all sRGB CGColorRef -&gt; Color creations to
&gt; no longer clamp / use the inline form. The reason I had been holding off on
&gt; doing this is I wanted to audit all the places where we use this constructor
&gt; to see if it is what they really wanted.
&gt; 
&gt; What I would propose doing here is to make the Color(CGColorRef,
&gt; OptionSet&lt;Flags&gt;) constructor (and any others that takes a CGColorRef)
&gt; private, and replace the existing callers with an explicit
&gt; roundAndClampToSRGBALossy() function. And then, I would add another function
&gt; that does this color space aware conversion and update the one call site you
&gt; are interested in here.

That&apos;s reasonable.  I&apos;ve done that in this updated patch.  (I still should write a separate test for text stroking and text shadows.) =

Let me know if you think it&apos;s worth having this extra code to try converting from CGColors with color spaces that aren&apos;t representable by WebCore::ColorSpace.  I chose to convert to XYZ since (I think?) that should avoid any clamping of colors.  Or if we should just convert to sRGB and be done with it, since it&apos;s unlikely to be a situation that comes up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785073</commentid>
    <comment_count>8</comment_count>
      <attachid>435754</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-18 01:48:46 -0700</bug_when>
    <thetext>Created attachment 435754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785261</commentid>
    <comment_count>9</comment_count>
      <attachid>435811</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-18 16:07:00 -0700</bug_when>
    <thetext>Created attachment 435811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785262</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-18 16:07:23 -0700</bug_when>
    <thetext>Now with a couple of more tests and some iOS fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785502</commentid>
    <comment_count>11</comment_count>
      <attachid>435811</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-19 09:58:16 -0700</bug_when>
    <thetext>Comment on attachment 435811
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ColorCG.cpp:91
&gt; +Color Color::createAndConvertToSRGBA(CGColorRef color, OptionSet&lt;Flags&gt; flags)

The name seems weird with the current behavior. Perhaps something like createAndLosslesslyConvertToSupportedColorSpace().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785614</commentid>
    <comment_count>12</comment_count>
      <attachid>435915</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-19 16:40:25 -0700</bug_when>
    <thetext>Created attachment 435915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785630</commentid>
    <comment_count>13</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-19 17:02:24 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/30098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786266</commentid>
    <comment_count>14</comment_count>
      <attachid>436126</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-22 15:03:33 -0700</bug_when>
    <thetext>Created attachment 436126
Patch

With Windows build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786566</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-23 14:36:46 -0700</bug_when>
    <thetext>Committed r281470 (240849@main): &lt;https://commits.webkit.org/240849@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436126.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435651</attachid>
            <date>2021-08-16 18:07:18 -0700</date>
            <delta_ts>2021-08-16 18:31:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210817110717.patch</filename>
            <type>text/plain</type>
            <size>12985</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1MTBmZmVmNWU4ZmMx
NWNhOGI5MjE2NGVlNmRhYzA4Yzg4NjQ5Yi4uZTMwNzhkYmEzMjM4NTk4NzFkYWYyOTBlNDRlNTEw
ZmVlZDc1NDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEdQVSBjYW52YXMg
aXMgZW5hYmxlZCwgRHJhd0dseXBoc1JlY29yZGVyIHJlY29yZHMgdGhlIHRleHQgZmlsbAorICAg
ICAgICBjb2xvciBieSBnZXR0aW5nIGl0IGZyb20gdGhlIGNvbnRleHQgdXNpbmcgQ0dHU3RhdGVH
ZXRGaWxsQ29sb3IuICBUaGlzCisgICAgICAgIGlzIGRvbmUgc28gdGhhdCBjb2xvciBnbHlwaHMg
aGF2ZSBlYWNoIHBhcnQgcGFpbnRlZCBpbiB0aGUgcmlnaHQKKyAgICAgICAgY29sb3IuICBCdXQg
dGhlIGN1cnJlbnQgY29udmVyc2lvbiBmcm9tIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IKKyAg
ICAgICAgbG9zc2lseSBjb252ZXJ0cyB0byBzUkdCLiAgU28gd2UgbmVlZCB0byBnZXQgdGhlIGNv
bG9yIHNwYWNlIGFuZCBjb2xvcgorICAgICAgICBjb21wb25lbnRzIGZyb20gdGhlIENHQ29sb3Ig
YW5kIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UgaXMgbm90IHZlcnkgZXhwZW5zaXZlLCBidXQgaXQgd2lsbCBkbworICAgICAgICBtb3JlIHRo
YW4gYSBwb2ludGVyIGNvbXBhcmlzb24gaW4gY2FzZSB3ZSBwYXNzIGluIHR3byBDR0NvbG9yU3Bh
Y2VSZWZzCisgICAgICAgIHRoYXQgYXJlIGVxdWl2YWxlbnQgYnV0IG5vdCB0aGUgc2FtZSBwb2lu
dGVyIHZhbHVlLiAgU2luY2Ugb3VyIG5ldworICAgICAgICBjb2xvclNwYWNlRm9yQ0dDb2xvclNw
YWNlIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCB3aXRoIENHQ29sb3JzIHRoYXQKKyAgICAgICAgaGF2
ZSBiZWVuIHNldCBXZWJDb3JlIGR1cmluZyBjYW52YXMgZHJhd2luZywgd2Ugd2lsbCBnZXQgYmFj
ayB0aGUgc2FtZQorICAgICAgICBwb2ludGVycyB0aGF0IHdlIGhhdmUgY2FjaGVkIGluIHNSR0JD
b2xvclNwYWNlUmVmKCksCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgZXRjLiAg
SWYgY2FsbGluZyBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZQorICAgICAgICBvbiBhbGwg
b3VyIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMgdHVybnMgb3V0IHRvIGJlIHRvbyBleHBlbnNpdmUs
IHdlCisgICAgICAgIGNvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcG9pbnRlciBjb21wYXJpc29uIG9u
IGVhY2ggYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UuCisKKyAgICAgICAgVGhlIHdheSBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlIGlzIHdyaXR0
ZW4gd2UgY291bGQgZW5kIHVwCisgICAgICAgIGluc3RhbnRpYXRpbmcgYWxsIG9mIG91ciBzdXBw
b3J0ZWQgY29sb3Igc3BhY2VzLCBpZiBhbiBhdXRob3IgdXNlZCBhbgorICAgICAgICBYWVogY29s
b3Igd2hlbiBkcmF3aW5nIHRleHQgKHRoZSBsYXN0IGNvbG9yIHByb2ZpbGUgd2UgY2hlY2spLiAg
V2UKKyAgICAgICAgY291bGQgdHJ5IGhhcmRlciB0byBhdm9pZCBkb2luZyB0aGlzIGlmIGl0J3Mg
aW1wb3J0YW50LgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5kcmF3VGV4dC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
U3BhY2VGb3JDR0NvbG9yU3BhY2UpOiBOZXcgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBmcm9tCisg
ICAgICAgIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisKIDIwMjEtMDgtMTUgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQyBEaXNwbGF5XSBNYWtlIERpc3Bs
YXk6OkltYWdlQm94IGEgQ2FjaGVkSW1hZ2VDbGllbnQgdG8gZ2V0IGltYWdlIHJlcGFpbnQgd29y
a2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAppbmRleCBkYWJjN2U3NzM0MDA1NTA0NTFmMjcwNGUxMWM4MThmY2M2ZDJjODUyLi4zZTZmOWVh
NWFmY2Y2NmEzZjFkMTg2YTE5Njk1OTAxNWE2MmM3NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtNTQsMTUgKzU0LDE0IEBAIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2ViQ29yZTo6Q29sb3IsIFJl
dGFpblB0cjxDR0NvbG9yUmVmPj46CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koQ0dD
b2xvclJlZiBjb2xvcikKK0NvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8
RmxhZ3M+IGZsYWdzKQogewotICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8g
aGFuZGxlIGNvbG9yIHNwYWNlcy4KLQogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCBudW1Db21wb25lbnRz
ID0gQ0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7CiAgICAgY29uc3QgQ0dGbG9h
dCogY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JHZXRDb2xvclNwYWNl
KGNvbG9yKSk7CiAKICAgICBmbG9hdCByID0gMDsKICAgICBmbG9hdCBnID0gMDsKQEAgLTg0LDEy
ICs4MywxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRD
bGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNvbG9yKQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+
PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KHIsIGcsIGIsIGEgKSk7
Ci19Ci0KLUNvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKQotICAgIDogQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvciksIGZsYWdz
KQoteworICAgIGlmIChudW1Db21wb25lbnRzID09IDQgJiYgY29sb3JTcGFjZSkKKyAgICAgICAg
c2V0T3V0T2ZMaW5lQ29tcG9uZW50cyhPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyByLCBn
LCBiLCBhIH0pLCAqY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsK
KyAgICBlbHNlCisgICAgICAgIHNldENvbG9yKGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4o
bWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOwog
fQogCiBzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCmluZGV4
IDE0OTFlNDFiOTBjZTlkZGM2ZTc4ZWViY2EyMDhlZjM4ZjdiMmFjOGEuLjhjODFjMTBmNzgxNjUz
MDdlOWVkMjM1OGM2ZDA3MzViODQ0OTJkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcApAQCAtMTA4LDYgKzEwOCw0NiBA
QCBDR0NvbG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB9CiAjZW5kaWYKIAorc3RkOjpv
cHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlKQoreworICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFj
ZShjb2xvclNwYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OlNSR0I7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfQURPQkVfUkdCXzE5OThfQ09M
T1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3Bh
Y2UsIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNw
YWNlOjpBOThSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1Az
X0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xv
clNwYWNlLCBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29sb3JT
cGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTogbGFiQ29sb3JTcGFjZVJl
ZigpIG5vdCBpbXBsZW1lbnRlZC4KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JH
Ql9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29s
b3JTcGFjZSwgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpMaW5lYXJTUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUk9N
TVJHQl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpQcm9QaG90b1JHQjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0lU
VVJfMjAyMF9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSwgSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJu
IENvbG9yU3BhY2U6OlJlYzIwMjA7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19Y
WVpfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNv
bG9yU3BhY2UsIHh5ekNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNl
OjpYWVpfRDUwOworI2VuZGlmCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB9CiAK
ICNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yU3BhY2VDRy5oCmluZGV4IGRiNjA0MTBlNmQ0NzNhY2E3ZWE3YTE5NGNjNzhj
OTY0Yzk4YmEzNzMuLmY2NjRjM2JmOGU2MTM4NmEyYWM3NDIyNTE1Zjc2MmFhNjE2ZDM5MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCkBAIC02NSw2ICs2NSw4IEBAIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBST01N
UkdCQ29sb3JTcGFjZVJlZigpOwogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHh5ekNv
bG9yU3BhY2VSZWYoKTsKICNlbmRpZgogCitzdGQ6Om9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9y
U3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKKwogc3RhdGljIGlubGluZSBD
R0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggOWQ5MjdmMTI2NWEzNzNjYmZmNWQxNjZlMjljMWQxNjgyZmQ2NDc2MC4u
ODU0MDhlNmE2Y2MxZWY4MmM0NjgxZTg5ZjYwMDcwYjk2Y2ZjOGUwZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMTYgIENhbWVyb24gTWND
b3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVzZXJ2ZSBjb2xvciBzcGFj
ZSB3aGVuIGdldHRpbmcgY3VycmVudCBjb2xvciBpbiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTAyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE4Mjg0Nzc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgY2FsbGluZyBk
cmF3VGV4dCgpIHdpdGggYSBkaXNwbGF5LXAzIGNvbG9yIGZpbGxTdHlsZSBvbgorICAgICAgICBh
IGRpc3BsYXktcDMgY2FudmFzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZHJhd1Rl
eHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3
VGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvdG9vbHMveWFtbC9lbGVtZW50L2NvbG9yX3NwYWNlLnlhbWw6CisKIDIwMjEtMDgtMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQ3Jvc3MtT3JpZ2lu
LUVtYmVkZGVyLVBvbGljeSBzdXBwb3J0IGZvciBCbG9iIFVSTHMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZHJhd1RleHQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZGZlOTBmYmIxNGJiZjc5NGFkZDVhMzcwYjNmOWZi
ZGVhZTA0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQu
Y29sb3Iuc3BhY2UucDMuZHJhd1RleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorMmQu
Y29sb3Iuc3BhY2UucDMuZHJhd1RleHQKK1Rlc3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0
aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKK0FjdHVhbCBvdXRwdXQ6CisKK1BBU1MgVGVzdCBp
ZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZHJh
d1RleHQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5k
cmF3VGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNzM5Y2MxZGNjN2NlOTg5YjgwZTY5NDEzZTdkNTM3
ODVmYjlmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQu
Y29sb3Iuc3BhY2UucDMuZHJhd1RleHQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0gRE8gTk9UIEVESVQhIFRoaXMgdGVzdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
L2h0bWwvY2FudmFzL3Rvb2xzL2dlbnRlc3QucHkuIC0tPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAy
ZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MiPgorPHN0eWxl
PgorQGZvbnQtZmFjZSB7CisgIGZvbnQtZmFtaWx5OiBBaGVtOworICBzcmM6IHVybCgiL2ZvbnRz
L0FoZW0udHRmIik7Cit9Cis8L3N0eWxlPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKwor
PGgxPjJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0PC9oMT4KKzxwIGNsYXNzPSJkZXNjIj5UZXN0
IGlmIGRyYXdUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yPC9w
PgorCisKKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQWhlbTsgcG9zaXRpb246IGFic29sdXRl
OyB2aXNpYmlsaXR5OiBoaWRkZW4iPkE8L3NwYW4+Cis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwg
b3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhl
aWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+
PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rl
c3QoIlRlc3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMg
Y29sb3IiKTsKK19hZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVyVGVzdCgp
OworCitjb25zdCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBzUkdCUmVk
SW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOworY2FudmFz
LmhlaWdodCA9IDEwMDsKKworbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250
cy9BaGVtLnR0ZikiKTsKK2RvY3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9udCA9ICI0
MHB4IEFoZW0iOworCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7CisgICAgICAgIGN0
eC5maWxsVGV4dCgiQSIsIDAsIDUwKTsKKworICAgICAgICBjdHguZmlsbFN0eWxlID0gImJsYWNr
IjsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7
CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDUwLCA1MCk7CisKKyAgICAgICAgbGV0IHBpeGVs
cyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7
IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICBsZXQgcGl4ZWxBdCA9
IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeSAqIGNhbnZhcy53
aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVs
c1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOwor
ICAgICAgICB9OworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgyNSwgMjUp
LCBzUkdCUmVkSW5QMyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwg
MjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9KTsKKwor
Cit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9lbGVtZW50
L2NvbG9yX3NwYWNlLnlhbWwKaW5kZXggZTY0ZDZmYjk3NzdkYzBjNTlkNjZmNGJiYjYwOTE1OTU3
MjY2YzM2OS4uZmEwZmMzYjc3MjJlM2I0MmZjOTFjZjE4ZmE5N2UzM2VlN2RkMDg5MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwv
ZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sCkBAIC0xNzUsMyArMTc1LDQ2IEBACiAgICAgICAgIGFz
c2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIDIp
OwogICAgIH0pOwogICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsKKworLSBuYW1l
OiAyZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dAorICB0ZXN0aW5nOgorICAtIDJkLmNvbG9yLnNw
YWNlLnAzLmFuZC51aW50OAorICBmb250czoKKyAgLSBBaGVtCisgIGRlc2M6IFRlc3QgaWYgZHJh
d1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKKyAgYXR0cmli
dXRlczogfAorICAgIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9CisgIGNvZGU6IHwKKyAgICBk
ZWZlclRlc3QoKTsKKworICAgIGNvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsK
KyAgICBjb25zdCBzUkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworICAgIGNhbnZh
cy53aWR0aCA9IDEwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTAwOworCisgICAgbGV0IGYgPSBu
ZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0ZikiKTsKKyAgICBkb2N1bWVu
dC5mb250cy5hZGQoZik7CisgICAgZi5sb2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
dC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsK
KworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICIjZjAwIjsKKyAgICAgICAgICAgIGN0eC5m
aWxsVGV4dCgiQSIsIDAsIDUwKTsKKworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJibGFj
ayI7CisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMTAwJSAw
IDApIjsKKyAgICAgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDUwLCA1MCk7CisKKyAgICAgICAg
ICAgIGxldCBwaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2Fu
dmFzLmhlaWdodCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSkuZGF0YTsKKyAgICAgICAg
ICAgIGxldCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICAgICAgICAgIGxldCBv
ZmZzZXQgPSAoeSAqIGNhbnZhcy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gW3BpeGVsc1tvZmZzZXRdLCBwaXhlbHNbb2Zmc2V0ICsgMV0sIHBpeGVsc1tvZmZzZXQgKyAy
XSwgcGl4ZWxzW29mZnNldCArIDNdXTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgyNSwgMjUpLCBzUkdCUmVkSW5QMyk7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoNzUsIDI1KSwgZnVsbFJlZEluUDMpOwor
CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cg==
</data>
<flag name="commit-queue"
          id="458525"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435653</attachid>
            <date>2021-08-16 18:26:17 -0700</date>
            <delta_ts>2021-08-18 00:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210817112616.patch</filename>
            <type>text/plain</type>
            <size>13116</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1MTBmZmVmNWU4ZmMx
NWNhOGI5MjE2NGVlNmRhYzA4Yzg4NjQ5Yi4uZTMwNzhkYmEzMjM4NTk4NzFkYWYyOTBlNDRlNTEw
ZmVlZDc1NDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEdQVSBjYW52YXMg
aXMgZW5hYmxlZCwgRHJhd0dseXBoc1JlY29yZGVyIHJlY29yZHMgdGhlIHRleHQgZmlsbAorICAg
ICAgICBjb2xvciBieSBnZXR0aW5nIGl0IGZyb20gdGhlIGNvbnRleHQgdXNpbmcgQ0dHU3RhdGVH
ZXRGaWxsQ29sb3IuICBUaGlzCisgICAgICAgIGlzIGRvbmUgc28gdGhhdCBjb2xvciBnbHlwaHMg
aGF2ZSBlYWNoIHBhcnQgcGFpbnRlZCBpbiB0aGUgcmlnaHQKKyAgICAgICAgY29sb3IuICBCdXQg
dGhlIGN1cnJlbnQgY29udmVyc2lvbiBmcm9tIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IKKyAg
ICAgICAgbG9zc2lseSBjb252ZXJ0cyB0byBzUkdCLiAgU28gd2UgbmVlZCB0byBnZXQgdGhlIGNv
bG9yIHNwYWNlIGFuZCBjb2xvcgorICAgICAgICBjb21wb25lbnRzIGZyb20gdGhlIENHQ29sb3Ig
YW5kIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UgaXMgbm90IHZlcnkgZXhwZW5zaXZlLCBidXQgaXQgd2lsbCBkbworICAgICAgICBtb3JlIHRo
YW4gYSBwb2ludGVyIGNvbXBhcmlzb24gaW4gY2FzZSB3ZSBwYXNzIGluIHR3byBDR0NvbG9yU3Bh
Y2VSZWZzCisgICAgICAgIHRoYXQgYXJlIGVxdWl2YWxlbnQgYnV0IG5vdCB0aGUgc2FtZSBwb2lu
dGVyIHZhbHVlLiAgU2luY2Ugb3VyIG5ldworICAgICAgICBjb2xvclNwYWNlRm9yQ0dDb2xvclNw
YWNlIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCB3aXRoIENHQ29sb3JzIHRoYXQKKyAgICAgICAgaGF2
ZSBiZWVuIHNldCBXZWJDb3JlIGR1cmluZyBjYW52YXMgZHJhd2luZywgd2Ugd2lsbCBnZXQgYmFj
ayB0aGUgc2FtZQorICAgICAgICBwb2ludGVycyB0aGF0IHdlIGhhdmUgY2FjaGVkIGluIHNSR0JD
b2xvclNwYWNlUmVmKCksCisgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSwgZXRjLiAg
SWYgY2FsbGluZyBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZQorICAgICAgICBvbiBhbGwg
b3VyIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMgdHVybnMgb3V0IHRvIGJlIHRvbyBleHBlbnNpdmUs
IHdlCisgICAgICAgIGNvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcG9pbnRlciBjb21wYXJpc29uIG9u
IGVhY2ggYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UuCisKKyAgICAgICAgVGhlIHdheSBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlIGlzIHdyaXR0
ZW4gd2UgY291bGQgZW5kIHVwCisgICAgICAgIGluc3RhbnRpYXRpbmcgYWxsIG9mIG91ciBzdXBw
b3J0ZWQgY29sb3Igc3BhY2VzLCBpZiBhbiBhdXRob3IgdXNlZCBhbgorICAgICAgICBYWVogY29s
b3Igd2hlbiBkcmF3aW5nIHRleHQgKHRoZSBsYXN0IGNvbG9yIHByb2ZpbGUgd2UgY2hlY2spLiAg
V2UKKyAgICAgICAgY291bGQgdHJ5IGhhcmRlciB0byBhdm9pZCBkb2luZyB0aGlzIGlmIGl0J3Mg
aW1wb3J0YW50LgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5kcmF3VGV4dC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
U3BhY2VGb3JDR0NvbG9yU3BhY2UpOiBOZXcgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBmcm9tCisg
ICAgICAgIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisKIDIwMjEtMDgtMTUgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQyBEaXNwbGF5XSBNYWtlIERpc3Bs
YXk6OkltYWdlQm94IGEgQ2FjaGVkSW1hZ2VDbGllbnQgdG8gZ2V0IGltYWdlIHJlcGFpbnQgd29y
a2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAppbmRleCBkYWJjN2U3NzM0MDA1NTA0NTFmMjcwNGUxMWM4MThmY2M2ZDJjODUyLi4zZTZmOWVh
NWFmY2Y2NmEzZjFkMTg2YTE5Njk1OTAxNWE2MmM3NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtNTQsMTUgKzU0LDE0IEBAIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2ViQ29yZTo6Q29sb3IsIFJl
dGFpblB0cjxDR0NvbG9yUmVmPj46CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koQ0dD
b2xvclJlZiBjb2xvcikKK0NvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8
RmxhZ3M+IGZsYWdzKQogewotICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8g
aGFuZGxlIGNvbG9yIHNwYWNlcy4KLQogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCBudW1Db21wb25lbnRz
ID0gQ0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7CiAgICAgY29uc3QgQ0dGbG9h
dCogY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JHZXRDb2xvclNwYWNl
KGNvbG9yKSk7CiAKICAgICBmbG9hdCByID0gMDsKICAgICBmbG9hdCBnID0gMDsKQEAgLTg0LDEy
ICs4MywxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRD
bGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNvbG9yKQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+
PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KHIsIGcsIGIsIGEgKSk7
Ci19Ci0KLUNvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKQotICAgIDogQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvciksIGZsYWdz
KQoteworICAgIGlmIChudW1Db21wb25lbnRzID09IDQgJiYgY29sb3JTcGFjZSkKKyAgICAgICAg
c2V0T3V0T2ZMaW5lQ29tcG9uZW50cyhPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyByLCBn
LCBiLCBhIH0pLCAqY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsK
KyAgICBlbHNlCisgICAgICAgIHNldENvbG9yKGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4o
bWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOwog
fQogCiBzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCmluZGV4
IDE0OTFlNDFiOTBjZTlkZGM2ZTc4ZWViY2EyMDhlZjM4ZjdiMmFjOGEuLjhjODFjMTBmNzgxNjUz
MDdlOWVkMjM1OGM2ZDA3MzViODQ0OTJkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcApAQCAtMTA4LDYgKzEwOCw0NiBA
QCBDR0NvbG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB9CiAjZW5kaWYKIAorc3RkOjpv
cHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlKQoreworICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFj
ZShjb2xvclNwYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OlNSR0I7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfQURPQkVfUkdCXzE5OThfQ09M
T1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3Bh
Y2UsIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNw
YWNlOjpBOThSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1Az
X0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xv
clNwYWNlLCBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29sb3JT
cGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTogbGFiQ29sb3JTcGFjZVJl
ZigpIG5vdCBpbXBsZW1lbnRlZC4KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JH
Ql9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29s
b3JTcGFjZSwgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpMaW5lYXJTUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUk9N
TVJHQl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpQcm9QaG90b1JHQjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0lU
VVJfMjAyMF9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSwgSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJu
IENvbG9yU3BhY2U6OlJlYzIwMjA7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19Y
WVpfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNv
bG9yU3BhY2UsIHh5ekNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNl
OjpYWVpfRDUwOworI2VuZGlmCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB9CiAK
ICNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yU3BhY2VDRy5oCmluZGV4IGRiNjA0MTBlNmQ0NzNhY2E3ZWE3YTE5NGNjNzhj
OTY0Yzk4YmEzNzMuLjAzMjkzMGY1MmI4MTU2N2Y1ZDllYWE5NmRkNTEzNzdjY2Q1NzhlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
ICpDR0NvbG9yU3BhY2VSZWY7CiAKQEAgLTY1LDYgKzY2LDggQEAgV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpOwogI2VuZGlmCiAKK3N0ZDo6b3B0aW9uYWw8
Q29sb3JTcGFjZT4gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYpOwor
CiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFj
ZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5ZDkyN2YxMjY1YTM3M2NiZmY1ZDE2NmUy
OWMxZDE2ODJmZDY0NzYwLi44NTQwOGU2YTZjYzFlZjgyYzQ2ODFlODlmNjAwNzBiOTZjZmM4ZTBl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0w
OC0xNiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFBy
ZXNlcnZlIGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0
ZXN0IGZvciBjYWxsaW5nIGRyYXdUZXh0KCkgd2l0aCBhIGRpc3BsYXktcDMgY29sb3IgZmlsbFN0
eWxlIG9uCisgICAgICAgIGEgZGlzcGxheS1wMyBjYW52YXMuCisKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xv
ci5zcGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbDoK
KwogMjAyMS0wOC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IHN1cHBvcnQgZm9yIEJsb2IgVVJMcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRy
YXdUZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VkZmU5MGZiYjE0YmJm
Nzk0YWRkNWEzNzBiM2Y5ZmJkZWFlMDQ4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dAorVGVzdCBpZiBkcmF3VGV4
dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgorQWN0dWFsIG91dHB1
dDoKKworUEFTUyBUZXN0IGlmIGRyYXdUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNw
bGF5LXAzIGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5j
b2xvci5zcGFjZS5wMy5kcmF3VGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJk
LmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3MzljYzFkY2M3Y2U5
ODliODBlNjk0MTNlN2Q1Mzc4NWZiOWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC5odG1sCkBAIC0wLDAgKzEs
NjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0
bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0PC90aXRsZT4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRl
c3RzLmNzcyI+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgZm9udC1mYW1pbHk6IEFoZW07Cisg
IHNyYzogdXJsKCIvZm9udHMvQWhlbS50dGYiKTsKK30KKzwvc3R5bGU+Cis8Ym9keSBjbGFzcz0i
c2hvd19vdXRwdXQiPgorCis8aDE+MmQuY29sb3Iuc3BhY2UucDMuZHJhd1RleHQ8L2gxPgorPHAg
Y2xhc3M9ImRlc2MiPlRlc3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRp
c3BsYXktcDMgY29sb3I8L3A+CisKKworPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBaGVtOyBw
b3NpdGlvbjogYWJzb2x1dGU7IHZpc2liaWxpdHk6IGhpZGRlbiI+QTwvc3Bhbj4KKzxwIGNsYXNz
PSJvdXRwdXQiPkFjdHVhbCBvdXRwdXQ6PC9wPgorPGNhbnZhcyBpZD0iYyIgY2xhc3M9Im91dHB1
dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxs
YmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHVsIGlkPSJkIj48L3VsPgorPHNjcmlwdD4K
K3ZhciB0ID0gYXN5bmNfdGVzdCgiVGVzdCBpZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEg
c29saWQgZGlzcGxheS1wMyBjb2xvciIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgp
IHsKKworZGVmZXJUZXN0KCk7CisKK2NvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1
XTsKK2NvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCitjYW52YXMud2lk
dGggPSAxMDA7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworCitsZXQgZiA9IG5ldyBGb250RmFjZSgi
QWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIpOworZG9jdW1lbnQuZm9udHMuYWRkKGYpOwor
Zi5sb2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAg
ICAgIGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICIj
ZjAwIjsKKyAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgMCwgNTApOworCisgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAiYmxhY2siOworICAgICAgICBjdHguZmlsbFN0eWxlID0gImNvbG9yKGRpc3Bs
YXktcDMgMTAwJSAwIDApIjsKKyAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgNTAsIDUwKTsKKwor
ICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgs
IGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pLmRhdGE7CisgICAg
ICAgIGxldCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICAgICAgbGV0IG9mZnNl
dCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAgICAgICAgcmV0dXJuIFtwaXhl
bHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVs
c1tvZmZzZXQgKyAzXV07CisgICAgICAgIH07CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICB0LmRvbmUoKTsK
KyAgICB9KTsKK30pOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2Ny
aXB0PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90
b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbAppbmRleCBlNjRkNmZiOTc3N2RjMGM1
OWQ2NmY0YmJiNjA5MTU5NTcyNjZjMzY5Li5mYTBmYzNiNzcyMmUzYjQyZmM5MWNmMThmYTk3ZTMz
ZWU3ZGQwODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvdG9vbHMveWFtbC9lbGVtZW50L2NvbG9yX3NwYWNlLnlhbWwKQEAgLTE3NSwzICsxNzUs
NDYgQEAKICAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzLCBl
eHBlY3RlZFBpeGVscywgMik7CiAgICAgfSk7CiAgICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0
YVVSTCgpOworCistIG5hbWU6IDJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0CisgIHRlc3Rpbmc6
CisgIC0gMmQuY29sb3Iuc3BhY2UucDMuYW5kLnVpbnQ4CisgIGZvbnRzOgorICAtIEFoZW0KKyAg
ZGVzYzogVGVzdCBpZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1w
MyBjb2xvcgorICBhdHRyaWJ1dGVzOiB8CisgICAge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0K
KyAgY29kZTogfAorICAgIGRlZmVyVGVzdCgpOworCisgICAgY29uc3QgZnVsbFJlZEluUDMgPSBb
MjU1LCAwLCAwLCAyNTVdOworICAgIGNvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAy
NTVdOworCisgICAgY2FudmFzLndpZHRoID0gMTAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxMDA7
CisKKyAgICBsZXQgZiA9IG5ldyBGb250RmFjZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRm
KSIpOworICAgIGRvY3VtZW50LmZvbnRzLmFkZChmKTsKKyAgICBmLmxvYWQoKS50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjdHguZm9u
dCA9ICI0MHB4IEFoZW0iOworCisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gIiNmMDAiOwor
ICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgMCwgNTApOworCisgICAgICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gImJsYWNrIjsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiY29sb3Io
ZGlzcGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgNTAs
IDUwKTsKKworICAgICAgICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9
KS5kYXRhOworICAgICAgICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAg
ICAgICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAg
ICAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwg
cGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JS
ZWRJblAzKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUp
LCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9KTsKKyAg
ICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435752</attachid>
            <date>2021-08-18 00:32:07 -0700</date>
            <delta_ts>2021-08-18 01:48:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210818173206.patch</filename>
            <type>text/plain</type>
            <size>34688</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1MTBmZmVmNWU4ZmMx
NWNhOGI5MjE2NGVlNmRhYzA4Yzg4NjQ5Yi4uOTZiOTZmNGIxNjYwZTBiMjczZjRiZjI0YTUyNDFm
ZjEyZDE4YzMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEdQVSBjYW52YXMg
aXMgZW5hYmxlZCwgRHJhd0dseXBoc1JlY29yZGVyIHJlY29yZHMgdGhlIHRleHQgZmlsbAorICAg
ICAgICBjb2xvciBieSBnZXR0aW5nIGl0IGZyb20gdGhlIGNvbnRleHQgdXNpbmcgQ0dHU3RhdGVH
ZXRGaWxsQ29sb3IuICBUaGlzCisgICAgICAgIGlzIGRvbmUgc28gdGhhdCBjb2xvciBnbHlwaHMg
aGF2ZSBlYWNoIHBhcnQgcGFpbnRlZCBpbiB0aGUgcmlnaHQKKyAgICAgICAgY29sb3IuICBCdXQg
dGhlIGN1cnJlbnQgY29udmVyc2lvbiBmcm9tIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IKKyAg
ICAgICAgbG9zc2lseSBjb252ZXJ0cyB0byBzUkdCLiAgU28gd2UgbmVlZCB0byBnZXQgdGhlIGNv
bG9yIHNwYWNlIGFuZCBjb2xvcgorICAgICAgICBjb21wb25lbnRzIGZyb20gdGhlIENHQ29sb3Ig
YW5kIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIENvbG9yKENHQ29sb3JS
ZWYpIGNvbnN0cnVjdG9yIGlzIHJlcGxhY2VkIGJ5IHR3bworICAgICAgICBjb25zdHJ1Y3RvciBm
dW5jdGlvbnMsIGNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSBhbmQKKyAgICAgICAgcm91bmRB
bmRDbGFtcFRvU1JHQkFMb3NzeSwgdG8gdGhlIGNvbnZlcnNpb24gYmVoYXZpb3IgY2xlYXIgYXQg
Y2FsbAorICAgICAgICBzaXRlcy4gIGNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSB3aWxsIG1h
dGNoIHRoZSBDR0NvbG9yJ3MgY29sb3IKKyAgICAgICAgc3BhY2UgdG8gb25lIG9mIHRoZSBwcmVk
ZWZpbmVkIHNwYWNlcyB0aGF0IFdlYkNvcmU6OkNvbG9yIGNhbgorICAgICAgICByZXByZXNlbnQu
ICBJZiBpdCdzIHNvbWUgb3RoZXIgY29sb3Igc3BhY2UsIHdlIGNvbnZlcnQgdG8gWFlaIChvbgor
ICAgICAgICBwbGF0Zm9ybXMgd2hlcmUgdGhhdCdzIGF2YWlsYWJsZSksIHNpbmNlIHRoYXQgd2ls
bCByZXN1bHQgaW4gdGhlIGxlYXN0CisgICAgICAgIGxvc3MsIG9yIHRvIHNSR0IgKG9uIHBsYXRm
b3JtcyB3aGVyZSBYWVogaXMgbm90IGF2YWlsYWJsZSkuCisKKyAgICAgICAgQ0dDb2xvclNwYWNl
RXF1YWxUb0NvbG9yU3BhY2UsIHdoaWNoIGlzIHVzZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKKyAg
ICAgICAgQ0dDb2xvcidzIGNvbG9yIHNwYWNlLCBpcyBub3QgdmVyeSBleHBlbnNpdmUsIGJ1dCBp
dCB3aWxsIGRvIG1vcmUgdGhhbiBhCisgICAgICAgIHBvaW50ZXIgY29tcGFyaXNvbiBpbiBjYXNl
IHdlIHBhc3MgaW4gdHdvIENHQ29sb3JTcGFjZVJlZnMgdGhhdCBhcmUKKyAgICAgICAgZXF1aXZh
bGVudCBidXQgbm90IHRoZSBzYW1lIHBvaW50ZXIgdmFsdWUuICBTaW5jZSBvdXIgbmV3CisgICAg
ICAgIGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHdpdGgg
Q0dDb2xvcnMgdGhhdCBoYXZlCisgICAgICAgIGJlZW4gc2V0IFdlYkNvcmUgZHVyaW5nIGNhbnZh
cyBkcmF3aW5nLCB3ZSB3aWxsIGdldCBiYWNrIHRoZSBzYW1lCisgICAgICAgIHBvaW50ZXJzIHRo
YXQgd2UgaGF2ZSBjYWNoZWQgaW4gc1JHQkNvbG9yU3BhY2VSZWYoKSwKKyAgICAgICAgZGlzcGxh
eVAzQ29sb3JTcGFjZVJlZigpLCBldGMuICBJZiBjYWxsaW5nIENHQ29sb3JTcGFjZUVxdWFsVG9D
b2xvclNwYWNlCisgICAgICAgIG9uIGFsbCBvdXIgc3VwcG9ydGVkIGNvbG9yIHNwYWNlcyB0dXJu
cyBvdXQgdG8gYmUgdG9vIGV4cGVuc2l2ZSwgd2UKKyAgICAgICAgY291bGQgc3RhcnQgYnkgZG9p
bmcgYSBwb2ludGVyIGNvbXBhcmlzb24gb24gZWFjaCBiZWZvcmUgY2FsbGluZworICAgICAgICBD
R0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZS4KKworICAgICAgICBUaGUgd2F5IGNvbG9yU3Bh
Y2VGb3JDR0NvbG9yU3BhY2UgaXMgd3JpdHRlbiB3ZSBjb3VsZCBlbmQgdXAKKyAgICAgICAgaW5z
dGFudGlhdGluZyBhbGwgb2Ygb3VyIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMsIGlmIGFuIGF1dGhv
ciB1c2VkIGFuCisgICAgICAgIFhZWiBjb2xvciB3aGVuIGRyYXdpbmcgdGV4dCAodGhlIGxhc3Qg
Y29sb3IgcHJvZmlsZSB3ZSBjaGVjaykuICBXZQorICAgICAgICBjb3VsZCB0cnkgaGFyZGVyIHRv
IGF2b2lkIGRvaW5nIHRoaXMgaWYgaXQncyBpbXBvcnRhbnQuCisKKyAgICAgICAgVGVzdDogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWwKKworICAgICAgICAqIHBh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c0JhY2tncm91bmRDU1MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFu
ZFByZXNlcnZlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5k
Q29udmVydFRvU1JHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q29jb2E6OmJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVk
QmFja2luZ0xheWVyIHNldEJvcmRlckNvbG9yOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kQ29udmVydFRvU1JH
QkEpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSk6IE5ldyBmdW5jdGlv
biB0aGF0IGNvbnZlcnRzIGZyb20KKyAgICAgICAgQ0dDb2xvciB0byBXZWJDb3JlOjpDb2xvci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisKIDIwMjEtMDgtMTUg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQyBE
aXNwbGF5XSBNYWtlIERpc3BsYXk6OkltYWdlQm94IGEgQ2FjaGVkSW1hZ2VDbGllbnQgdG8gZ2V0
IGltYWdlIHJlcGFpbnQgd29ya2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNDVhOGFhODg3MDYzZmM0ODIwOWFm
YmIzZmZhN2UwZmE4M2UwZTYxLi4yZWUwMWU0NDY3NjJkMTZmY2NkNmI2NWFiYzA2ZjAzOTA3N2Qz
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA4LTE4ICBDYW1lcm9uIE1jQ29y
bWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29sb3Igc3BhY2Ug
d2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZXhpc3RpbmcgQ0dDb2xvciAt
PiBXZWJDb3JlOjpDb2xvciBjb252ZXJzaW9ucyB0byBiZSBleHBsaWNpdAorICAgICAgICBhYm91
dCBsb3NzaWx5IGNvbnZlcnRpbmcgdG8gc1JHQi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0
V2l0aENvZGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorCiAyMDIx
LTA4LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVn
IDIyOTExMjogVGhyZWFkU2FuaXRpemVyOiBkYXRhIHJhY2VzIG9mIFdURjo6U3RyaW5nIGluIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBkMTBlMzM1MWYzM2U0
MDdiZGEyNTNjN2VlZDNhMTQ2OGEyYmMyZDRlLi4wYmExYzhiMTIxMjczZmQzOWQ3NjkxZGM4MmMy
NDMyNjMzYmI2MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIFN0cmluZyBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdAogICAg
IE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAgICBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29s
b3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKIAotICAgIENv
bG9yIHdpbmRvd0NvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBDb2xvciB3aW5kb3dDb2xvcihyb3Vu
ZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yLmdldCgpKSk7CiAgICAgaWYgKCF3aW5kb3dDb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIHdpbmRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CiAKQEAgLTM0Miw3ICszNDIsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiAgICAgTUFDYXB0aW9uQXBwZWFy
YW5jZUJlaGF2aW9yIGJlaGF2aW9yOwogCiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9y
ID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcihrTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwotICAgIENvbG9yIGJhY2tncm91
bmRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IuZ2V0KCkpKTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3I7CiAKQEAgLTM1Niw3ICszNTYsOCBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiBDb2xvciBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9vbCYgaW1wb3J0YW50KSBj
b25zdAogewogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKLSAgICBD
b2xvciB0ZXh0Q29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3Vu
ZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSkuZ2V0KCk7
CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBl
YXJhbmNlQ29weUZvcmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIs
ICZiZWhhdmlvcikpLmdldCgpOworICAgIENvbG9yIHRleHRDb2xvcihyb3VuZEFuZENsYW1wVG9T
UkdCQUxvc3N5KGNvbG9yLmdldCgpKSk7CiAgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKSB7
CiAgICAgICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBv
bmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stY29udGFpbmVyLgogICAgICAgICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCAwMmVlMGI2OGIyOTFhNjQz
NTdmNzc5ODE3YWI2MzZiMTc4M2Y3Mzk4Li41Nzg1NTZlN2FmOWRkNmRjMjA1ZDhmNDIyOWEzMWE1
MDJlNThkMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICBXRUJD
T1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmLCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29sb3IgY3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNl
KENHQ29sb3JSZWYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0yMDcsNiArMjA3LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDb2xv
cihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JTcGFjZSwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CiAKKyNpZiBVU0UoQ0cpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9y
IGNyZWF0ZUFuZENvbnZlcnRUb1NSR0JBKENHQ29sb3JSZWYsIE9wdGlvblNldDxGbGFncz4gPSB7
IH0pOworI2VuZGlmCisKICAgICBlbnVtIGNsYXNzIEZsYWdzSW5jbHVkaW5nUHJpdmF0ZSA6IHVp
bnQ4X3QgewogICAgICAgICBTZW1hbnRpYyAgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlNlbWFudGljKSwKICAgICAgICAgVXNlQ29sb3JGdW5jdGlv
blNlcmlhbGl6YXRpb24gICA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEZsYWdzOjpVc2VDb2xvckZ1
bmN0aW9uU2VyaWFsaXphdGlvbiksCkBAIC0yNjgsNiArMjcyLDcgQEAgYm9vbCBvdXRPZkxpbmVD
b21wb25lbnRzc0VxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGNvbnN0IENvbG9yJiwgY29uc3Qg
Q29sb3ImKTsKICNpZiBVU0UoQ0cpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImKTsKIFdFQkNPUkVfRVhQT1JUIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShDR0NvbG9yUmVmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMDJhMjZkNTdiNTVlY2FkZTQzYzVmMmVl
Mzk1ZjgzMzI5MjY4NzlhOS4uMmQyODcxNjc3YTE3N2JiZTZmNDg3ODhlZDg0M2UxZjU1YWRlNmEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTgyMCw3ICs4MjAsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRl
clR5cGUgdmFsdWUpCiAKIENvbG9yIFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAogewotICAgIHJldHVybiBbbV9sYXllciBiYWNrZ3JvdW5kQ29sb3JdOworICAg
IHJldHVybiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFttX2xheWVyIGJhY2tncm91bmRDb2xv
cl0pOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRl
eCA4MjdiOTMxNDhiYWUzNzZlYjUyZTgwNzUxN2ViMTRlZTE0NWFlNDQ4Li4wYzcxZDQzOGVlNDM1
OTM1MTYwOTNmODNhYzFiNGE3NDIxM2YyODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdM
YXllci5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZQogCiAtICh2b2lk
KXNldEJvcmRlckNvbG9yOihDR0NvbG9yUmVmKWJvcmRlckNvbG9yCiB7Ci0gICAgX3RpbGVDb250
cm9sbGVyLT5zZXRUaWxlRGVidWdCb3JkZXJDb2xvcihXZWJDb3JlOjpDb2xvcihib3JkZXJDb2xv
cikpOworICAgIF90aWxlQ29udHJvbGxlci0+c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoV2ViQ29y
ZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShib3JkZXJDb2xvcikpOwogfQogCiAtICh2b2lk
KXNldEJvcmRlcldpZHRoOihDR0Zsb2F0KWJvcmRlcldpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGRhYmM3ZTc3MzQwMDU1MDQ1
MWYyNzA0ZTExYzgxOGZjYzZkMmM4NTIuLjdhOTJkODVjMWUxYjNlOGYyNjg1Y2U3MTAxNGQyNGM5
MGIxZTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCkBAIC01NCw5ICs1NCwxMCBAQCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxS
VUNhY2hlUG9saWN5PFdlYkNvcmU6OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3IpCitzdGQ6Om9wdGlv
bmFsPFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYg
Y29sb3IpCiB7Ci0gICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUg
Y29sb3Igc3BhY2VzLgorICAgIC8vIEZJWE1FOiBJbnRlcnByZXRpbmcgY29tcG9uZW50cyBvZiBh
IGNvbG9yIGluIGFuIGFyYml0cmFyeSBjb2xvciBzcGFjZQorICAgIC8vIGFzIHNSR0IgY291bGQg
YmUgd3JvbmcsIG5vdCBqdXN0IGxvc3N5LgogCiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTg3LDkgKzg4LDUyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29s
b3IpCiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhICkpOwogfQogCi1Db2xvcjo6
Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKLSAgICA6IENv
bG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IpLCBmbGFncykKK0NvbG9yIENvbG9y
OjpjcmVhdGVBbmRDb252ZXJ0VG9TUkdCQShDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKQogeworICAgIGF1dG8gc291cmNlQ0dDb2xvclNwYWNlID0gQ0dDb2xvckdldENv
bG9yU3BhY2UoY29sb3IpOworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0Up
CisgICAgYXV0byBkZXN0aW5hdGlvbkNHQ29sb3JTcGFjZSA9IHh5ekNvbG9yU3BhY2VSZWYoKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlhZWl9ENTA7Cisj
ZWxzZQorICAgIGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJl
ZigpOworICAgIGF1dG8gZGVzdGluYXRpb25Db2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQjsK
KyNlbmRpZgorICAgIEFTU0VSVChDR0NvbG9yU3BhY2VHZXROdW1iZXJPZkNvbXBvbmVudHMoZGVz
dGluYXRpb25DR0NvbG9yU3BhY2UpID09IDMpOworCisgICAgYXV0byBzb3VyY2VDb21wb25lbnRz
ID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworICAgIENHRmxvYXQgZGVzdGluYXRpb25D
b21wb25lbnRzWzNdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9y
VHJhbnNmb3JtQ3JlYXRlKGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlLCBudWxscHRyKSk7CisgICAg
YXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFu
c2Zvcm0uZ2V0KCksIHNvdXJjZUNHQ29sb3JTcGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCwgc291cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25Db21wb25lbnRzKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIGZsb2F0IGEgPSBkZXN0aW5hdGlvbkNvbXBv
bmVudHNbMF07CisgICAgZmxvYXQgYiA9IGRlc3RpbmF0aW9uQ29tcG9uZW50c1sxXTsKKyAgICBm
bG9hdCBjID0gZGVzdGluYXRpb25Db21wb25lbnRzWzJdOworICAgIGZsb2F0IGFscGhhID0gQ0dD
b2xvckdldEFscGhhKGNvbG9yKTsKKworICAgIHJldHVybiBDb2xvcihPdXRPZkxpbmVDb21wb25l
bnRzOjpjcmVhdGUoeyBhLCBiLCBjLCBhbHBoYSB9KSwgZGVzdGluYXRpb25Db2xvclNwYWNlLCBm
bGFncyk7Cit9CisKK0NvbG9yIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoQ0dD
b2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK3sKKyAgICBpZiAoIWNvbG9y
KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIHNpemVfdCBudW1Db21wb25lbnRzID0g
Q0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7CisgICAgYXV0byBjb2xvclNwYWNl
ID0gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0NvbG9yR2V0Q29sb3JTcGFjZShjb2xvcikp
OworCisgICAgaWYgKG51bUNvbXBvbmVudHMgIT0gNCB8fCAhY29sb3JTcGFjZSkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUFuZENvbnZlcnRUb1NSR0JBKGNvbG9yLCBmbGFncyk7CisKKyAgICBjb25z
dCBDR0Zsb2F0KiBjb21wb25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworCisg
ICAgZmxvYXQgYSA9IGNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgYiA9IGNvbXBvbmVudHNbMV07
CisgICAgZmxvYXQgYyA9IGNvbXBvbmVudHNbMl07CisgICAgZmxvYXQgYWxwaGEgPSBjb21wb25l
bnRzWzNdOworCisgICAgcmV0dXJuIENvbG9yKE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7
IGEsIGIsIGMsIGFscGhhIH0pLCAqY29sb3JTcGFjZSwgZmxhZ3MpOwogfQogCiBzdGF0aWMgc3Rk
OjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29udmVy
dFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKQEAgLTE4MSw2ICsyMjUsNyBAQCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNw
YWNlIGlucHV0Q29sb3JTcAogICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJh
bnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxw
dHIpKTsKICAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21w
b25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0lu
dGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgLy8gRklYTUU6IENHQ29sb3JU
cmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzIGRvZXNuJ3QgY29weSBvdmVyIGFueSBhbHBo
YSBjb21wb25lbnQuCiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9u
Q29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNb
MV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKaW5k
ZXggMTQ5MWU0MWI5MGNlOWRkYzZlNzhlZWJjYTIwOGVmMzhmN2IyYWM4YS4uOGM4MWMxMGY3ODE2
NTMwN2U5ZWQyMzU4YzZkMDczNWI4NDQ5MmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCkBAIC0xMDgsNiArMTA4LDQ2
IEBAIENHQ29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCitzdGQ6
Om9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNw
YWNlKGNvbG9yU3BhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29s
b3JTcGFjZTo6U1JHQjsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9D
T0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JT
cGFjZSwgYWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OkE5OFJHQjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0RJU1BMQVlf
UDNfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNv
bG9yU3BhY2UsIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpEaXNwbGF5UDM7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBsYWJDb2xvclNwYWNl
UmVmKCkgbm90IGltcGxlbWVudGVkLgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xJTkVBUl9T
UkdCX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShj
b2xvclNwYWNlLCBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENv
bG9yU3BhY2U6OkxpbmVhclNSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19S
T01NUkdCX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFj
ZShjb2xvclNwYWNlLCBST01NUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENv
bG9yU3BhY2U6OlByb1Bob3RvUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
SVRVUl8yMDIwX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JT
cGFjZShjb2xvclNwYWNlLCBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1
cm4gQ29sb3JTcGFjZTo6UmVjMjAyMDsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNT
X1hZWl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgeHl6Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3Bh
Y2U6OlhZWl9ENTA7CisjZW5kaWYKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIH0K
IAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKaW5kZXggZGI2MDQxMGU2ZDQ3M2FjYTdlYTdhMTk0Y2M3
OGM5NjRjOThiYTM3My4uMDMyOTMwZjUyYjgxNTY3ZjVkOWVhYTk2ZGQ1MTM3N2NjZDU3OGU1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiB0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3Bh
Y2UgKkNHQ29sb3JTcGFjZVJlZjsKIApAQCAtNjUsNiArNjYsOCBAQCBXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKIAorc3RkOjpvcHRpb25h
bDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7
CisKIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNw
YWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBiZWUxOTRkNTMzYTE5MDNkNjM0ZDY5MmQ1NjMzZDcz
MzMyNjMwNjFjLi5hMWJlM2NkYjkzYWI0MGJkY2ViMGU5OWViOGJhZGEzNWJhNzc0NWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwCkBAIC0yNjEsNyArMjYxLDggQEAgdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogICAgIGNvbnN0IGF1dG8mIHNo
YWRvd1N0eWxlID0gKnN0YXRpY19jYXN0PGNvbnN0IENHU2hhZG93U3R5bGUqPihDR1N0eWxlR2V0
RGF0YShzdHlsZSkpOwogICAgIGF1dG8gcmFkID0gZGVnMnJhZChzaGFkb3dTdHlsZS5hemltdXRo
IC0gMTgwKTsKICAgICBhdXRvIHNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzdGQ6OmNvcyhyYWQp
LCBzdGQ6OnNpbihyYWQpKSAqIHNoYWRvd1N0eWxlLmhlaWdodDsKLSAgICB1cGRhdGVTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENHU3R5bGVHZXRDb2xvcihzdHlsZSks
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIGF1dG8gc2hhZG93Q29sb3IgPSBD
R1N0eWxlR2V0Q29sb3Ioc3R5bGUpOworICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFk
b3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dT
dGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKQEAgLTMzMCw4ICszMzEsMTAgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYgZ3N0YXQKICAgICAgICAgY3RtRml4dXAgPSBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICBt
X293bmVyLmNvbmNhdENUTShjdG1GaXh1cCk7CiAKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ0dHU3Rh
dGVHZXRGaWxsQ29sb3IoZ3N0YXRlKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ0dHU3RhdGVH
ZXRTdHJva2VDb2xvcihnc3RhdGUpKTsKKyAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0
RmlsbENvbG9yKGdzdGF0ZSk7CisgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ry
b2tlQ29sb3IoZ3N0YXRlKTsKKyAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFBy
ZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xv
cjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRl
U2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKICAgICBtX293bmVyLmFwcGVuZERy
YXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1
dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRy
aXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1sw
XSksIG1fc21vb3RoaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCBjZGNkMzk3YWQ4NWNjZmI3YmIxZmQwZTVlMzhlZDI4ZTky
ZTczMjRkLi5mMmM5YmFlMTg2MDg1MDFmYTJjMjVlMTA4NmQ4Zjg0YWEwMmRjN2ZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3ODQs
NyArMTc4NCw3IEBAIC0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKIAog
LSAodm9pZClzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKil1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZQogewotICAgIF9wYWdlLT5zZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZS5DR0Nv
bG9yKTsKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2Vi
Q29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
dmVycmlkZS5DR0NvbG9yKSk7CiB9CiAKICsgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2Jz
ZXJ2ZXJzT2ZVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KaW5k
ZXggYjU2MmZhNGEwODNhZjU5OGY2NzczOWI1YjY5YjkwNjU5NjcxYjM2Mi4uMzVjMjI1ZjNjZDY3
ODlhZTIwNDNmOTYxZTkwMDVjNTM0ZWJlNGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAg
LTY3LDcgKzY3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilh
RGVjb2RlcgogICAgICAgICBVUkwoc2NvcGVVUkwpLAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5PihkaXNwbGF5KSwKICAgICAgICAgVVJM
KHN0YXJ0VVJMKSwKLSAgICAgICAgV2ViQ29yZTo6Q29sb3IodGhlbWVDb2xvci5DR0NvbG9yKSwK
KyAgICAgICAgV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh0aGVtZUNvbG9yLkNH
Q29sb3IpLAogICAgIH07CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5p
ZmVzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggYmUxNDRiYjM3ZDkzMTI5ZjNhODY0MzczNTFiOTg4YmJmNTU1MThhNi4uNzIwMGU5
NjA2NjAyYzZkZWNlM2RkNmM4NTRiNzhlNGNiYTYxMjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03MjgsOSArNzI4LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB2aWV3UmUKIENvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQot
ICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShOU0NvbG9yLmNvbnRyb2xC
YWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CiAjZWxzZQotICAgIHJldHVybiBOU0NvbG9yLndoaXRl
Q29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29sb3I6OndoaXRlOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCmluZGV4IDc3NDI2YjdjZGQ2M2MyZTcwNzY0ZjE0ZjgwNTc4NDVhZDU3MmQwOWUuLjVl
ZGEzNzZhY2Q0ZjhmMjAyY2FkZWRmNDA2YjNhYjhlNDY5MDhlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNjI0LDcgKzYy
NCw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAg
ICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAg
ICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3Jv
dW5kIGNvbG9yIGZyb20gUERGS2l0IGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdAotICAgICAgICBk
b2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhU
TUwoW0NvY29hQ29sb3IgZ3JheUNvbG9yXS5DR0NvbG9yKSk7CisgICAgICAgIGRvY3VtZW50LT5i
b2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNvcmU6OkNTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3Jl
Ojpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtDb2NvYUNvbG9yIGdyYXlDb2xvcl0uQ0dDb2xv
cikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDY3NjM4ZDNmMzE0MmU4Y2M2
MTg5YTVlMTZiMzNlMmMyYjNlYTJjOC4uNDlkNDhhYjNhMDAzMTQ0NmM2MTcyNzFiMzc4OGU0YzM1
OGVhM2JlMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTE4ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29sb3Igc3BhY2Ugd2hlbiBnZXR0aW5n
IGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDI0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZXhpc3RpbmcgQ0dDb2xvciAtPiBXZWJDb3JlOjpD
b2xvciBjb252ZXJzaW9ucyB0byBiZSBleHBsaWNpdAorICAgICAgICBhYm91dCBsb3NzaWx5IGNv
bnZlcnRpbmcgdG8gc1JHQi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA4
LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Vi
a2l0c2NtcHldIEZpeCBTVk4gcmVsYXRpdmUgVVJMIHBhcnNpbmcKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbQppbmRleCA3YTZiZTA5YTMxNzUxZWJjZDRjMGY3YTAzN2QyMTZlOGU5ZDk1NTg5Li40NmVj
NGJlZmIzYjIwODc3N2Y2NjE3ZmY1ZTY0OWViZWVkMTI3MWE2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENv
bG9yLm1tCkBAIC0xNDksNyArMTQ5LDcgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBTb2xp
ZENvbG9yKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7
CiAKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3
LmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsgInJl
ZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3
IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Cisg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcg
X3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0K
IAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBEaWZmZXJlbnRDb2xvcnNXaXRob3V0T3V0bGll
ckJlbG93TWF4RGlmZmVyZW5jZSkKQEAgLTMwMSw3ICszMDEsNyBAQCBURVNUKFNhbXBsZWRQYWdl
VG9wQ29sb3IsIEhpdFRlc3RIVE1MQ2FudmFzV2l0aG91dFJlbmRlcmluZ0NvbnRleHQpCiAgICAg
RVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKIAogICAgIHdhaXRG
b3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZpZXcuZ2V0KCksIEAiPGJv
ZHkgc3R5bGU9J21hcmdpbjogMCc+PGNhbnZhcyBzdHlsZT0nd2lkdGg6IDEwMCU7IGhlaWdodDog
MTAwJTsgYmFja2dyb3VuZC1jb2xvcjogcmVkJz48L2NhbnZhcz5UZXN0Iik7Ci0gICAgRVhQRUNU
X0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9y
KSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3Ip
LCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBI
aXRUZXN0SFRNTENhbnZhc1dpdGhSZW5kZXJpbmdDb250ZXh0KQpAQCAtMzI4LDcgKzMyOCw3IEBA
IFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEJlZm9yZUNTU1RyYW5zaXRpb24pCiAg
ICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKIAogICAgIHdh
aXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZpZXcuZ2V0KCksIEAi
PGJvZHkgc3R5bGU9J21hcmdpbjogMDsgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxcyc+
VGVzdCIpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBh
Z2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNU
X0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQ
YWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogfQogCiBURVNU
KFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3REdXJpbmdDU1NUcmFuc2l0aW9uKQpAQCAtMzYw
LDcgKzM2MCw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEFmdGVyQ1NTVHJh
bnNpdGlvbikKICAgICAvLyBOb3Qgc2V0dGluZyB0aGlzIHVudGlsIG5vdyBwcmV2ZW50cyB0aGUg
c2FtcGxpbmcgbG9naWMgZnJvbSBydW5uaW5nIGJlY2F1c2Ugd2l0aG91dCBpdCB0aGUgcGFnZSBp
c24ndCBjb25zaWRlcmVkIGNvbnRlbnRmdWwuCiAgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSAnVGVzdCciXTsKICAg
ICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlKHdlYlZpZXcuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0u
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpy
b3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5D
R0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BD
b2xvciwgSGl0VGVzdEJlZm9yZUNTU0FuaW1hdGlvbikKQEAgLTM2OSw3ICszNjksNyBAQCBURVNU
KFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RCZWZvcmVDU1NBbmltYXRpb24pCiAgICAgRVhQ
RUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKIAogICAgIHdhaXRGb3JT
YW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZpZXcuZ2V0KCksIEAiPHN0eWxl
PkBrZXlmcmFtZXMgY2hhbmdlQmFja2dyb3VuZFJlZCB7IHRvIHsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyB9IH08L3N0eWxlPjxib2R5IHN0eWxlPSdtYXJnaW46IDA7IGFuaW1hdGlvbjogY2hhbmdl
QmFja2dyb3VuZFJlZCAxcyBmb3J3YXJkcyBwYXVzZWQnPlRlc3QiKTsKLSAgICBFWFBFQ1RfRVEo
V2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBX
ZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENs
YW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwg
V2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBI
aXRUZXN0RHVyaW5nQ1NTQW5pbWF0aW9uKQpAQCAtMzk5LDcgKzM5OSw3IEBAIFRFU1QoU2FtcGxl
ZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEFmdGVyQ1NTQW5pbWF0aW9uKQogICAgIC8vIE5vdCBzZXR0
aW5nIHRoaXMgdW50aWwgbm93IHByZXZlbnRzIHRoZSBzYW1wbGluZyBsb2dpYyBmcm9tIHJ1bm5p
bmcgYmVjYXVzZSB3aXRob3V0IGl0IHRoZSBwYWdlIGlzbid0IGNvbnNpZGVyZWQgY29udGVudGZ1
bC4KICAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS50ZXh0Q29udGVudCA9ICdUZXN0JyJdOwogICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENv
bG9yVG9DaGFuZ2Uod2ViVmlldy5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9y
KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6
OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3ko
W3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6
cmVkKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0Q1NTUG9pbnRlckV2
ZW50c05vbmUpCkBAIC00MDgsNyArNDA4LDcgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBI
aXRUZXN0Q1NTUG9pbnRlckV2ZW50c05vbmUpCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3Nh
bXBsZWRQYWdlVG9wQ29sb3JdKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8Ym9keSBz
dHlsZT0nbWFyZ2luOiAwJz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHBvaW50ZXItZXZlbnRzOiBub25lJz48L2Rpdj5UZXN0Il07
Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENv
bG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNv
cmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0KIAogLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGlu
dG8gcGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQpAQCAtNDQzLDEz
ICs0NDMsMTMgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBNYWluRG9jdW1lbnRDaGFuZ2Up
CiAgICAgfV0pOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5k
V2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5PlRlc3QiXTsKLSAg
ICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3Jd
LkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShXZWJDb3Jl
Ojpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9y
XS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKICAgICBFWFBFQ1RfRVEobm90aWZp
Y2F0aW9uQ291bnQsIDFVTCk7CiAKICAgICBub3RpZmljYXRpb25Db3VudCA9IDA7CiAKICAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlh
dGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHk+VGVzdCJdOwotICAgIEVYUEVDVF9FUShXZWJDb3Jl
OjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6
OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogICAgIC8vIERlcGVuZGluZyBvbiB0aW1pbmcsIGEgbm90aWZpY2F0
aW9uIGNhbiBiZSBzZW50IGZvciB3aGVuIHRoZSBtYWluIGRvY3VtZW50IGNoYW5nZXMgYW5kIHRo
ZW4KICAgICAvLyB3aGVuIHRoZSBuZXcgbWFpbiBkb2N1bWVudCByZW5kZXJzIG9yIGJvdGggY2Fu
IGJlIGNvYWxlc2NlZCBpZiByZW5kZXJpbmcgaXMgZmFzdCBlbm91Z2guCiAgICAgRVhQRUNUX1RS
VUUobm90aWZpY2F0aW9uQ291bnQgPT0gMCB8fCBub3RpZmljYXRpb25Db3VudCA9PSAyKTsKQEAg
LTQ2OSw2ICs0NjksNiBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIE1haW5Eb2N1bWVudENo
YW5nZSkKICAgICBub3RpZmljYXRpb25Db3VudCA9IDA7CiAKICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1Bh
aW50OkAiPGJvZHk+VGVzdCJdOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmll
dyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7
CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZp
ZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUp
OwogICAgIEVYUEVDVF9FUShub3RpZmljYXRpb25Db3VudCwgMVVMKTsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDlkOTI3ZjEyNjVhMzczY2JmZjVkMTY2ZTI5YzFkMTY4MmZk
NjQ3NjAuLjg1NDA4ZTZhNmNjMWVmODJjNDY4MWU4OWY2MDA3MGI5NmNmYzhlMGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3REcmF3R2x5
cGhzUmVjb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjkwMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxODI4NDc3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIGNh
bGxpbmcgZHJhd1RleHQoKSB3aXRoIGEgZGlzcGxheS1wMyBjb2xvciBmaWxsU3R5bGUgb24KKyAg
ICAgICAgYSBkaXNwbGF5LXAzIGNhbnZhcy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAz
LmRyYXdUZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2Uu
cDMuZHJhd1RleHQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sOgorCiAyMDIxLTA4
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIENyb3Nz
LU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kgc3VwcG9ydCBmb3IgQmxvYiBVUkxzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZHJhd1RleHQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRy
YXdUZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWRmZTkwZmJiMTRiYmY3OTRhZGQ1YTM3
MGIzZjlmYmRlYWUwNDhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYg
QEAKKzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0CitUZXN0IGlmIGRyYXdUZXh0IGNhbiBiZSB1
c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCitBY3R1YWwgb3V0cHV0OgorCitQQVNT
IFRlc3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29s
b3IKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNl
LnAzLmRyYXdUZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3Bh
Y2UucDMuZHJhd1RleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmMzMWJmZjE2MzFhZThmZTIwNGE2ZTFm
YTViNDk5MTc2NTQzNDM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMg
dGVzdDogMmQuY29sb3Iuc3BhY2UucDMuZHJhd1RleHQ8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2Nh
bnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4K
Kzxib2R5IGNsYXNzPSJzaG93X291dHB1dCI+CisKKzxoMT4yZC5jb2xvci5zcGFjZS5wMy5kcmF3
VGV4dDwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+VGVzdCBpZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3
aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcjwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5B
Y3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIx
MDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVu
dCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFz
eW5jX3Rlc3QoIlRlc3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3Bs
YXktcDMgY29sb3IiKTsKK19hZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVy
VGVzdCgpOworCitjb25zdCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBz
UkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOwor
Y2FudmFzLmhlaWdodCA9IDEwMDsKKworbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJs
KC9mb250cy9BaGVtLnR0ZikiKTsKK2RvY3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9u
dCA9ICI0MHB4IEFoZW0iOworCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7CisgICAg
ICAgIGN0eC5maWxsVGV4dCgiQSIsIDAsIDUwKTsKKworICAgICAgICBjdHguZmlsbFN0eWxlID0g
ImJsYWNrIjsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUg
MCAwKSI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDUwLCA1MCk7CisKKyAgICAgICAgbGV0
IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVp
Z2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICBsZXQgcGl4
ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeSAqIGNh
bnZhcy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0s
IHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsg
M11dOworICAgICAgICB9OworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgy
NSwgMjUpLCBzUkdCUmVkSW5QMyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxB
dCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9
KTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9l
bGVtZW50L2NvbG9yX3NwYWNlLnlhbWwKaW5kZXggZTY0ZDZmYjk3NzdkYzBjNTlkNjZmNGJiYjYw
OTE1OTU3MjY2YzM2OS4uNWJhMDg4NWEwNGQ2OTE1NDA1ODAxZGNlYjdiMjMwZTFjYTNkOTY2MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xz
L3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sCkBAIC0xNzUsMyArMTc1LDQ0IEBACiAgICAg
ICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhl
bHMsIDIpOwogICAgIH0pOwogICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsKKwor
LSBuYW1lOiAyZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dAorICB0ZXN0aW5nOgorICAtIDJkLmNv
bG9yLnNwYWNlLnAzLmFuZC51aW50OAorICBkZXNjOiBUZXN0IGlmIGRyYXdUZXh0IGNhbiBiZSB1
c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCisgIGF0dHJpYnV0ZXM6IHwKKyAgICB7
Y29sb3JTcGFjZTogImRpc3BsYXktcDMifQorICBjb2RlOiB8CisgICAgZGVmZXJUZXN0KCk7CisK
KyAgICBjb25zdCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgY29uc3Qgc1JH
QlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1NV07CisKKyAgICBjYW52YXMud2lkdGggPSAxMDA7
CisgICAgY2FudmFzLmhlaWdodCA9IDEwMDsKKworICAgIGxldCBmID0gbmV3IEZvbnRGYWNlKCJB
aGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYpIik7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkKGYp
OworICAgIGYubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHQuc3RlcChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgICAg
IGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7CisgICAgICAgICAgICBjdHguZmlsbFRleHQoIkEiLCAw
LCA1MCk7CisKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiYmxhY2siOworICAgICAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAg
ICAgICBjdHguZmlsbFRleHQoIkEiLCA1MCwgNTApOworCisgICAgICAgICAgICBsZXQgcGl4ZWxz
ID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsg
Y29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pLmRhdGE7CisgICAgICAgICAgICBsZXQgcGl4ZWxB
dCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBj
YW52YXMud2lkdGggKyB4KSAqIDQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zm
c2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZz
ZXQgKyAzXV07CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICAgICAg
dC5kb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435754</attachid>
            <date>2021-08-18 01:48:46 -0700</date>
            <delta_ts>2021-08-18 16:06:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210818184844.patch</filename>
            <type>text/plain</type>
            <size>35400</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1MTBmZmVmNWU4ZmMx
NWNhOGI5MjE2NGVlNmRhYzA4Yzg4NjQ5Yi4uOTZiOTZmNGIxNjYwZTBiMjczZjRiZjI0YTUyNDFm
ZjEyZDE4YzMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEdQVSBjYW52YXMg
aXMgZW5hYmxlZCwgRHJhd0dseXBoc1JlY29yZGVyIHJlY29yZHMgdGhlIHRleHQgZmlsbAorICAg
ICAgICBjb2xvciBieSBnZXR0aW5nIGl0IGZyb20gdGhlIGNvbnRleHQgdXNpbmcgQ0dHU3RhdGVH
ZXRGaWxsQ29sb3IuICBUaGlzCisgICAgICAgIGlzIGRvbmUgc28gdGhhdCBjb2xvciBnbHlwaHMg
aGF2ZSBlYWNoIHBhcnQgcGFpbnRlZCBpbiB0aGUgcmlnaHQKKyAgICAgICAgY29sb3IuICBCdXQg
dGhlIGN1cnJlbnQgY29udmVyc2lvbiBmcm9tIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IKKyAg
ICAgICAgbG9zc2lseSBjb252ZXJ0cyB0byBzUkdCLiAgU28gd2UgbmVlZCB0byBnZXQgdGhlIGNv
bG9yIHNwYWNlIGFuZCBjb2xvcgorICAgICAgICBjb21wb25lbnRzIGZyb20gdGhlIENHQ29sb3Ig
YW5kIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIENvbG9yKENHQ29sb3JS
ZWYpIGNvbnN0cnVjdG9yIGlzIHJlcGxhY2VkIGJ5IHR3bworICAgICAgICBjb25zdHJ1Y3RvciBm
dW5jdGlvbnMsIGNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSBhbmQKKyAgICAgICAgcm91bmRB
bmRDbGFtcFRvU1JHQkFMb3NzeSwgdG8gdGhlIGNvbnZlcnNpb24gYmVoYXZpb3IgY2xlYXIgYXQg
Y2FsbAorICAgICAgICBzaXRlcy4gIGNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSB3aWxsIG1h
dGNoIHRoZSBDR0NvbG9yJ3MgY29sb3IKKyAgICAgICAgc3BhY2UgdG8gb25lIG9mIHRoZSBwcmVk
ZWZpbmVkIHNwYWNlcyB0aGF0IFdlYkNvcmU6OkNvbG9yIGNhbgorICAgICAgICByZXByZXNlbnQu
ICBJZiBpdCdzIHNvbWUgb3RoZXIgY29sb3Igc3BhY2UsIHdlIGNvbnZlcnQgdG8gWFlaIChvbgor
ICAgICAgICBwbGF0Zm9ybXMgd2hlcmUgdGhhdCdzIGF2YWlsYWJsZSksIHNpbmNlIHRoYXQgd2ls
bCByZXN1bHQgaW4gdGhlIGxlYXN0CisgICAgICAgIGxvc3MsIG9yIHRvIHNSR0IgKG9uIHBsYXRm
b3JtcyB3aGVyZSBYWVogaXMgbm90IGF2YWlsYWJsZSkuCisKKyAgICAgICAgQ0dDb2xvclNwYWNl
RXF1YWxUb0NvbG9yU3BhY2UsIHdoaWNoIGlzIHVzZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKKyAg
ICAgICAgQ0dDb2xvcidzIGNvbG9yIHNwYWNlLCBpcyBub3QgdmVyeSBleHBlbnNpdmUsIGJ1dCBp
dCB3aWxsIGRvIG1vcmUgdGhhbiBhCisgICAgICAgIHBvaW50ZXIgY29tcGFyaXNvbiBpbiBjYXNl
IHdlIHBhc3MgaW4gdHdvIENHQ29sb3JTcGFjZVJlZnMgdGhhdCBhcmUKKyAgICAgICAgZXF1aXZh
bGVudCBidXQgbm90IHRoZSBzYW1lIHBvaW50ZXIgdmFsdWUuICBTaW5jZSBvdXIgbmV3CisgICAg
ICAgIGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHdpdGgg
Q0dDb2xvcnMgdGhhdCBoYXZlCisgICAgICAgIGJlZW4gc2V0IFdlYkNvcmUgZHVyaW5nIGNhbnZh
cyBkcmF3aW5nLCB3ZSB3aWxsIGdldCBiYWNrIHRoZSBzYW1lCisgICAgICAgIHBvaW50ZXJzIHRo
YXQgd2UgaGF2ZSBjYWNoZWQgaW4gc1JHQkNvbG9yU3BhY2VSZWYoKSwKKyAgICAgICAgZGlzcGxh
eVAzQ29sb3JTcGFjZVJlZigpLCBldGMuICBJZiBjYWxsaW5nIENHQ29sb3JTcGFjZUVxdWFsVG9D
b2xvclNwYWNlCisgICAgICAgIG9uIGFsbCBvdXIgc3VwcG9ydGVkIGNvbG9yIHNwYWNlcyB0dXJu
cyBvdXQgdG8gYmUgdG9vIGV4cGVuc2l2ZSwgd2UKKyAgICAgICAgY291bGQgc3RhcnQgYnkgZG9p
bmcgYSBwb2ludGVyIGNvbXBhcmlzb24gb24gZWFjaCBiZWZvcmUgY2FsbGluZworICAgICAgICBD
R0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZS4KKworICAgICAgICBUaGUgd2F5IGNvbG9yU3Bh
Y2VGb3JDR0NvbG9yU3BhY2UgaXMgd3JpdHRlbiB3ZSBjb3VsZCBlbmQgdXAKKyAgICAgICAgaW5z
dGFudGlhdGluZyBhbGwgb2Ygb3VyIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMsIGlmIGFuIGF1dGhv
ciB1c2VkIGFuCisgICAgICAgIFhZWiBjb2xvciB3aGVuIGRyYXdpbmcgdGV4dCAodGhlIGxhc3Qg
Y29sb3IgcHJvZmlsZSB3ZSBjaGVjaykuICBXZQorICAgICAgICBjb3VsZCB0cnkgaGFyZGVyIHRv
IGF2b2lkIGRvaW5nIHRoaXMgaWYgaXQncyBpbXBvcnRhbnQuCisKKyAgICAgICAgVGVzdDogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWwKKworICAgICAgICAqIHBh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c0JhY2tncm91bmRDU1MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFu
ZFByZXNlcnZlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5k
Q29udmVydFRvU1JHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q29jb2E6OmJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVk
QmFja2luZ0xheWVyIHNldEJvcmRlckNvbG9yOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kQ29udmVydFRvU1JH
QkEpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSk6IE5ldyBmdW5jdGlv
biB0aGF0IGNvbnZlcnRzIGZyb20KKyAgICAgICAgQ0dDb2xvciB0byBXZWJDb3JlOjpDb2xvci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisKIDIwMjEtMDgtMTUg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQyBE
aXNwbGF5XSBNYWtlIERpc3BsYXk6OkltYWdlQm94IGEgQ2FjaGVkSW1hZ2VDbGllbnQgdG8gZ2V0
IGltYWdlIHJlcGFpbnQgd29ya2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNDVhOGFhODg3MDYzZmM0ODIwOWFm
YmIzZmZhN2UwZmE4M2UwZTYxLi4yZWUwMWU0NDY3NjJkMTZmY2NkNmI2NWFiYzA2ZjAzOTA3N2Qz
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA4LTE4ICBDYW1lcm9uIE1jQ29y
bWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29sb3Igc3BhY2Ug
d2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZXhpc3RpbmcgQ0dDb2xvciAt
PiBXZWJDb3JlOjpDb2xvciBjb252ZXJzaW9ucyB0byBiZSBleHBsaWNpdAorICAgICAgICBhYm91
dCBsb3NzaWx5IGNvbnZlcnRpbmcgdG8gc1JHQi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0
V2l0aENvZGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorCiAyMDIx
LTA4LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVn
IDIyOTExMjogVGhyZWFkU2FuaXRpemVyOiBkYXRhIHJhY2VzIG9mIFdURjo6U3RyaW5nIGluIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBkMTBlMzM1MWYzM2U0
MDdiZGEyNTNjN2VlZDNhMTQ2OGEyYmMyZDRlLi4wYmExYzhiMTIxMjczZmQzOWQ3NjkxZGM4MmMy
NDMyNjMzYmI2MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIFN0cmluZyBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdAogICAg
IE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAgICBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29s
b3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKIAotICAgIENv
bG9yIHdpbmRvd0NvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBDb2xvciB3aW5kb3dDb2xvcihyb3Vu
ZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yLmdldCgpKSk7CiAgICAgaWYgKCF3aW5kb3dDb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIHdpbmRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CiAKQEAgLTM0Miw3ICszNDIsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiAgICAgTUFDYXB0aW9uQXBwZWFy
YW5jZUJlaGF2aW9yIGJlaGF2aW9yOwogCiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9y
ID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcihrTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwotICAgIENvbG9yIGJhY2tncm91
bmRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IuZ2V0KCkpKTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3I7CiAKQEAgLTM1Niw3ICszNTYsOCBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiBDb2xvciBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0Q29sb3IoYm9vbCYgaW1wb3J0YW50KSBj
b25zdAogewogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKLSAgICBD
b2xvciB0ZXh0Q29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3Vu
ZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSkuZ2V0KCk7
CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBl
YXJhbmNlQ29weUZvcmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIs
ICZiZWhhdmlvcikpLmdldCgpOworICAgIENvbG9yIHRleHRDb2xvcihyb3VuZEFuZENsYW1wVG9T
UkdCQUxvc3N5KGNvbG9yLmdldCgpKSk7CiAgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKSB7
CiAgICAgICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBv
bmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stY29udGFpbmVyLgogICAgICAgICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCAwMmVlMGI2OGIyOTFhNjQz
NTdmNzc5ODE3YWI2MzZiMTc4M2Y3Mzk4Li41Nzg1NTZlN2FmOWRkNmRjMjA1ZDhmNDIyOWEzMWE1
MDJlNThkMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICBXRUJD
T1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmLCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29sb3IgY3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNl
KENHQ29sb3JSZWYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0yMDcsNiArMjA3LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDb2xv
cihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JTcGFjZSwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CiAKKyNpZiBVU0UoQ0cpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9y
IGNyZWF0ZUFuZENvbnZlcnRUb1NSR0JBKENHQ29sb3JSZWYsIE9wdGlvblNldDxGbGFncz4gPSB7
IH0pOworI2VuZGlmCisKICAgICBlbnVtIGNsYXNzIEZsYWdzSW5jbHVkaW5nUHJpdmF0ZSA6IHVp
bnQ4X3QgewogICAgICAgICBTZW1hbnRpYyAgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlNlbWFudGljKSwKICAgICAgICAgVXNlQ29sb3JGdW5jdGlv
blNlcmlhbGl6YXRpb24gICA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEZsYWdzOjpVc2VDb2xvckZ1
bmN0aW9uU2VyaWFsaXphdGlvbiksCkBAIC0yNjgsNiArMjcyLDcgQEAgYm9vbCBvdXRPZkxpbmVD
b21wb25lbnRzc0VxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGNvbnN0IENvbG9yJiwgY29uc3Qg
Q29sb3ImKTsKICNpZiBVU0UoQ0cpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImKTsKIFdFQkNPUkVfRVhQT1JUIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShDR0NvbG9yUmVmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMDJhMjZkNTdiNTVlY2FkZTQzYzVmMmVl
Mzk1ZjgzMzI5MjY4NzlhOS4uMmQyODcxNjc3YTE3N2JiZTZmNDg3ODhlZDg0M2UxZjU1YWRlNmEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTgyMCw3ICs4MjAsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRl
clR5cGUgdmFsdWUpCiAKIENvbG9yIFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAogewotICAgIHJldHVybiBbbV9sYXllciBiYWNrZ3JvdW5kQ29sb3JdOworICAg
IHJldHVybiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFttX2xheWVyIGJhY2tncm91bmRDb2xv
cl0pOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRl
eCA4MjdiOTMxNDhiYWUzNzZlYjUyZTgwNzUxN2ViMTRlZTE0NWFlNDQ4Li4wYzcxZDQzOGVlNDM1
OTM1MTYwOTNmODNhYzFiNGE3NDIxM2YyODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdM
YXllci5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZQogCiAtICh2b2lk
KXNldEJvcmRlckNvbG9yOihDR0NvbG9yUmVmKWJvcmRlckNvbG9yCiB7Ci0gICAgX3RpbGVDb250
cm9sbGVyLT5zZXRUaWxlRGVidWdCb3JkZXJDb2xvcihXZWJDb3JlOjpDb2xvcihib3JkZXJDb2xv
cikpOworICAgIF90aWxlQ29udHJvbGxlci0+c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoV2ViQ29y
ZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShib3JkZXJDb2xvcikpOwogfQogCiAtICh2b2lk
KXNldEJvcmRlcldpZHRoOihDR0Zsb2F0KWJvcmRlcldpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGRhYmM3ZTc3MzQwMDU1MDQ1
MWYyNzA0ZTExYzgxOGZjYzZkMmM4NTIuLjdhOTJkODVjMWUxYjNlOGYyNjg1Y2U3MTAxNGQyNGM5
MGIxZTgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCkBAIC01NCw5ICs1NCwxMCBAQCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxS
VUNhY2hlUG9saWN5PFdlYkNvcmU6OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3IpCitzdGQ6Om9wdGlv
bmFsPFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYg
Y29sb3IpCiB7Ci0gICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUg
Y29sb3Igc3BhY2VzLgorICAgIC8vIEZJWE1FOiBJbnRlcnByZXRpbmcgY29tcG9uZW50cyBvZiBh
IGNvbG9yIGluIGFuIGFyYml0cmFyeSBjb2xvciBzcGFjZQorICAgIC8vIGFzIHNSR0IgY291bGQg
YmUgd3JvbmcsIG5vdCBqdXN0IGxvc3N5LgogCiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTg3LDkgKzg4LDUyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29s
b3IpCiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhICkpOwogfQogCi1Db2xvcjo6
Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKLSAgICA6IENv
bG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IpLCBmbGFncykKK0NvbG9yIENvbG9y
OjpjcmVhdGVBbmRDb252ZXJ0VG9TUkdCQShDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKQogeworICAgIGF1dG8gc291cmNlQ0dDb2xvclNwYWNlID0gQ0dDb2xvckdldENv
bG9yU3BhY2UoY29sb3IpOworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0Up
CisgICAgYXV0byBkZXN0aW5hdGlvbkNHQ29sb3JTcGFjZSA9IHh5ekNvbG9yU3BhY2VSZWYoKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlhZWl9ENTA7Cisj
ZWxzZQorICAgIGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJl
ZigpOworICAgIGF1dG8gZGVzdGluYXRpb25Db2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQjsK
KyNlbmRpZgorICAgIEFTU0VSVChDR0NvbG9yU3BhY2VHZXROdW1iZXJPZkNvbXBvbmVudHMoZGVz
dGluYXRpb25DR0NvbG9yU3BhY2UpID09IDMpOworCisgICAgYXV0byBzb3VyY2VDb21wb25lbnRz
ID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworICAgIENHRmxvYXQgZGVzdGluYXRpb25D
b21wb25lbnRzWzNdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9y
VHJhbnNmb3JtQ3JlYXRlKGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlLCBudWxscHRyKSk7CisgICAg
YXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFu
c2Zvcm0uZ2V0KCksIHNvdXJjZUNHQ29sb3JTcGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCwgc291cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25Db21wb25lbnRzKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIGZsb2F0IGEgPSBkZXN0aW5hdGlvbkNvbXBv
bmVudHNbMF07CisgICAgZmxvYXQgYiA9IGRlc3RpbmF0aW9uQ29tcG9uZW50c1sxXTsKKyAgICBm
bG9hdCBjID0gZGVzdGluYXRpb25Db21wb25lbnRzWzJdOworICAgIGZsb2F0IGFscGhhID0gQ0dD
b2xvckdldEFscGhhKGNvbG9yKTsKKworICAgIHJldHVybiBDb2xvcihPdXRPZkxpbmVDb21wb25l
bnRzOjpjcmVhdGUoeyBhLCBiLCBjLCBhbHBoYSB9KSwgZGVzdGluYXRpb25Db2xvclNwYWNlLCBm
bGFncyk7Cit9CisKK0NvbG9yIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoQ0dD
b2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK3sKKyAgICBpZiAoIWNvbG9y
KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIHNpemVfdCBudW1Db21wb25lbnRzID0g
Q0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7CisgICAgYXV0byBjb2xvclNwYWNl
ID0gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0NvbG9yR2V0Q29sb3JTcGFjZShjb2xvcikp
OworCisgICAgaWYgKG51bUNvbXBvbmVudHMgIT0gNCB8fCAhY29sb3JTcGFjZSkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUFuZENvbnZlcnRUb1NSR0JBKGNvbG9yLCBmbGFncyk7CisKKyAgICBjb25z
dCBDR0Zsb2F0KiBjb21wb25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworCisg
ICAgZmxvYXQgYSA9IGNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgYiA9IGNvbXBvbmVudHNbMV07
CisgICAgZmxvYXQgYyA9IGNvbXBvbmVudHNbMl07CisgICAgZmxvYXQgYWxwaGEgPSBjb21wb25l
bnRzWzNdOworCisgICAgcmV0dXJuIENvbG9yKE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7
IGEsIGIsIGMsIGFscGhhIH0pLCAqY29sb3JTcGFjZSwgZmxhZ3MpOwogfQogCiBzdGF0aWMgc3Rk
OjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29udmVy
dFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKQEAgLTE4MSw2ICsyMjUsNyBAQCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNw
YWNlIGlucHV0Q29sb3JTcAogICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJh
bnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxw
dHIpKTsKICAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21w
b25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0lu
dGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgLy8gRklYTUU6IENHQ29sb3JU
cmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzIGRvZXNuJ3QgY29weSBvdmVyIGFueSBhbHBo
YSBjb21wb25lbnQuCiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9u
Q29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNb
MV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKaW5k
ZXggMTQ5MWU0MWI5MGNlOWRkYzZlNzhlZWJjYTIwOGVmMzhmN2IyYWM4YS4uOGM4MWMxMGY3ODE2
NTMwN2U5ZWQyMzU4YzZkMDczNWI4NDQ5MmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCkBAIC0xMDgsNiArMTA4LDQ2
IEBAIENHQ29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCitzdGQ6
Om9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNw
YWNlKGNvbG9yU3BhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29s
b3JTcGFjZTo6U1JHQjsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9D
T0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JT
cGFjZSwgYWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OkE5OFJHQjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0RJU1BMQVlf
UDNfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNv
bG9yU3BhY2UsIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xv
clNwYWNlOjpEaXNwbGF5UDM7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBsYWJDb2xvclNwYWNl
UmVmKCkgbm90IGltcGxlbWVudGVkLgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xJTkVBUl9T
UkdCX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShj
b2xvclNwYWNlLCBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENv
bG9yU3BhY2U6OkxpbmVhclNSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19S
T01NUkdCX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFj
ZShjb2xvclNwYWNlLCBST01NUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENv
bG9yU3BhY2U6OlByb1Bob3RvUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
SVRVUl8yMDIwX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JT
cGFjZShjb2xvclNwYWNlLCBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1
cm4gQ29sb3JTcGFjZTo6UmVjMjAyMDsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNT
X1hZWl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgeHl6Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3Bh
Y2U6OlhZWl9ENTA7CisjZW5kaWYKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIH0K
IAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKaW5kZXggZGI2MDQxMGU2ZDQ3M2FjYTdlYTdhMTk0Y2M3
OGM5NjRjOThiYTM3My4uMDMyOTMwZjUyYjgxNTY3ZjVkOWVhYTk2ZGQ1MTM3N2NjZDU3OGU1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiB0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3Bh
Y2UgKkNHQ29sb3JTcGFjZVJlZjsKIApAQCAtNjUsNiArNjYsOCBAQCBXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKIAorc3RkOjpvcHRpb25h
bDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7
CisKIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNw
YWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBiZWUxOTRkNTMzYTE5MDNkNjM0ZDY5MmQ1NjMzZDcz
MzMyNjMwNjFjLi5hMWJlM2NkYjkzYWI0MGJkY2ViMGU5OWViOGJhZGEzNWJhNzc0NWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwCkBAIC0yNjEsNyArMjYxLDggQEAgdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogICAgIGNvbnN0IGF1dG8mIHNo
YWRvd1N0eWxlID0gKnN0YXRpY19jYXN0PGNvbnN0IENHU2hhZG93U3R5bGUqPihDR1N0eWxlR2V0
RGF0YShzdHlsZSkpOwogICAgIGF1dG8gcmFkID0gZGVnMnJhZChzaGFkb3dTdHlsZS5hemltdXRo
IC0gMTgwKTsKICAgICBhdXRvIHNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzdGQ6OmNvcyhyYWQp
LCBzdGQ6OnNpbihyYWQpKSAqIHNoYWRvd1N0eWxlLmhlaWdodDsKLSAgICB1cGRhdGVTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENHU3R5bGVHZXRDb2xvcihzdHlsZSks
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIGF1dG8gc2hhZG93Q29sb3IgPSBD
R1N0eWxlR2V0Q29sb3Ioc3R5bGUpOworICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFk
b3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dT
dGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKQEAgLTMzMCw4ICszMzEsMTAgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYgZ3N0YXQKICAgICAgICAgY3RtRml4dXAgPSBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICBt
X293bmVyLmNvbmNhdENUTShjdG1GaXh1cCk7CiAKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ0dHU3Rh
dGVHZXRGaWxsQ29sb3IoZ3N0YXRlKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ0dHU3RhdGVH
ZXRTdHJva2VDb2xvcihnc3RhdGUpKTsKKyAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0
RmlsbENvbG9yKGdzdGF0ZSk7CisgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ry
b2tlQ29sb3IoZ3N0YXRlKTsKKyAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFBy
ZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xv
cjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRl
U2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKICAgICBtX293bmVyLmFwcGVuZERy
YXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1
dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRy
aXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1sw
XSksIG1fc21vb3RoaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkZjU5NmVmYWVlZjNkNWY5NzE1N2E5
MWE5ODlkMDk5Y2JjMTA1ZDJhLi42NDBhNDUyNmM1N2FlZWUxZjkxMmRlN2Y1NjNlNjM3MzEyNmYx
M2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KQEAgLTMxNSw3ICszMTUsNyBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvbG9yKCkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTpVSUNvbG9yUGJvYXJkVHlwZV07CiAgICAgVUlDb2xvciAqdWlDb2xvciA9
IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpQQUw6OmdldFVJQ29s
b3JDbGFzcygpIGZyb21EYXRhOmRhdGEgZXJyb3I6bmlsXTsKLSAgICByZXR1cm4gQ29sb3IodWlD
b2xvci5DR0NvbG9yKTsKKyAgICByZXR1cm4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1aUNv
bG9yLkNHQ29sb3IpOwogfQogCiBVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2RjZDM5
N2FkODVjY2ZiN2JiMWZkMGU1ZTM4ZWQyOGU5MmU3MzI0ZC4uZjJjOWJhZTE4NjA4NTAxZmEyYzI1
ZTEwODZkOGY4NGFhMDJkYzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNzg0LDcgKzE3ODQsNyBAQCAtIChDb2NvYUNvbG9yICop
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCiAKIC0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yOihDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKIHsK
LSAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUuQ0dDb2xvcik7CisgICAgX3BhZ2UtPnNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9z
c3kodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUuQ0dDb2xvcikpOwogfQogCiArIChC
T09MKWF1dG9tYXRpY2FsbHlOb3RpZmllc09ic2VydmVyc09mVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBw
bGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IGI1NjJmYTRhMDgzYWY1OThmNjc3MzliNWI2
OWI5MDY1OTY3MWIzNjIuLjM1YzIyNWYzY2Q2Nzg5YWUyMDQzZjk2MWU5MDA1YzUzNGViZTRmZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC02Nyw3ICs2Nyw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKICAgICAgICAgVVJMKHNjb3BlVVJM
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlz
cGxheT4oZGlzcGxheSksCiAgICAgICAgIFVSTChzdGFydFVSTCksCi0gICAgICAgIFdlYkNvcmU6
OkNvbG9yKHRoZW1lQ29sb3IuQ0dDb2xvciksCisgICAgICAgIFdlYkNvcmU6OnJvdW5kQW5kQ2xh
bXBUb1NSR0JBTG9zc3kodGhlbWVDb2xvci5DR0NvbG9yKSwKICAgICB9OwogCiAgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KHNlbGYs
IFdURk1vdmUoY29yZUFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGJlMTQ0YmIzN2Q5MzEyOWYzYTg2
NDM3MzUxYjk4OGJiZjU1NTE4YTYuLjcyMDBlOTYwNjYwMmM2ZGVjZTNkZDZjODU0Yjc4ZTRjYmE2
MTI2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNzI4LDkgKzcyOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VVbml2ZXJz
YWxBY2Nlc3Nab29tRm9jdXMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlCiBDb2xvciBX
ZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICByZXR1cm4gTlNDb2xvci5jb250cm9sQmFj
a2dyb3VuZENvbG9yLkNHQ29sb3I7CisgICAgcmV0dXJuIFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBU
b1NSR0JBTG9zc3koTlNDb2xvci5jb250cm9sQmFja2dyb3VuZENvbG9yLkNHQ29sb3IpOwogI2Vs
c2UKLSAgICByZXR1cm4gTlNDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbG9yOjp3aGl0ZTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA3NzQyNmI3Y2RkNjNjMmU3
MDc2NGYxNGY4MDU3ODQ1YWQ1NzJkMDllLi41ZWRhMzc2YWNkNGY4ZjIwMmNhZGVkZjQwNmIzYWI4
ZTQ2OTA4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTYyNCw3ICs2MjQsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQ
bHVnaW4oV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2Js
ZW0vNzUzMzI5NDg+IGdldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIFBERktpdCBpbnN0ZWFk
IG9mIGhhcmRjb2RpbmcgaXQKLSAgICAgICAgZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCktPnNl
dElubGluZVN0eWxlUHJvcGVydHkoV2ViQ29yZTo6Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFtDb2NvYUNvbG9yIGdyYXlDb2xvcl0uQ0dD
b2xvcikpOworICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgV2ViQ29yZTo6
c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShb
Q29jb2FDb2xvciBncmF5Q29sb3JdLkNHQ29sb3IpKSk7CiAgICAgfQogCiAgICAgaWYgKHN1cHBv
cnRzRm9ybXMoKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGQ2NzYzOGQzZjMxNDJlOGNjNjE4OWE1ZTE2YjMzZTJjMmIzZWEyYzguLjQ5ZDQ4
YWIzYTAwMzE0NDZjNjE3MjcxYjM3ODhlNGMzNThlYTNiZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wOC0x
OCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByZXNl
cnZlIGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlMaXN0
OjpEcmF3R2x5cGhzUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyOTAyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE4Mjg0Nzc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGV4
aXN0aW5nIENHQ29sb3IgLT4gV2ViQ29yZTo6Q29sb3IgY29udmVyc2lvbnMgdG8gYmUgZXhwbGlj
aXQKKyAgICAgICAgYWJvdXQgbG9zc2lseSBjb252ZXJ0aW5nIHRvIHNSR0IuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW06
CisgICAgICAgIChURVNUKToKKwogMjAyMS0wOC0xMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBGaXggU1ZOIHJlbGF0aXZlIFVS
TCBwYXJzaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KaW5kZXggN2E2YmUwOWEzMTc1MWViY2Q0
YzBmN2EwMzdkMjE2ZThlOWQ5NTU4OS4uNDZlYzRiZWZiM2IyMDg3NzdmNjYxN2ZmNWU2NDllYmVl
ZDEyNzFhNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIFRF
U1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgU29saWRDb2xvcikKICAgICBFWFBFQ1RfTlVMTChbd2Vi
VmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwogCiAgICAgd2FpdEZvclNhbXBsZWRQYWdlVG9w
Q29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmlldy5nZXQoKSwgY3JlYXRlSFRNTEdyYWRpZW50V2l0
aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJyZWQiX3MgfSkpOwotICAgIEVYUEVD
VF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xv
ciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFu
ZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9y
KSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwg
RGlmZmVyZW50Q29sb3JzV2l0aG91dE91dGxpZXJCZWxvd01heERpZmZlcmVuY2UpCkBAIC0zMDEs
NyArMzAxLDcgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0SFRNTENhbnZhc1dp
dGhvdXRSZW5kZXJpbmdDb250ZXh0KQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVk
UGFnZVRvcENvbG9yXSk7CiAKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdl
Rm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBAIjxib2R5IHN0eWxlPSdtYXJnaW46IDAnPjxjYW52YXMg
c3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHJlZCc+
PC9jYW52YXM+VGVzdCIpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBf
c2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAg
IEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9z
YW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAK
IFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEhUTUxDYW52YXNXaXRoUmVuZGVyaW5n
Q29udGV4dCkKQEAgLTMyOCw3ICszMjgsNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhp
dFRlc3RCZWZvcmVDU1NUcmFuc2l0aW9uKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hh
bmdlRm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBAIjxib2R5IHN0eWxlPSdtYXJnaW46IDA7IHRyYW5z
aXRpb246IGJhY2tncm91bmQtY29sb3IgMXMnPlRlc3QiKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29y
ZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9T
UkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0
RHVyaW5nQ1NTVHJhbnNpdGlvbikKQEAgLTM2MCw3ICszNjAsNyBAQCBURVNUKFNhbXBsZWRQYWdl
VG9wQ29sb3IsIEhpdFRlc3RBZnRlckNTU1RyYW5zaXRpb24pCiAgICAgLy8gTm90IHNldHRpbmcg
dGhpcyB1bnRpbCBub3cgcHJldmVudHMgdGhlIHNhbXBsaW5nIGxvZ2ljIGZyb20gcnVubmluZyBi
ZWNhdXNlIHdpdGhvdXQgaXQgdGhlIHBhZ2UgaXNuJ3QgY29uc2lkZXJlZCBjb250ZW50ZnVsLgog
ICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5
LnRleHRDb250ZW50ID0gJ1Rlc3QnIl07CiAgICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JU
b0NoYW5nZSh3ZWJWaWV3LmdldCgpKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dl
YlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVk
KTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2Vi
VmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQp
OwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RCZWZvcmVDU1NBbmltYXRp
b24pCkBAIC0zNjksNyArMzY5LDcgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0
QmVmb3JlQ1NTQW5pbWF0aW9uKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFn
ZVRvcENvbG9yXSk7CiAKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9y
SFRNTCh3ZWJWaWV3LmdldCgpLCBAIjxzdHlsZT5Aa2V5ZnJhbWVzIGNoYW5nZUJhY2tncm91bmRS
ZWQgeyB0byB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSB9PC9zdHlsZT48Ym9keSBzdHlsZT0n
bWFyZ2luOiAwOyBhbmltYXRpb246IGNoYW5nZUJhY2tncm91bmRSZWQgMXMgZm9yd2FyZHMgcGF1
c2VkJz5UZXN0Iik7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBF
WFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2Ft
cGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiB9CiAK
IFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdER1cmluZ0NTU0FuaW1hdGlvbikKQEAg
LTM5OSw3ICszOTksNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RBZnRlckNT
U0FuaW1hdGlvbikKICAgICAvLyBOb3Qgc2V0dGluZyB0aGlzIHVudGlsIG5vdyBwcmV2ZW50cyB0
aGUgc2FtcGxpbmcgbG9naWMgZnJvbSBydW5uaW5nIGJlY2F1c2Ugd2l0aG91dCBpdCB0aGUgcGFn
ZSBpc24ndCBjb25zaWRlcmVkIGNvbnRlbnRmdWwuCiAgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSAnVGVzdCciXTsK
ICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlKHdlYlZpZXcuZ2V0KCkpOwot
ICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xv
cl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3Jl
Ojpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9y
XS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VU
b3BDb2xvciwgSGl0VGVzdENTU1BvaW50ZXJFdmVudHNOb25lKQpAQCAtNDA4LDcgKzQwOCw3IEBA
IFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdENTU1BvaW50ZXJFdmVudHNOb25lKQog
ICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlh
dGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHkgc3R5bGU9J21hcmdpbjogMCc+PGRpdiBzdHlsZT0n
d2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBwb2ludGVy
LWV2ZW50czogbm9uZSc+PC9kaXY+VGVzdCJdOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xv
cihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9y
OjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5
KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6
OnJlZCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI1MTY3PiAoU2Ft
cGxlZCBQYWdlIFRvcCBDb2xvcjogaG9vayBpbnRvIHBhaW50aW5nIGxvZ2ljIGluc3RlYWQgb2Yg
dGFraW5nIHNuYXBzaG90cykKQEAgLTQ0MywxMyArNDQzLDEzIEBAIFRFU1QoU2FtcGxlZFBhZ2VU
b3BDb2xvciwgTWFpbkRvY3VtZW50Q2hhbmdlKQogICAgIH1dKTsKIAogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6QCI8Ym9keT5UZXN0Il07Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3
ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6Ondo
aXRlKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShb
d2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3
aGl0ZSk7CiAgICAgRVhQRUNUX0VRKG5vdGlmaWNhdGlvbkNvdW50LCAxVUwpOwogCiAgICAgbm90
aWZpY2F0aW9uQ291bnQgPSAwOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5PlRl
c3QiXTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdl
VG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9F
UShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFn
ZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKICAgICAvLyBEZXBl
bmRpbmcgb24gdGltaW5nLCBhIG5vdGlmaWNhdGlvbiBjYW4gYmUgc2VudCBmb3Igd2hlbiB0aGUg
bWFpbiBkb2N1bWVudCBjaGFuZ2VzIGFuZCB0aGVuCiAgICAgLy8gd2hlbiB0aGUgbmV3IG1haW4g
ZG9jdW1lbnQgcmVuZGVycyBvciBib3RoIGNhbiBiZSBjb2FsZXNjZWQgaWYgcmVuZGVyaW5nIGlz
IGZhc3QgZW5vdWdoLgogICAgIEVYUEVDVF9UUlVFKG5vdGlmaWNhdGlvbkNvdW50ID09IDAgfHwg
bm90aWZpY2F0aW9uQ291bnQgPT0gMik7CkBAIC00NjksNiArNDY5LDYgQEAgVEVTVChTYW1wbGVk
UGFnZVRvcENvbG9yLCBNYWluRG9jdW1lbnRDaGFuZ2UpCiAgICAgbm90aWZpY2F0aW9uQ291bnQg
PSAwOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVu
dGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5PlRlc3QiXTsKLSAgICBFWFBF
Q1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29s
b3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3Vu
ZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0Nv
bG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKICAgICBFWFBFQ1RfRVEobm90aWZpY2F0aW9u
Q291bnQsIDFVTCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5ZDkyN2Yx
MjY1YTM3M2NiZmY1ZDE2NmUyOWMxZDE2ODJmZDY0NzYwLi44NTQwOGU2YTZjYzFlZjgyYzQ2ODFl
ODlmNjAwNzBiOTZjZmM4ZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wOC0xNiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFByZXNlcnZlIGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJyZW50
IGNvbG9yIGluIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSB0ZXN0IGZvciBjYWxsaW5nIGRyYXdUZXh0KCkgd2l0aCBhIGRpc3Bs
YXktcDMgY29sb3IgZmlsbFN0eWxlIG9uCisgICAgICAgIGEgZGlzcGxheS1wMyBjYW52YXMuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQv
Y29sb3Jfc3BhY2UueWFtbDoKKwogMjAyMS0wOC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IHN1cHBv
cnQgZm9yIEJsb2IgVVJMcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJk
LmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2VkZmU5MGZiYjE0YmJmNzk0YWRkNWEzNzBiM2Y5ZmJkZWFlMDQ4YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4
dAorVGVzdCBpZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBj
b2xvcgorQWN0dWFsIG91dHB1dDoKKworUEFTUyBUZXN0IGlmIGRyYXdUZXh0IGNhbiBiZSB1c2Vk
IHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4dC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmRyYXdUZXh0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjZjMzFiZmYxNjMxYWU4ZmUyMDRhNmUxZmE1YjQ5OTE3NjU0MzQzNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5kcmF3VGV4
dC5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJ
VCEgVGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2Vu
dGVzdC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLmRyYXdU
ZXh0PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZhcy9y
ZXNvdXJjZXMvY2FudmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFzcz0ic2hvd19vdXRwdXQiPgor
Cis8aDE+MmQuY29sb3Iuc3BhY2UucDMuZHJhd1RleHQ8L2gxPgorPHAgY2xhc3M9ImRlc2MiPlRl
c3QgaWYgZHJhd1RleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3I8
L3A+CisKKworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlk
PSJjIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFs
bGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQi
PjwvdWw+Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJUZXN0IGlmIGRyYXdUZXh0IGNh
biBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yIik7CitfYWRkVGVzdChmdW5j
dGlvbihjYW52YXMsIGN0eCkgeworCitkZWZlclRlc3QoKTsKKworY29uc3QgZnVsbFJlZEluUDMg
PSBbMjU1LCAwLCAwLCAyNTVdOworY29uc3Qgc1JHQlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1
NV07CisKK2NhbnZhcy53aWR0aCA9IDEwMDsKK2NhbnZhcy5oZWlnaHQgPSAxMDA7CisKK2xldCBm
ID0gbmV3IEZvbnRGYWNlKCJBaGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYpIik7Citkb2N1bWVu
dC5mb250cy5hZGQoZik7CitmLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIHQuc3RlcChm
dW5jdGlvbigpIHsKKyAgICAgICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsKKworICAgICAgICBj
dHguZmlsbFN0eWxlID0gIiNmMDAiOworICAgICAgICBjdHguZmlsbFRleHQoIkEiLCAwLCA1MCk7
CisKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJibGFjayI7CisgICAgICAgIGN0eC5maWxsU3R5
bGUgPSAiY29sb3IoZGlzcGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICBjdHguZmlsbFRleHQo
IkEiLCA1MCwgNTApOworCisgICAgICAgIGxldCBwaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAs
IDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1w
MyIgfSkuZGF0YTsKKyAgICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAg
ICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7CisgICAgICAg
ICAgICByZXR1cm4gW3BpeGVsc1tvZmZzZXRdLCBwaXhlbHNbb2Zmc2V0ICsgMV0sIHBpeGVsc1tv
ZmZzZXQgKyAyXSwgcGl4ZWxzW29mZnNldCArIDNdXTsKKyAgICAgICAgfTsKKworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoNzUsIDI1KSwgZnVsbFJlZEluUDMpOworCisg
ICAgICAgIHQuZG9uZSgpOworICAgIH0pOworfSk7CisKKworfSwge2NvbG9yU3BhY2U6ICJkaXNw
bGF5LXAzIn0pOworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9lbGVtZW50L2Nv
bG9yX3NwYWNlLnlhbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sCmluZGV4
IGU2NGQ2ZmI5Nzc3ZGMwYzU5ZDY2ZjRiYmI2MDkxNTk1NzI2NmMzNjkuLjViYTA4ODVhMDRkNjkx
NTQwNTgwMWRjZWI3YjIzMGUxY2EzZDk2NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9lbGVtZW50
L2NvbG9yX3NwYWNlLnlhbWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFt
bApAQCAtMTc1LDMgKzE3NSw0NCBAQAogICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFs
cyhhY3R1YWxQaXhlbHMsIGV4cGVjdGVkUGl4ZWxzLCAyKTsKICAgICB9KTsKICAgICBpbWFnZS5z
cmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CisKKy0gbmFtZTogMmQuY29sb3Iuc3BhY2UucDMuZHJh
d1RleHQKKyAgdGVzdGluZzoKKyAgLSAyZC5jb2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVz
YzogVGVzdCBpZiBkcmF3VGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBj
b2xvcgorICBhdHRyaWJ1dGVzOiB8CisgICAge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0KKyAg
Y29kZTogfAorICAgIGRlZmVyVGVzdCgpOworCisgICAgY29uc3QgZnVsbFJlZEluUDMgPSBbMjU1
LCAwLCAwLCAyNTVdOworICAgIGNvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVd
OworCisgICAgY2FudmFzLndpZHRoID0gMTAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxMDA7CisK
KyAgICBsZXQgZiA9IG5ldyBGb250RmFjZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIp
OworICAgIGRvY3VtZW50LmZvbnRzLmFkZChmKTsKKyAgICBmLmxvYWQoKS50aGVuKGZ1bmN0aW9u
KCkgeworICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjdHguZm9udCA9
ICI0MHB4IEFoZW0iOworCisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gIiNmMDAiOworICAg
ICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgMCwgNTApOworCisgICAgICAgICAgICBjdHguZmls
bFN0eWxlID0gImJsYWNrIjsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiY29sb3IoZGlz
cGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgNTAsIDUw
KTsKKworICAgICAgICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2Fu
dmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5k
YXRhOworICAgICAgICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAg
ICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAg
ICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4
ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJ
blAzKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBm
dWxsUmVkSW5QMyk7CisKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435811</attachid>
            <date>2021-08-18 16:07:00 -0700</date>
            <delta_ts>2021-08-19 16:40:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210819090658.patch</filename>
            <type>text/plain</type>
            <size>52052</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1MTBmZmVmNWU4ZmMx
NWNhOGI5MjE2NGVlNmRhYzA4Yzg4NjQ5Yi4uZjcxNTIyYWU5ZTI4Y2ExYzgwMTUxMTIzNTM1NTdh
MjE1NjJiYmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIEdQVSBjYW52YXMg
aXMgZW5hYmxlZCwgRHJhd0dseXBoc1JlY29yZGVyIHJlY29yZHMgdGhlIHRleHQgZmlsbCwKKyAg
ICAgICAgc3Ryb2tlLCBhbmQgc2hhZG93IGNvbG9ycyBieSBnZXR0aW5nIHRoZW0gZnJvbSB0aGUg
Y29udGV4dCB1c2luZworICAgICAgICBDR0dTdGF0ZUdldEZpbGxDb2xvciBldGMuICBUaGlzIGlz
IGRvbmUgc28gdGhhdCBjb2xvciBnbHlwaHMgaGF2ZSBlYWNoCisgICAgICAgIHBhcnQgcGFpbnRl
ZCBpbiB0aGUgcmlnaHQgY29sb3IuICBCdXQgdGhlIGN1cnJlbnQgY29udmVyc2lvbiBmcm9tCisg
ICAgICAgIENHQ29sb3IgdG8gV2ViQ29yZTo6Q29sb3IgbG9zc2lseSBjb252ZXJ0cyB0byBzUkdC
LiAgU28gd2UgbmVlZCB0byBnZXQKKyAgICAgICAgdGhlIGNvbG9yIHNwYWNlIGFuZCBjb2xvciBj
b21wb25lbnRzIGZyb20gdGhlIENHQ29sb3IgYW5kIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAg
VGhlIGV4aXN0aW5nIENvbG9yKENHQ29sb3JSZWYpIGNvbnN0cnVjdG9yIGlzIHJlcGxhY2VkIGJ5
IHR3bworICAgICAgICBjb25zdHJ1Y3RvciBmdW5jdGlvbnMsIGNyZWF0ZUFuZFByZXNlcnZlQ29s
b3JTcGFjZSBhbmQKKyAgICAgICAgcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSwgc28gdGhlIGNv
bnZlcnNpb24gYmVoYXZpb3IgaXMgY2xlYXIgYXQgY2FsbAorICAgICAgICBzaXRlcy4gIGNyZWF0
ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSB3aWxsIG1hdGNoIHRoZSBDR0NvbG9yJ3MgY29sb3IKKyAg
ICAgICAgc3BhY2UgdG8gb25lIG9mIHRoZSBwcmVkZWZpbmVkIHNwYWNlcyB0aGF0IFdlYkNvcmU6
OkNvbG9yIGNhbgorICAgICAgICByZXByZXNlbnQuICBJZiBpdCdzIHNvbWUgb3RoZXIgY29sb3Ig
c3BhY2UsIHdlIGNvbnZlcnQgdG8gWFlaIChvbgorICAgICAgICBwbGF0Zm9ybXMgd2hlcmUgdGhh
dCdzIGF2YWlsYWJsZSksIHNpbmNlIHRoYXQgd2lsbCByZXN1bHQgaW4gdGhlIGxlYXN0CisgICAg
ICAgIGxvc3MsIG9yIHRvIHNSR0IgKG9uIHBsYXRmb3JtcyB3aGVyZSBYWVogaXMgbm90IGF2YWls
YWJsZSkuCisKKyAgICAgICAgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UsIHdoaWNoIGlz
IHVzZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKKyAgICAgICAgQ0dDb2xvcidzIGNvbG9yIHNwYWNl
LCBpcyBub3QgdmVyeSBleHBlbnNpdmUsIGJ1dCBpdCB3aWxsIGRvIG1vcmUgdGhhbiBhCisgICAg
ICAgIHBvaW50ZXIgY29tcGFyaXNvbiBpbiBjYXNlIHdlIHBhc3MgaW4gdHdvIENHQ29sb3JTcGFj
ZVJlZnMgdGhhdCBhcmUKKyAgICAgICAgZXF1aXZhbGVudCBidXQgbm90IHRoZSBzYW1lIHBvaW50
ZXIgdmFsdWUuICBTaW5jZSBvdXIgbmV3CisgICAgICAgIGNvbG9yU3BhY2VGb3JDR0NvbG9yU3Bh
Y2UgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHdpdGggQ0dDb2xvcnMgdGhhdCBoYXZlCisgICAgICAg
IGJlZW4gc2V0IFdlYkNvcmUgZHVyaW5nIGNhbnZhcyBkcmF3aW5nLCB3ZSB3aWxsIGdldCBiYWNr
IHRoZSBzYW1lCisgICAgICAgIHBvaW50ZXJzIHRoYXQgd2UgaGF2ZSBjYWNoZWQgaW4gc1JHQkNv
bG9yU3BhY2VSZWYoKSwKKyAgICAgICAgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpLCBldGMuICBJ
ZiBjYWxsaW5nIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlCisgICAgICAgIG9uIGFsbCBv
dXIgc3VwcG9ydGVkIGNvbG9yIHNwYWNlcyB0dXJucyBvdXQgdG8gYmUgdG9vIGV4cGVuc2l2ZSwg
d2UKKyAgICAgICAgY291bGQgc3RhcnQgYnkgZG9pbmcgYSBwb2ludGVyIGNvbXBhcmlzb24gb24g
ZWFjaCBiZWZvcmUgY2FsbGluZworICAgICAgICBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFj
ZS4KKworICAgICAgICBUaGUgd2F5IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UgaXMgd3JpdHRl
biB3ZSBjb3VsZCBlbmQgdXAKKyAgICAgICAgaW5zdGFudGlhdGluZyBhbGwgb2Ygb3VyIHN1cHBv
cnRlZCBjb2xvciBzcGFjZXMsIGlmIGFuIGF1dGhvciB1c2VkIGFuCisgICAgICAgIFhZWiBjb2xv
ciB3aGVuIGRyYXdpbmcgdGV4dCAodGhlIGxhc3QgY29sb3IgcHJvZmlsZSB3ZSBjaGVjaykuICBX
ZQorICAgICAgICBjb3VsZCB0cnkgaGFyZGVyIHRvIGF2b2lkIGRvaW5nIHRoaXMgaWYgaXQncyBp
bXBvcnRhbnQuCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5maWxsVGV4dC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3Bh
Y2UucDMuZmlsbFRleHQuc2hhZG93Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0Lmh0bWwKKworICAgICAgICAqIHBhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91
bmRDU1MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZl
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kQ29udmVydFRv
U1JHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmJh
Y2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVkQmFja2luZ0xh
eWVyIHNldEJvcmRlckNvbG9yOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSk6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kQ29udmVydFRvU1JHQkEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVj
b3JkRHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IpOgor
CiAyMDIxLTA4LTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkMgRGlzcGxheV0gTWFrZSBEaXNwbGF5OjpJbWFnZUJveCBhIENhY2hlZEltYWdl
Q2xpZW50IHRvIGdldCBpbWFnZSByZXBhaW50IHdvcmtpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzQ1YThhYTg4
NzA2M2ZjNDgyMDlhZmJiM2ZmYTdlMGZhODNlMGU2MS4uMmVlMDFlNDQ2NzYyZDE2ZmNjZDZiNjVh
YmMwNmYwMzkwNzdkMzVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wOC0xOCAg
Q2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZl
IGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlMaXN0OjpE
cmF3R2x5cGhzUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTAyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE4Mjg0Nzc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGV4aXN0
aW5nIENHQ29sb3IgLT4gV2ViQ29yZTo6Q29sb3IgY29udmVyc2lvbnMgdG8gYmUgZXhwbGljaXQK
KyAgICAgICAgYWJvdXQgbG9zc2lseSBjb252ZXJ0aW5nIHRvIHNSR0IuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNl
dFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1
Z2luKToKKwogMjAyMS0wOC0xNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEJ1ZyAyMjkxMTI6IFRocmVhZFNhbml0aXplcjogZGF0YSByYWNlcyBvZiBXVEY6
OlN0cmluZyBpbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXgg
ZDEwZTMzNTFmMzNlNDA3YmRhMjUzYzdlZWQzYTE0NjhhMmJjMmQ0ZS4uMGJhMWM4YjEyMTI3M2Zk
MzlkNzY5MWRjODJjMjQzMjYzM2JiNjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTMxNyw3ICszMTcsNyBA
QCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NT
KCkgY29uc3QKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAgICAg
UmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNl
Q29weVdpbmRvd0NvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9y
KSk7CiAKLSAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xvci5nZXQoKSk7CisgICAgQ29sb3Igd2lu
ZG93Q29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvci5nZXQoKSkpOwogICAgIGlm
ICghd2luZG93Q29sb3IuaXNWYWxpZCgpKQogICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0
cmFuc3BhcmVudEJsYWNrOwogCkBAIC0zNDIsNyArMzQyLDcgQEAgU3RyaW5nIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIAogICAgIFJldGFpblB0cjxDR0Nv
bG9yUmVmPiBjb2xvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5k
Q29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKLSAgICBD
b2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOworICAgIENvbG9yIGJhY2tncm91bmRD
b2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yLmdldCgpKSk7CiAgICAgaWYgKCFi
YWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZh
dWx0QmFja2dyb3VuZENvbG9yOwogCkBAIC0zNTYsNyArMzU2LDggQEAgU3RyaW5nIENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25zdAogQ29s
b3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yKGJvb2wm
IGltcG9ydGFudCkgY29uc3QKIHsKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVo
YXZpb3I7Ci0gICAgQ29sb3IgdGV4dENvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNl
Q29weUZvcmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhh
dmlvcikpLmdldCgpOworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0Yo
TUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKS5nZXQoKTsKKyAgICBDb2xvciB0ZXh0Q29sb3Iocm91
bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvci5nZXQoKSkpOwogICAgIGlmICghdGV4dENvbG9y
LmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUg
c2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lci4KICAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6
OndoaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggMDJl
ZTBiNjhiMjkxYTY0MzU3Zjc3OTgxN2FiNjM2YjE3ODNmNzM5OC4uNTc4NTU2ZTdhZjlkZDZkYzIw
NWQ4ZjQyMjlhMzFhNTAyZTU4ZDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0Uo
Q0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ0dDb2xvclJlZiwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9yIGNyZWF0ZUFuZFByZXNl
cnZlQ29sb3JTcGFjZShDR0NvbG9yUmVmLCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMjA3LDYgKzIwNywxMCBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgQ29sb3IoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYsIENvbG9yU3BhY2UsIE9w
dGlvblNldDxGbGFncz4gPSB7IH0pOwogCisjaWYgVVNFKENHKQorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBDb2xvciBjcmVhdGVBbmRDb252ZXJ0VG9TUkdCQShDR0NvbG9yUmVmLCBPcHRpb25T
ZXQ8RmxhZ3M+ID0geyB9KTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBGbGFnc0luY2x1ZGlu
Z1ByaXZhdGUgOiB1aW50OF90IHsKICAgICAgICAgU2VtYW50aWMgICAgICAgICAgICAgICAgICAg
ICAgICA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEZsYWdzOjpTZW1hbnRpYyksCiAgICAgICAgIFVz
ZUNvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uICAgPSBzdGF0aWNfY2FzdDx1aW50OF90PihGbGFn
czo6VXNlQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24pLApAQCAtMjY4LDYgKzI3Miw3IEBAIGJv
b2wgb3V0T2ZMaW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihjb25zdCBD
b2xvciYsIGNvbnN0IENvbG9yJik7CiAjaWYgVVNFKENHKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7CiBXRUJDT1JFX0VYUE9SVCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNw
YWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5k
QW5kQ2xhbXBUb1NSR0JBTG9zc3koQ0dDb2xvclJlZik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENv
bG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDAyYTI2ZDU3YjU1
ZWNhZGU0M2M1ZjJlZTM5NWY4MzMyOTI2ODc5YTkuLjJkMjg3MTY3N2ExNzdiYmU2ZjQ4Nzg4ZWQ4
NDNlMWY1NWFkZTZhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC04
MjAsNyArODIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0TWFnbmlmaWNhdGlv
bkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQogCiBDb2xvciBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
YmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fbGF5ZXIgYmFja2dyb3Vu
ZENvbG9yXTsKKyAgICByZXR1cm4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbbV9sYXllciBi
YWNrZ3JvdW5kQ29sb3JdKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5n
TGF5ZXIubW0KaW5kZXggODI3YjkzMTQ4YmFlMzc2ZWI1MmU4MDc1MTdlYjE0ZWUxNDVhZTQ0OC4u
MGM3MWQ0MzhlZTQzNTkzNTE2MDkzZjgzYWMxYjRhNzQyMTNmMjgwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2Vi
VGlsZWRCYWNraW5nTGF5ZXIubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCAtICh2b2lkKWludmFsaWRh
dGUKIAogLSAodm9pZClzZXRCb3JkZXJDb2xvcjooQ0dDb2xvclJlZilib3JkZXJDb2xvcgogewot
ICAgIF90aWxlQ29udHJvbGxlci0+c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoV2ViQ29yZTo6Q29s
b3IoYm9yZGVyQ29sb3IpKTsKKyAgICBfdGlsZUNvbnRyb2xsZXItPnNldFRpbGVEZWJ1Z0JvcmRl
ckNvbG9yKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koYm9yZGVyQ29sb3IpKTsK
IH0KIAogLSAodm9pZClzZXRCb3JkZXJXaWR0aDooQ0dGbG9hdClib3JkZXJXaWR0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCBkYWJj
N2U3NzM0MDA1NTA0NTFmMjcwNGUxMWM4MThmY2M2ZDJjODUyLi43YTkyZDg1YzFlMWIzZThmMjY4
NWNlNzEwMTRkMjRjOTBiMWU4MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtNTQsOSArNTQsMTAgQEAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29s
b3JSZWY+PjoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNvbG9y
KQorc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3Nz
eShDR0NvbG9yUmVmIGNvbG9yKQogewotICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVl
ZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KKyAgICAvLyBGSVhNRTogSW50ZXJwcmV0aW5nIGNv
bXBvbmVudHMgb2YgYSBjb2xvciBpbiBhbiBhcmJpdHJhcnkgY29sb3Igc3BhY2UKKyAgICAvLyBh
cyBzUkdCIGNvdWxkIGJlIHdyb25nLCBub3QganVzdCBsb3NzeS4KIAogICAgIGlmICghY29sb3Ip
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04Nyw5ICs4OCw1MiBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShD
R0NvbG9yUmVmIGNvbG9yKQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+
KG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4ociwgZywgYiwgYSApKTsK
IH0KIAotQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxh
Z3MpCi0gICAgOiBDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSwgZmxhZ3Mp
CitDb2xvciBDb2xvcjo6Y3JlYXRlQW5kQ29udmVydFRvU1JHQkEoQ0dDb2xvclJlZiBjb2xvciwg
T3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKKyAgICBhdXRvIHNvdXJjZUNHQ29sb3JTcGFjZSA9
IENHQ29sb3JHZXRDb2xvclNwYWNlKGNvbG9yKTsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFla
X0NPTE9SX1NQQUNFKQorICAgIGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3BhY2UgPSB4eXpDb2xv
clNwYWNlUmVmKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbkNvbG9yU3BhY2UgPSBDb2xvclNwYWNl
OjpYWVpfRDUwOworI2Vsc2UKKyAgICBhdXRvIGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlID0gc1JH
QkNvbG9yU3BhY2VSZWYoKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0I7CisjZW5kaWYKKyAgICBBU1NFUlQoQ0dDb2xvclNwYWNlR2V0TnVtYmVyT2ZD
b21wb25lbnRzKGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlKSA9PSAzKTsKKworICAgIGF1dG8gc291
cmNlQ29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKKyAgICBDR0Zsb2F0
IGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSB7IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFk
b3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShkZXN0aW5hdGlvbkNHQ29sb3JTcGFjZSwgbnVs
bHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNv
bXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBzb3VyY2VDR0NvbG9yU3BhY2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBmbG9hdCBhID0gZGVz
dGluYXRpb25Db21wb25lbnRzWzBdOworICAgIGZsb2F0IGIgPSBkZXN0aW5hdGlvbkNvbXBvbmVu
dHNbMV07CisgICAgZmxvYXQgYyA9IGRlc3RpbmF0aW9uQ29tcG9uZW50c1syXTsKKyAgICBmbG9h
dCBhbHBoYSA9IENHQ29sb3JHZXRBbHBoYShjb2xvcik7CisKKyAgICByZXR1cm4gQ29sb3IoT3V0
T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKHsgYSwgYiwgYywgYWxwaGEgfSksIGRlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgZmxhZ3MpOworfQorCitDb2xvciBDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVD
b2xvclNwYWNlKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCit7Cisg
ICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBzaXplX3QgbnVt
Q29tcG9uZW50cyA9IENHQ29sb3JHZXROdW1iZXJPZkNvbXBvbmVudHMoY29sb3IpOworICAgIGF1
dG8gY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvckdldENvbG9y
U3BhY2UoY29sb3IpKTsKKworICAgIGlmIChudW1Db21wb25lbnRzICE9IDQgfHwgIWNvbG9yU3Bh
Y2UpCisgICAgICAgIHJldHVybiBjcmVhdGVBbmRDb252ZXJ0VG9TUkdCQShjb2xvciwgZmxhZ3Mp
OworCisgICAgY29uc3QgQ0dGbG9hdCogY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRz
KGNvbG9yKTsKKworICAgIGZsb2F0IGEgPSBjb21wb25lbnRzWzBdOworICAgIGZsb2F0IGIgPSBj
b21wb25lbnRzWzFdOworICAgIGZsb2F0IGMgPSBjb21wb25lbnRzWzJdOworICAgIGZsb2F0IGFs
cGhhID0gY29tcG9uZW50c1szXTsKKworICAgIHJldHVybiBDb2xvcihPdXRPZkxpbmVDb21wb25l
bnRzOjpjcmVhdGUoeyBhLCBiLCBjLCBhbHBoYSB9KSwgKmNvbG9yU3BhY2UsIGZsYWdzKTsKIH0K
IAogc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9yU3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4+IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbXBvbmVudHMpCkBAIC0xODEsNiArMjI1
LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBv
bmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3AKICAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0
Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JT
cGFjZSgpLCBudWxscHRyKSk7CiAgICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29u
dmVydENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNv
bXBvbmVudHMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIC8vIEZJ
WE1FOiBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyBkb2Vzbid0IGNvcHkg
b3ZlciBhbnkgYWxwaGEgY29tcG9uZW50LgogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0
PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRp
b25Db21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50
c1syXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
U3BhY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuY3BwCmluZGV4IDE0OTFlNDFiOTBjZTlkZGM2ZTc4ZWViY2EyMDhlZjM4ZjdiMmFjOGEu
LjhjODFjMTBmNzgxNjUzMDdlOWVkMjM1OGM2ZDA3MzViODQ0OTJkNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcApAQCAt
MTA4LDYgKzEwOCw0NiBAQCBDR0NvbG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB9CiAj
ZW5kaWYKIAorc3RkOjpvcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNw
YWNlKENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQoreworICAgIGlmIChDR0NvbG9yU3BhY2VF
cXVhbFRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAg
ICAgcmV0dXJuIENvbG9yU3BhY2U6OlNSR0I7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfQURP
QkVfUkdCXzE5OThfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xv
clNwYWNlKGNvbG9yU3BhY2UsIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKSkpCisgICAgICAg
IHJldHVybiBDb2xvclNwYWNlOjpBOThSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19ESVNQTEFZX1AzX0NPTE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRv
Q29sb3JTcGFjZShjb2xvclNwYWNlLCBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkpKQorICAgICAg
ICByZXR1cm4gQ29sb3JTcGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTog
bGFiQ29sb3JTcGFjZVJlZigpIG5vdCBpbXBsZW1lbnRlZC4KKworI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxU
b0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAg
ICAgIHJldHVybiBDb2xvclNwYWNlOjpMaW5lYXJTUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfUk9NTVJHQl9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1
YWxUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAg
ICAgIHJldHVybiBDb2xvclNwYWNlOjpQcm9QaG90b1JHQjsKKyNlbmRpZgorCisjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNl
RXF1YWxUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpKSkK
KyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6OlJlYzIwMjA7CisjZW5kaWYKKworI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFs
VG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIHh5ekNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJl
dHVybiBDb2xvclNwYWNlOjpYWVpfRDUwOworI2VuZGlmCisKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCmluZGV4IGRiNjA0MTBlNmQ0NzNh
Y2E3ZWE3YTE5NGNjNzhjOTY0Yzk4YmEzNzMuLjAzMjkzMGY1MmI4MTU2N2Y1ZDllYWE5NmRkNTEz
NzdjY2Q1NzhlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogdHlwZWRlZiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7CiAKQEAgLTY1LDYgKzY2LDggQEAgV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpOwogI2VuZGlmCiAK
K3N0ZDo6b3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0Nv
bG9yU3BhY2VSZWYpOworCiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxs
YWJsZUNHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChj
b2xvclNwYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggYmVlMTk0ZDUzM2ExOTAzZDYz
NGQ2OTJkNTYzM2Q3MzMzMjYzMDYxYy4uYTFiZTNjZGI5M2FiNDBiZGNlYjBlOTllYjhiYWRhMzVi
YTc3NDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMjYxLDcgKzI2MSw4IEBAIHZvaWQg
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKICAgICBj
b25zdCBhdXRvJiBzaGFkb3dTdHlsZSA9ICpzdGF0aWNfY2FzdDxjb25zdCBDR1NoYWRvd1N0eWxl
Kj4oQ0dTdHlsZUdldERhdGEoc3R5bGUpKTsKICAgICBhdXRvIHJhZCA9IGRlZzJyYWQoc2hhZG93
U3R5bGUuYXppbXV0aCAtIDE4MCk7CiAgICAgYXV0byBzaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUo
c3RkOjpjb3MocmFkKSwgc3RkOjpzaW4ocmFkKSkgKiBzaGFkb3dTdHlsZS5oZWlnaHQ7Ci0gICAg
dXBkYXRlU2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93U3R5bGUucmFkaXVzLCBDR1N0eWxlR2V0
Q29sb3Ioc3R5bGUpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKKyAgICBhdXRvIHNo
YWRvd0NvbG9yID0gQ0dTdHlsZUdldENvbG9yKHN0eWxlKTsKKyAgICB1cGRhdGVTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNv
bG9yU3BhY2Uoc2hhZG93Q29sb3IpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKIH0K
IAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdT
dGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3QpCkBAIC0zMzAsOCArMzMxLDEwIEBA
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3Rh
dGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAgICAgICAgIGN0bUZpeHVwID0gQWZmaW5lVHJhbnNm
b3JtKCk7CiAgICAgbV9vd25lci5jb25jYXRDVE0oY3RtRml4dXApOwogCi0gICAgdXBkYXRlRmls
bENvbG9yKENHR1N0YXRlR2V0RmlsbENvbG9yKGdzdGF0ZSkpOwotICAgIHVwZGF0ZVN0cm9rZUNv
bG9yKENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0YXRlKSk7CisgICAgYXV0byBmaWxsQ29sb3Ig
PSBDR0dTdGF0ZUdldEZpbGxDb2xvcihnc3RhdGUpOworICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBD
R0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdzdGF0ZSk7CisgICAgdXBkYXRlRmlsbENvbG9yKENvbG9y
OjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7CisgICAgdXBkYXRlU3Ry
b2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikp
OwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCiAgICAgbV9v
d25lci5hcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwg
Z2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1
cnJlbnRUZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2lu
dChwb3NpdGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGY1OTZlZmFl
ZWYzZDVmOTcxNTdhOTFhOTg5ZDA5OWNiYzEwNWQyYS4uNjQwYTQ1MjZjNTdhZWVlMWY5MTJkZTdm
NTYzZTYzNzMxMjZmMTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMTUsNyArMzE1LDcgQEAgQ29sb3IgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpjb2xvcigpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6VUlDb2xvclBib2FyZFR5cGVdOwogICAgIFVJQ29s
b3IgKnVpQ29sb3IgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3M6
UEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBmcm9tRGF0YTpkYXRhIGVycm9yOm5pbF07Ci0gICAgcmV0
dXJuIENvbG9yKHVpQ29sb3IuQ0dDb2xvcik7CisgICAgcmV0dXJuIHJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3kodWlDb2xvci5DR0NvbG9yKTsKIH0KIAogVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6
dXJsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1
NDc5OTE4YTI4ZTA1YjliN2YwMjkwN2U0NGVlMDcxODc1OGIzMzAyLi4xMzZkMDA1Yzk5ZTc2YWUy
ODVmZWQ3YmMxYTRmZTk3OWViNzI0NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9y
PENTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbj4mIGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZv
cm1hdAogc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21D
U1NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24oQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0
aW9uIHN5c3RlbUNvbG9ySW5mb3JtYXRpb24sIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCiB7CiAg
ICAgaWYgKGF1dG8gY29sb3IgPSB3dGZPYmpDTXNnU2VuZDxVSUNvbG9yICo+KFBBTDo6Z2V0VUlD
b2xvckNsYXNzKCksIHN5c3RlbUNvbG9ySW5mb3JtYXRpb24uc2VsZWN0b3IpKSB7Ci0gICAgICAg
IENvbG9yIHN5c3RlbUNvbG9yID0geyBjb2xvci5DR0NvbG9yLCBDb2xvcjo6RmxhZ3M6OlNlbWFu
dGljIH07CisgICAgICAgIENvbG9yIHN5c3RlbUNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9z
c3koY29sb3IuQ0dDb2xvciksIENvbG9yOjpGbGFnczo6U2VtYW50aWMpOwogCiAgICAgICAgIGlm
IChzeXN0ZW1Db2xvckluZm9ybWF0aW9uLm9wYWNpdHkgPCAxLjBmKQogICAgICAgICAgICAgc3lz
dGVtQ29sb3IgPSBzeXN0ZW1Db2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzeXN0ZW1D
b2xvckluZm9ybWF0aW9uLm9wYWNpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2RjZDM5N2FkODVjY2ZiN2JiMWZkMGU1ZTM4ZWQy
OGU5MmU3MzI0ZC4uZjJjOWJhZTE4NjA4NTAxZmEyYzI1ZTEwODZkOGY4NGFhMDJkYzdmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0x
Nzg0LDcgKzE3ODQsNyBAQCAtIChDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
CiAKIC0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKIHsKLSAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7CisgICAgX3BhZ2UtPnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3kodW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUuQ0dDb2xvcikpOwogfQogCiArIChCT09MKWF1dG9tYXRpY2FsbHlOb3RpZmll
c09ic2VydmVyc09mVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CmluZGV4IGI1NjJmYTRhMDgzYWY1OThmNjc3MzliNWI2OWI5MDY1OTY3MWIzNjIuLjM1YzIyNWYz
Y2Q2Nzg5YWUyMDQzZjk2MWU5MDA1YzUzNGViZTRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CkBAIC02Nyw3ICs2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopYURlY29kZXIKICAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCiAgICAgICAg
IFVSTChzdGFydFVSTCksCi0gICAgICAgIFdlYkNvcmU6OkNvbG9yKHRoZW1lQ29sb3IuQ0dDb2xv
ciksCisgICAgICAgIFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3kodGhlbWVDb2xv
ci5DR0NvbG9yKSwKICAgICB9OwogCiAgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KHNlbGYsIFdURk1vdmUoY29yZUFwcGxpY2F0aW9u
TWFuaWZlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZp
ZXdJT1MubW0KaW5kZXggMWYwZGFmY2Q4ZmE4NjhjZDEyNDY5MGNhN2VjYzdjYmY0YzhhMTFlZS4u
ZjgxNTdkZjU2OGFkNGVjNDljMzQxMjA0ZDAwY2I4NjA0MWM1ZGI0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTQ4MSw3ICs0ODEs
NyBAQCBlbnVtIGNsYXNzIEFsbG93UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlIDogYm9vbCB7
IE5vLCBZZXMgfTsKIHN0YXRpYyBXZWJDb3JlOjpDb2xvciBiYXNlU2Nyb2xsVmlld0JhY2tncm91
bmRDb2xvcihXS1dlYlZpZXcgKndlYlZpZXcsIEFsbG93UGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlIGFsbG93UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQogewogICAgIGlmICh3ZWJWaWV3
LT5fY3VzdG9tQ29udGVudFZpZXcpCi0gICAgICAgIHJldHVybiBbd2ViVmlldy0+X2N1c3RvbUNv
bnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXctPl9jdXN0b21Db250ZW50Vmll
dyBiYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOwogCiAgICAgaWYgKHdlYlZpZXctPl9nZXN0dXJl
Q29udHJvbGxlcikgewogICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IHdlYlZpZXctPl9n
ZXN0dXJlQ29udHJvbGxlci0+YmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCk7CkBA
IC01MDcsMTEgKzUwNywxMSBAQCBzdGF0aWMgV2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tn
cm91bmRDb2xvcihXS1dlYlZpZXcgKndlYlZpZXcsIEFsbG93UGFnZUJhYwogICAgIFdlYkNvcmU6
OkNvbG9yIGNvbG9yID0gYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldywgYWxs
b3dQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOwogCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlk
KCkgJiYgd2ViVmlldy0+X2NvbnRlbnRWaWV3KQotICAgICAgICBjb2xvciA9IFt3ZWJWaWV3LT5f
Y29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFdl
YkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXctPl9jb250ZW50VmlldyBi
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOwogCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpIHsK
ICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBjb2xvciA9IFVJQ29sb3Iu
c3lzdGVtQmFja2dyb3VuZENvbG9yLkNHQ29sb3I7CisgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6
cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5D
R0NvbG9yKTsKICNlbHNlCiAgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6Q29sb3I6OndoaXRlOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggMWJkMzMwNjVmMTBjMTcwZDA2NmNjYjdhNmY2YTVjNWU4NjMxODhkZi4uOTRl
MjNjZGE0ODg5NTc3MDdiYTNkMDRmZTdiODliNWJjNWVkYTEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAyMCw3ICsxMDIw
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmEKIAogV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVu
dEltcGw6OmNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKCkKIHsKLSAgICByZXR1cm4gW21fY29u
dGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5DR0NvbG9yOworICAgIHJldHVybiBXZWJDb3JlOjpy
b3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFttX2NvbnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvcik7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RTY3JvbGxUb1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBjOTM5NjY3ODI5OWUyNjRiZDEyOTY3NzIyNTdjN2QzYWFlZTAyNmNk
Li4xZjEyMmVhNzQxZjc5YzU0MDIyODJhZDU4NjU1ZWM3NWJmYTE5MjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTM2MzUsNyArMzYzNSw4IEBAIC0gKHZvaWQpX3NldEZvbnRTaXplRm9yV2ViVmlldzoo
Q0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlcgogCiAtICh2b2lkKV9zZXRUZXh0Q29s
b3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKIHsKLSAgICBf
cGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlhbGl6
YXRpb25Gb3JIVE1MKFdlYkNvcmU6OkNvbG9yKGNvbG9yLkNHQ29sb3IpKSk7CisgICAgV2ViQ29y
ZTo6Q29sb3IgdGV4dENvbG9yKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29s
b3IuQ0dDb2xvcikpOworICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciJf
cywgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwodGV4dENvbG9yKSk7CiB9CiAKIC0gKHZv
aWQpdG9nZ2xlU3RyaWtlVGhyb3VnaEZvcldlYlZpZXc6KGlkKXNlbmRlcgpAQCAtNDg3Niw3ICs0
ODc3LDcgQEAgLSAodm9pZCl1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlOihOU1N0cmluZyAqKXZh
bHVlCiAKIC0gKHZvaWQpdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZUFzQ29sb3I6KFVJQ29sb3Ig
Kil2YWx1ZQogewotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKHZhbHVlLkNHQ29sb3IpOworICAg
IFdlYkNvcmU6OkNvbG9yIGNvbG9yKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3ko
dmFsdWUuQ0dDb2xvcikpOwogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nID0gV2ViQ29yZTo6c2Vy
aWFsaXphdGlvbkZvckhUTUwoY29sb3IpOwogCiAgICAgX3BhZ2UtPnNldEZvY3VzZWRFbGVtZW50
VmFsdWUoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQsIHZhbHVlQXNT
dHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggNTU1MzE3ZjczMGVmNDBhMDZmOTA2ZDQyYjY5ZjQwMzZkN2YwM2Q5YS4uMDlkNGNm
ZjIyODk1ODY1NzFiMGUyYjJkMmJjYzk5MDgzZThkOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTY1LDkgKzE1NjUsOSBAQCBD
b2xvciBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9yOwogCiAjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICByZXR1cm4gVUlDb2xvci5zeXN0ZW1CYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5DR0NvbG9yKTsKICNlbHNlCi0g
ICAgcmV0dXJuIFVJQ29sb3Iud2hpdGVDb2xvci5DR0NvbG9yOworICAgIHJldHVybiBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGU7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYmUxNDRiYjM3ZDkzMTI5ZjNhODY0MzczNTFi
OTg4YmJmNTU1MThhNi4uNzIwMGU5NjA2NjAyYzZkZWNlM2RkNmM4NTRiNzhlNGNiYTYxMjY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC03MjgsOSArNzI4LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVVuaXZlcnNhbEFjY2Vz
c1pvb21Gb2N1cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmUKIENvbG9yIFdlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogI2lmIEVO
QUJMRShEQVJLX01PREVfQ1NTKQotICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3JvdW5k
Q29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFM
b3NzeShOU0NvbG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CiAjZWxzZQotICAg
IHJldHVybiBOU0NvbG9yLndoaXRlQ29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Q29sb3I6OndoaXRlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDc3NDI2YjdjZGQ2M2MyZTcwNzY0ZjE0
ZjgwNTc4NDVhZDU3MmQwOWUuLjVlZGEzNzZhY2Q0ZjhmMjAyY2FkZWRmNDA2YjNhYjhlNDY5MDhl
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtNjI0LDcgKzYyNCw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihX
ZWJGcmFtZSYgZnJhbWUpCiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuY29yZUZyYW1l
KCktPmRvY3VtZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83NTMz
Mjk0OD4gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUERGS2l0IGluc3RlYWQgb2YgaGFy
ZGNvZGluZyBpdAotICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgV2ViQ29y
ZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoW0NvY29hQ29sb3IgZ3JheUNvbG9yXS5DR0NvbG9yKSk7
CisgICAgICAgIGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KFdlYkNvcmU6OkNTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxp
emF0aW9uRm9ySFRNTChXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtDb2NvYUNv
bG9yIGdyYXlDb2xvcl0uQ0dDb2xvcikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3Jt
cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCAwZDdmMGQyODQ2YThiZmY5OTA1YmRmNDc0N2ZhOTA3MzEyMDQyNDdiLi40MzEwMjA2OWUyNDQ2
YjNkNTA2MTZkZGU0MDk5ZjdjZDhkMGZiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTQ0Myw3ICs0NDMsNyBAQCAtICh2b2lkKV91cGRhdGVC
YWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuCiAgICAgICAgICAgICBXZWJDb3JlOjpD
b2xvciBjb2xvciA9IFdlYkNvcmU6OmNvbG9yRnJvbU5TQ29sb3IoW2JhY2tncm91bmRDb2xvciBj
b2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSk7CiAgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbHNlCi0gICAgICAgICAg
ICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKGJhY2tncm91bmRDb2xvcik7
CisgICAgICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcihXZWJDb3JlOjpyb3VuZEFuZENsYW1w
VG9TUkdCQUxvc3N5KGJhY2tncm91bmRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgICAgICB2aWV3
LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHZpZXctPnNldFNo
b3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuKFt3ZWJWaWV3IHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2Ny
ZWVuXSk7CkBAIC0xMzg4LDcgKzEzODgsNyBAQCAtIChOU1JlY3QpcmVjdEZvclNjcm9sbFRvVmlz
aWJsZQogCiAtICh2b2lkKXNldENhcmV0Q29sb3I6KENHQ29sb3JSZWYpY29sb3IKIHsKLSAgICBX
ZWJDb3JlOjpDb2xvciBxQ29sb3IgPSBjb2xvciA/IFdlYkNvcmU6OkNvbG9yKGNvbG9yKSA6IFdl
YkNvcmU6OkNvbG9yOjpibGFjazsKKyAgICBXZWJDb3JlOjpDb2xvciBxQ29sb3IgPSBjb2xvciA/
IFdlYkNvcmU6OkNvbG9yKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3Ip
KSA6IFdlYkNvcmU6OkNvbG9yOjpibGFjazsKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBj
b3JlKHNlbGYpOwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJldENvbG9yKHFDb2xvcik7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDY3NjM4ZDNmMzE0MmU4Y2M2MTg5YTVlMTZiMzNlMmMyYjNlYTJjOC4uNDlkNDhhYjNhMDAzMTQ0
NmM2MTcyNzFiMzc4OGU0YzM1OGVhM2JlMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTE4ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29sb3Ig
c3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZXhpc3RpbmcgQ0dD
b2xvciAtPiBXZWJDb3JlOjpDb2xvciBjb252ZXJzaW9ucyB0byBiZSBleHBsaWNpdAorICAgICAg
ICBhYm91dCBsb3NzaWx5IGNvbnZlcnRpbmcgdG8gc1JHQi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbToKKyAgICAgICAg
KFRFU1QpOgorCiAyMDIxLTA4LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIEZpeCBTVk4gcmVsYXRpdmUgVVJMIHBhcnNpbmcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxl
ZFBhZ2VUb3BDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbQppbmRleCA3YTZiZTA5YTMxNzUxZWJjZDRjMGY3YTAzN2Qy
MTZlOGU5ZDk1NTg5Li40NmVjNGJlZmIzYjIwODc3N2Y2NjE3ZmY1ZTY0OWViZWVkMTI3MWE2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQ
YWdlVG9wQ29sb3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCkBAIC0xNDksNyArMTQ5LDcgQEAgVEVTVChTYW1wbGVk
UGFnZVRvcENvbG9yLCBTb2xpZENvbG9yKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hh
bmdlRm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9w
cygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNv
cmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29y
ZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6cmVkKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBEaWZmZXJlbnRD
b2xvcnNXaXRob3V0T3V0bGllckJlbG93TWF4RGlmZmVyZW5jZSkKQEAgLTMwMSw3ICszMDEsNyBA
QCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RIVE1MQ2FudmFzV2l0aG91dFJlbmRl
cmluZ0NvbnRleHQpCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdKTsKIAogICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdl
YlZpZXcuZ2V0KCksIEAiPGJvZHkgc3R5bGU9J21hcmdpbjogMCc+PGNhbnZhcyBzdHlsZT0nd2lk
dGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogcmVkJz48L2NhbnZhcz5U
ZXN0Iik7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFn
ZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VR
KFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdl
VG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0KIAogVEVTVChTYW1w
bGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0SFRNTENhbnZhc1dpdGhSZW5kZXJpbmdDb250ZXh0KQpA
QCAtMzI4LDcgKzMyOCw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEJlZm9y
ZUNTU1RyYW5zaXRpb24pCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9w
Q29sb3JdKTsKIAogICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1M
KHdlYlZpZXcuZ2V0KCksIEAiPGJvZHkgc3R5bGU9J21hcmdpbjogMDsgdHJhbnNpdGlvbjogYmFj
a2dyb3VuZC1jb2xvciAxcyc+VGVzdCIpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihb
d2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3
aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3ko
W3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpOwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3REdXJpbmdDU1NU
cmFuc2l0aW9uKQpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwg
SGl0VGVzdEFmdGVyQ1NTVHJhbnNpdGlvbikKICAgICAvLyBOb3Qgc2V0dGluZyB0aGlzIHVudGls
IG5vdyBwcmV2ZW50cyB0aGUgc2FtcGxpbmcgbG9naWMgZnJvbSBydW5uaW5nIGJlY2F1c2Ugd2l0
aG91dCBpdCB0aGUgcGFnZSBpc24ndCBjb25zaWRlcmVkIGNvbnRlbnRmdWwuCiAgICAgW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkudGV4dENvbnRl
bnQgPSAnVGVzdCciXTsKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlKHdl
YlZpZXcuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2Ft
cGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1w
bGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIFRF
U1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEJlZm9yZUNTU0FuaW1hdGlvbikKQEAgLTM2
OSw3ICszNjksNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RCZWZvcmVDU1NB
bmltYXRpb24pCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3Jd
KTsKIAogICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZp
ZXcuZ2V0KCksIEAiPHN0eWxlPkBrZXlmcmFtZXMgY2hhbmdlQmFja2dyb3VuZFJlZCB7IHRvIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IH08L3N0eWxlPjxib2R5IHN0eWxlPSdtYXJnaW46IDA7
IGFuaW1hdGlvbjogY2hhbmdlQmFja2dyb3VuZFJlZCAxcyBmb3J3YXJkcyBwYXVzZWQnPlRlc3Qi
KTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9w
Q29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShX
ZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRv
cENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKIH0KIAogVEVTVChTYW1w
bGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0RHVyaW5nQ1NTQW5pbWF0aW9uKQpAQCAtMzk5LDcgKzM5
OSw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEFmdGVyQ1NTQW5pbWF0aW9u
KQogICAgIC8vIE5vdCBzZXR0aW5nIHRoaXMgdW50aWwgbm93IHByZXZlbnRzIHRoZSBzYW1wbGlu
ZyBsb2dpYyBmcm9tIHJ1bm5pbmcgYmVjYXVzZSB3aXRob3V0IGl0IHRoZSBwYWdlIGlzbid0IGNv
bnNpZGVyZWQgY29udGVudGZ1bC4KICAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCA9ICdUZXN0JyJdOwogICAgIHdhaXRG
b3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2Uod2ViVmlldy5nZXQoKSk7Ci0gICAgRVhQRUNU
X0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9y
KSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3Ip
LCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBI
aXRUZXN0Q1NTUG9pbnRlckV2ZW50c05vbmUpCkBAIC00MDgsNyArNDA4LDcgQEAgVEVTVChTYW1w
bGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0Q1NTUG9pbnRlckV2ZW50c05vbmUpCiAgICAgRVhQRUNU
X05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKIAogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nbWFyZ2luOiAwJz48ZGl2IHN0eWxlPSd3aWR0aDogMTAw
JTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHBvaW50ZXItZXZlbnRzOiBu
b25lJz48L2Rpdj5UZXN0Il07Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3
IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Cisg
ICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcg
X3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0K
IAogLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVkIFBhZ2Ug
VG9wIENvbG9yOiBob29rIGludG8gcGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtpbmcgc25h
cHNob3RzKQpAQCAtNDQzLDEzICs0NDMsMTMgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBN
YWluRG9jdW1lbnRDaGFuZ2UpCiAgICAgfV0pOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpA
Ijxib2R5PlRlc3QiXTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3Nh
bXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAg
IEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9z
YW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKICAg
ICBFWFBFQ1RfRVEobm90aWZpY2F0aW9uQ291bnQsIDFVTCk7CiAKICAgICBub3RpZmljYXRpb25D
b3VudCA9IDA7CiAKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRX
YWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHk+VGVzdCJdOwotICAg
IEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0u
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6
OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3Jd
LkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogICAgIC8vIERlcGVuZGluZyBvbiB0
aW1pbmcsIGEgbm90aWZpY2F0aW9uIGNhbiBiZSBzZW50IGZvciB3aGVuIHRoZSBtYWluIGRvY3Vt
ZW50IGNoYW5nZXMgYW5kIHRoZW4KICAgICAvLyB3aGVuIHRoZSBuZXcgbWFpbiBkb2N1bWVudCBy
ZW5kZXJzIG9yIGJvdGggY2FuIGJlIGNvYWxlc2NlZCBpZiByZW5kZXJpbmcgaXMgZmFzdCBlbm91
Z2guCiAgICAgRVhQRUNUX1RSVUUobm90aWZpY2F0aW9uQ291bnQgPT0gMCB8fCBub3RpZmljYXRp
b25Db3VudCA9PSAyKTsKQEAgLTQ2OSw2ICs0NjksNiBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29s
b3IsIE1haW5Eb2N1bWVudENoYW5nZSkKICAgICBub3RpZmljYXRpb25Db3VudCA9IDA7CiAKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1l
ZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHk+VGVzdCJdOwotICAgIEVYUEVDVF9FUShXZWJD
b3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNv
cmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBU
b1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJD
b3JlOjpDb2xvcjo6d2hpdGUpOwogICAgIEVYUEVDVF9FUShub3RpZmljYXRpb25Db3VudCwgMVVM
KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDlkOTI3ZjEyNjVhMzczY2Jm
ZjVkMTY2ZTI5YzFkMTY4MmZkNjQ3NjAuLjZkZTNlZWY5Mjc1OTgxMzNlNzc4YjBkYTllN2QyM2Nm
YjJjNTE3N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDIxLTA4LTE2ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJlc2VydmUgY29sb3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4g
RGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkwMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgx
ODI4NDc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCB0ZXN0cyBmb3IgY2FsbGluZyBmaWxsVGV4dCgpIGFuZCBzdHJva2VUZXh0KCkgd2l0aCBh
IGRpc3BsYXktcDMKKyAgICAgICAgY29sb3IgZm9yIGZpbGxTdHlsZSwgc3Ryb2tlU3R5bGUsIGFu
ZCBzaGFkb3dDb2xvciwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcy4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLmZpbGxUZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQu
Y29sb3Iuc3BhY2UucDMuZmlsbFRleHQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMuZmlsbFRleHQuc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
MmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQuc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
LzJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jf
c3BhY2UueWFtbDoKKwogMjAyMS0wOC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5IHN1cHBvcnQgZm9y
IEJsb2IgVVJMcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9y
LnNwYWNlLnAzLmZpbGxUZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4
OTZhZmQ4NjUwZmE5M2JmNDIyYTYwZTcwNzRmNDQ3OWNkOTNiZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dAorVGVz
dCBpZiBmaWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgor
QWN0dWFsIG91dHB1dDoKKworUEFTUyBUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGgg
YSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMx
YTYwMDg3NTVmZjZjMjk0N2JiNmI2NzllMWE5OWE3NzViNDhjMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5odG1s
CkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEgVGhp
cyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5w
eS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0PC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZhcy9yZXNvdXJj
ZXMvY2FudmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFzcz0ic2hvd19vdXRwdXQiPgorCis8aDE+
MmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQ8L2gxPgorPHAgY2xhc3M9ImRlc2MiPlRlc3QgaWYg
ZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3I8L3A+CisK
KworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBj
bGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2si
PkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+
Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1
c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yIik7CitfYWRkVGVzdChmdW5jdGlvbihj
YW52YXMsIGN0eCkgeworCitkZWZlclRlc3QoKTsKKworY29uc3QgZnVsbFJlZEluUDMgPSBbMjU1
LCAwLCAwLCAyNTVdOworY29uc3Qgc1JHQlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1NV07CisK
K2NhbnZhcy53aWR0aCA9IDEwMDsKK2NhbnZhcy5oZWlnaHQgPSAxMDA7CisKK2xldCBmID0gbmV3
IEZvbnRGYWNlKCJBaGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYpIik7Citkb2N1bWVudC5mb250
cy5hZGQoZik7CitmLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIHQuc3RlcChmdW5jdGlv
bigpIHsKKyAgICAgICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsKKworICAgICAgICBjdHguZmls
bFN0eWxlID0gIiNmMDAiOworICAgICAgICBjdHguZmlsbFRleHQoIkEiLCAwLCA1MCk7CisKKyAg
ICAgICAgY3R4LmZpbGxTdHlsZSA9ICJibGFjayI7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAi
Y29sb3IoZGlzcGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICBjdHguZmlsbFRleHQoIkEiLCA1
MCwgNTApOworCisgICAgICAgIGxldCBwaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSku
ZGF0YTsKKyAgICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgICAg
ICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7CisgICAgICAgICAgICBy
ZXR1cm4gW3BpeGVsc1tvZmZzZXRdLCBwaXhlbHNbb2Zmc2V0ICsgMV0sIHBpeGVsc1tvZmZzZXQg
KyAyXSwgcGl4ZWxzW29mZnNldCArIDNdXTsKKyAgICAgICAgfTsKKworICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoNzUsIDI1KSwgZnVsbFJlZEluUDMpOworCisgICAgICAg
IHQuZG9uZSgpOworICAgIH0pOworfSk7CisKKworfSwge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAz
In0pOworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGQwM2E4YTFhNWNkYjBjZDVjYjBmZTVhY2M0ZGY0MTE5NmQ0NjNj
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy5maWxsVGV4dC5zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorMmQu
Y29sb3Iuc3BhY2UucDMuZmlsbFRleHQuc2hhZG93CitUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1
c2VkIHdpdGggYSBkaXNwbGF5LXAzIHNoYWRvdyBjb2xvcgorQWN0dWFsIG91dHB1dDoKKworUEFT
UyBUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBkaXNwbGF5LXAzIHNoYWRvdyBj
b2xvcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3Bh
Y2UucDMuZmlsbFRleHQuc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQu
Y29sb3Iuc3BhY2UucDMuZmlsbFRleHQuc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JiNzRjNmFl
NGFiYTU0ZjdjYzBlNDZlY2RhYzFjZmNkOTM4ZDAwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cuaHRt
bApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gRE8gTk9UIEVESVQhIFRo
aXMgdGVzdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgL2h0bWwvY2FudmFzL3Rvb2xzL2dlbnRlc3Qu
cHkuIC0tPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5z
aGFkb3c8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3Rz
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwvY2FudmFz
L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291dHB1dCI+
CisKKzxoMT4yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3c8L2gxPgorPHAgY2xhc3M9
ImRlc2MiPlRlc3QgaWYgZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIGRpc3BsYXktcDMgc2hh
ZG93IGNvbG9yPC9wPgorCisKKzxwIGNsYXNzPSJvdXRwdXQiPkFjdHVhbCBvdXRwdXQ6PC9wPgor
PGNhbnZhcyBpZD0iYyIgY2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAg
Y2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKwor
PHVsIGlkPSJkIj48L3VsPgorPHNjcmlwdD4KK3ZhciB0ID0gYXN5bmNfdGVzdCgiVGVzdCBpZiBm
aWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgZGlzcGxheS1wMyBzaGFkb3cgY29sb3IiKTsKK19h
ZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVyVGVzdCgpOworCitjb25zdCBm
dWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBzUkdCUmVkSW5QMyA9IFsyMzQs
IDUxLCAzNSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOworY2FudmFzLmhlaWdodCA9IDEw
MDsKKworbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0Ziki
KTsKK2RvY3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9udCA9ICI0MHB4IEFoZW0iOwor
CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiYmxhY2siOworICAgICAgICBjdHguc2hhZG93Qmx1
ciA9IDQ7CisgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMDsKKyAgICAgICAgY3R4LnNoYWRv
d09mZnNldFkgPSA1MDsKKyAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gIiNmMDAiOworICAgICAg
ICBjdHguZmlsbFRleHQoIkEiLCAwLCAwKTsKKworICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAi
YmxhY2siOworICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAiY29sb3IoZGlzcGxheS1wMyAxMDAl
IDAgMCkiOworICAgICAgICBjdHguZmlsbFRleHQoIkEiLCA1MCwgMCk7CisKKyAgICAgICAgbGV0
IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVp
Z2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICBsZXQgcGl4
ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeSAqIGNh
bnZhcy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0s
IHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsg
M11dOworICAgICAgICB9OworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgy
NSwgMjUpLCBzUkdCUmVkSW5QMyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxB
dCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9
KTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnN0cm9r
ZVRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNw
YWNlLnAzLnN0cm9rZVRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMzQ0N2E4MjE3Yjli
ZDFhMWY0ZGQ2ZWUzYjA4OWQ2OWE1NjBjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0CitUZXN0IGlmIHN0
cm9rZVRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKK0FjdHVh
bCBvdXRwdXQ6CisKK1BBU1MgVGVzdCBpZiBzdHJva2VUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBz
b2xpZCBkaXNwbGF5LXAzIGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMz
ODA4NGE0NDQ5MGJlZDU5Y2VkZGFhZTkwMDI0NjdhMTI1NGRhZmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC5o
dG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEg
VGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVz
dC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRl
eHQ8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwvY2FudmFzL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291dHB1dCI+CisK
KzxoMT4yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0PC9oMT4KKzxwIGNsYXNzPSJkZXNjIj5U
ZXN0IGlmIHN0cm9rZVRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29s
b3I8L3A+CisKKworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFz
IGlkPSJjIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0i
ZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9
ImQiPjwvdWw+Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJUZXN0IGlmIHN0cm9rZVRl
eHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IiKTsKK19hZGRUZXN0
KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVyVGVzdCgpOworCitjb25zdCBmdWxsUmVk
SW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBzUkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAz
NSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOworY2FudmFzLmhlaWdodCA9IDEwMDsKKwor
bGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0ZikiKTsKK2Rv
Y3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdC5z
dGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9udCA9ICI0MHB4IEFoZW0iOworCisgICAg
ICAgIGN0eC5zdHJva2VTdHlsZSA9ICIjZjAwIjsKKyAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDIw
OworICAgICAgICBjdHguc3Ryb2tlVGV4dCgiQSIsIDAsIDUwKTsKKworICAgICAgICBjdHguc3Ry
b2tlU3R5bGUgPSAiYmxhY2siOworICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAiY29sb3IoZGlz
cGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICBjdHguc3Ryb2tlVGV4dCgiQSIsIDUwLCA1MCk7
CisKKyAgICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOwor
ICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIGxldCBv
ZmZzZXQgPSAoeSAqIGNhbnZhcy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIHJldHVybiBb
cGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBw
aXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICB9OworCisgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocGl4ZWxBdCgyNSwgMjUpLCBzUkdCUmVkSW5QMyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgdC5kb25l
KCk7CisgICAgfSk7Cit9KTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8
L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvdG9vbHMveWFtbC9lbGVtZW50L2NvbG9yX3NwYWNlLnlhbWwKaW5kZXggZTY0ZDZmYjk3Nzdk
YzBjNTlkNjZmNGJiYjYwOTE1OTU3MjY2YzM2OS4uOTM2MjEwNzI3ZTFjOTIxZGUwYTMzNTBhM2Ey
MzYwMGE4NWM0MWJhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2Uu
eWFtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sCkBAIC0xNzUsMyAr
MTc1LDEzMSBAQAogICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWxQaXhl
bHMsIGV4cGVjdGVkUGl4ZWxzLCAyKTsKICAgICB9KTsKICAgICBpbWFnZS5zcmMgPSBjYW52YXMu
dG9EYXRhVVJMKCk7CisKKy0gbmFtZTogMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQKKyAgdGVz
dGluZzoKKyAgLSAyZC5jb2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVzYzogVGVzdCBpZiBm
aWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgorICBhdHRy
aWJ1dGVzOiB8CisgICAge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0KKyAgY29kZTogfAorICAg
IGRlZmVyVGVzdCgpOworCisgICAgY29uc3QgZnVsbFJlZEluUDMgPSBbMjU1LCAwLCAwLCAyNTVd
OworICAgIGNvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCisgICAgY2Fu
dmFzLndpZHRoID0gMTAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxMDA7CisKKyAgICBsZXQgZiA9
IG5ldyBGb250RmFjZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIpOworICAgIGRvY3Vt
ZW50LmZvbnRzLmFkZChmKTsKKyAgICBmLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjdHguZm9udCA9ICI0MHB4IEFoZW0i
OworCisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gIiNmMDAiOworICAgICAgICAgICAgY3R4
LmZpbGxUZXh0KCJBIiwgMCwgNTApOworCisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gImJs
YWNrIjsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAxMDAl
IDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgNTAsIDUwKTsKKworICAgICAg
ICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBj
YW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAg
ICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgICAgICAgICAgbGV0
IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAgICAgICAgICAgIHJl
dHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCAr
IDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7
CisKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKworLSBuYW1l
OiAyZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0CisgIHRlc3Rpbmc6CisgIC0gMmQuY29sb3Iu
c3BhY2UucDMuYW5kLnVpbnQ4CisgIGRlc2M6IFRlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNl
ZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgorICBhdHRyaWJ1dGVzOiB8CisgICAge2Nv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0KKyAgY29kZTogfAorICAgIGRlZmVyVGVzdCgpOworICAg
IAorICAgIGNvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICBjb25zdCBz
UkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKyAgICAKKyAgICBjYW52YXMud2lkdGgg
PSAxMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDEwMDsKKyAgICAKKyAgICBsZXQgZiA9IG5ldyBG
b250RmFjZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIpOworICAgIGRvY3VtZW50LmZv
bnRzLmFkZChmKTsKKyAgICBmLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICB0LnN0
ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjdHguZm9udCA9ICI0MHB4IEFoZW0iOworICAg
IAorICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gIiNmMDAiOworICAgICAgICAgICAgY3R4
LmxpbmVXaWR0aCA9IDIwOworICAgICAgICAgICAgY3R4LnN0cm9rZVRleHQoIkEiLCAwLCA1MCk7
CisgICAgCisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAiYmxhY2siOworICAgICAgICAg
ICAgY3R4LnN0cm9rZVN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMTAwJSAwIDApIjsKKyAgICAg
ICAgICAgIGN0eC5zdHJva2VUZXh0KCJBIiwgNTAsIDUwKTsKKyAgICAKKyAgICAgICAgICAgIGxl
dCBwaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSkuZGF0YTsKKyAgICAgICAgICAgIGxl
dCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICAgICAgICAgIGxldCBvZmZzZXQg
PSAoeSAqIGNhbnZhcy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgICAgICByZXR1cm4gW3Bp
eGVsc1tvZmZzZXRdLCBwaXhlbHNbb2Zmc2V0ICsgMV0sIHBpeGVsc1tvZmZzZXQgKyAyXSwgcGl4
ZWxzW29mZnNldCArIDNdXTsKKyAgICAgICAgICAgIH07CisgICAgCisgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKyAg
ICAKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKworLSBuYW1l
OiAyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cKKyAgdGVzdGluZzoKKyAgLSAyZC5j
b2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVzYzogVGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUg
dXNlZCB3aXRoIGEgZGlzcGxheS1wMyBzaGFkb3cgY29sb3IKKyAgYXR0cmlidXRlczogfAorICAg
IHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9CisgIGNvZGU6IHwKKyAgICBkZWZlclRlc3QoKTsK
KworICAgIGNvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICBjb25zdCBz
UkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworICAgIGNhbnZhcy53aWR0aCA9IDEw
MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTAwOworCisgICAgbGV0IGYgPSBuZXcgRm9udEZhY2Uo
IkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0ZikiKTsKKyAgICBkb2N1bWVudC5mb250cy5hZGQo
Zik7CisgICAgZi5sb2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdC5zdGVwKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsKKworICAgICAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICJibGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9
IDQ7CisgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WCA9IDA7CisgICAgICAgICAgICBjdHgu
c2hhZG93T2Zmc2V0WSA9IDUwOworICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gIiNmMDAi
OworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgMCwgMCk7CisKKyAgICAgICAgICAgIGN0
eC5zaGFkb3dDb2xvciA9ICJibGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAi
Y29sb3IoZGlzcGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJB
IiwgNTAsIDApOworCisgICAgICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgw
LCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pLmRhdGE7CisgICAgICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsK
KyAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCAr
IDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwg
c1JHQlJlZEluUDMpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1
LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0p
OworICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435915</attachid>
            <date>2021-08-19 16:40:25 -0700</date>
            <delta_ts>2021-08-22 15:03:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210820094024.patch</filename>
            <type>text/plain</type>
            <size>52052</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ2MDI2Mjk3Nzg1Njg1
YTE1ZGI4YTUwOTViNWMxY2JlZTk0NDE5Mi4uNjg1MjRmZjNiM2FhMjFhZGU4MmQwMjNiMDA3ZTg2
OTMwM2UyMjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFdoZW4gR1BVIGNhbnZhcyBpcyBl
bmFibGVkLCBEcmF3R2x5cGhzUmVjb3JkZXIgcmVjb3JkcyB0aGUgdGV4dCBmaWxsLAorICAgICAg
ICBzdHJva2UsIGFuZCBzaGFkb3cgY29sb3JzIGJ5IGdldHRpbmcgdGhlbSBmcm9tIHRoZSBjb250
ZXh0IHVzaW5nCisgICAgICAgIENHR1N0YXRlR2V0RmlsbENvbG9yIGV0Yy4gIFRoaXMgaXMgZG9u
ZSBzbyB0aGF0IGNvbG9yIGdseXBocyBoYXZlIGVhY2gKKyAgICAgICAgcGFydCBwYWludGVkIGlu
IHRoZSByaWdodCBjb2xvci4gIEJ1dCB0aGUgY3VycmVudCBjb252ZXJzaW9uIGZyb20KKyAgICAg
ICAgQ0dDb2xvciB0byBXZWJDb3JlOjpDb2xvciBsb3NzaWx5IGNvbnZlcnRzIHRvIHNSR0IuICBT
byB3ZSBuZWVkIHRvIGdldAorICAgICAgICB0aGUgY29sb3Igc3BhY2UgYW5kIGNvbG9yIGNvbXBv
bmVudHMgZnJvbSB0aGUgQ0dDb2xvciBhbmQgcHJlc2VydmUgdGhlbS4KKworICAgICAgICBUaGUg
ZXhpc3RpbmcgQ29sb3IoQ0dDb2xvclJlZikgY29uc3RydWN0b3IgaXMgcmVwbGFjZWQgYnkgdHdv
CisgICAgICAgIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucywgY3JlYXRlQW5kUHJlc2VydmVDb2xvclNw
YWNlIGFuZAorICAgICAgICByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5LCBzbyB0aGUgY29udmVy
c2lvbiBiZWhhdmlvciBpcyBjbGVhciBhdCBjYWxsCisgICAgICAgIHNpdGVzLiAgY3JlYXRlQW5k
UHJlc2VydmVDb2xvclNwYWNlIHdpbGwgbWF0Y2ggdGhlIENHQ29sb3IncyBjb2xvcgorICAgICAg
ICBzcGFjZSB0byBvbmUgb2YgdGhlIHByZWRlZmluZWQgc3BhY2VzIHRoYXQgV2ViQ29yZTo6Q29s
b3IgY2FuCisgICAgICAgIHJlcHJlc2VudC4gIElmIGl0J3Mgc29tZSBvdGhlciBjb2xvciBzcGFj
ZSwgd2UgY29udmVydCB0byBYWVogKG9uCisgICAgICAgIHBsYXRmb3JtcyB3aGVyZSB0aGF0J3Mg
YXZhaWxhYmxlKSwgc2luY2UgdGhhdCB3aWxsIHJlc3VsdCBpbiB0aGUgbGVhc3QKKyAgICAgICAg
bG9zcywgb3IgdG8gc1JHQiAob24gcGxhdGZvcm1zIHdoZXJlIFhZWiBpcyBub3QgYXZhaWxhYmxl
KS4KKworICAgICAgICBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZSwgd2hpY2ggaXMgdXNl
ZCB3aGVuIGRldGVybWluaW5nIHRoZQorICAgICAgICBDR0NvbG9yJ3MgY29sb3Igc3BhY2UsIGlz
IG5vdCB2ZXJ5IGV4cGVuc2l2ZSwgYnV0IGl0IHdpbGwgZG8gbW9yZSB0aGFuIGEKKyAgICAgICAg
cG9pbnRlciBjb21wYXJpc29uIGluIGNhc2Ugd2UgcGFzcyBpbiB0d28gQ0dDb2xvclNwYWNlUmVm
cyB0aGF0IGFyZQorICAgICAgICBlcXVpdmFsZW50IGJ1dCBub3QgdGhlIHNhbWUgcG9pbnRlciB2
YWx1ZS4gIFNpbmNlIG91ciBuZXcKKyAgICAgICAgY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSBm
dW5jdGlvbiB3aWxsIGJlIHVzZWQgd2l0aCBDR0NvbG9ycyB0aGF0IGhhdmUKKyAgICAgICAgYmVl
biBzZXQgV2ViQ29yZSBkdXJpbmcgY2FudmFzIGRyYXdpbmcsIHdlIHdpbGwgZ2V0IGJhY2sgdGhl
IHNhbWUKKyAgICAgICAgcG9pbnRlcnMgdGhhdCB3ZSBoYXZlIGNhY2hlZCBpbiBzUkdCQ29sb3JT
cGFjZVJlZigpLAorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCksIGV0Yy4gIElmIGNh
bGxpbmcgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UKKyAgICAgICAgb24gYWxsIG91ciBz
dXBwb3J0ZWQgY29sb3Igc3BhY2VzIHR1cm5zIG91dCB0byBiZSB0b28gZXhwZW5zaXZlLCB3ZQor
ICAgICAgICBjb3VsZCBzdGFydCBieSBkb2luZyBhIHBvaW50ZXIgY29tcGFyaXNvbiBvbiBlYWNo
IGJlZm9yZSBjYWxsaW5nCisgICAgICAgIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlLgor
CisgICAgICAgIFRoZSB3YXkgY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSBpcyB3cml0dGVuIHdl
IGNvdWxkIGVuZCB1cAorICAgICAgICBpbnN0YW50aWF0aW5nIGFsbCBvZiBvdXIgc3VwcG9ydGVk
IGNvbG9yIHNwYWNlcywgaWYgYW4gYXV0aG9yIHVzZWQgYW4KKyAgICAgICAgWFlaIGNvbG9yIHdo
ZW4gZHJhd2luZyB0ZXh0ICh0aGUgbGFzdCBjb2xvciBwcm9maWxlIHdlIGNoZWNrKS4gIFdlCisg
ICAgICAgIGNvdWxkIHRyeSBoYXJkZXIgdG8gYXZvaWQgZG9pbmcgdGhpcyBpZiBpdCdzIGltcG9y
dGFudC4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZp
bGxUZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5maWxsVGV4dC5zaGFkb3cuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnN0cm9rZVRleHQuaHRtbAorCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dDU1MgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENT
UyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y2FwdGlvbnNUZXh0Q29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29u
dmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAg
KC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIgc2V0Qm9yZGVyQ29sb3I6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZEFu
ZENsYW1wVG9TUkdCQUxvc3N5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRM
b3NzbGVzc2x5Q29udmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yU3BhY2VG
b3JDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3Bh
Y2VDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcik6CisKIDIwMjEtMDgtMTkg
IEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRk
IHN1cHBvcnQgZm9yIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4OTczNTI0
M2VlYzdhZDczYjIzMzFiZjljMjFlOGI2ZmJmOTEzNmUuLjVlYjVkN2ZmMTIxMDNjNThlM2RhZGQ2
ZmRjNzkxNDA2N2Q1ZDVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDgtMTgg
IENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVzZXJ2
ZSBjb2xvciBzcGFjZSB3aGVuIGdldHRpbmcgY3VycmVudCBjb2xvciBpbiBEaXNwbGF5TGlzdDo6
RHJhd0dseXBoc1JlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkwMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxODI4NDc3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgQ2hhbmdlIGV4aXN0aW5n
IENHQ29sb3IgLT4gV2ViQ29yZTo6Q29sb3IgY29udmVyc2lvbnMgdG8gYmUgZXhwbGljaXQKKyAg
ICAgICAgYWJvdXQgbG9zc2lseSBjb252ZXJ0aW5nIHRvIHNSR0IuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVy
UGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2lu
KToKKwogMjAyMS0wOC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIG5vbi1pbmNsdXNpdmUgbGFuZ3VhZ2UgZnJvbSBT
b3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAKaW5kZXggZDEwZTMzNTFmMzNlNDA3YmRhMjUzYzdlZWQzYTE0NjhhMmJj
MmQ0ZS4uMGJhMWM4YjEyMTI3M2ZkMzlkNzY5MWRjODJjMjQzMjYzM2JiNjA4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKQEAgLTMxNyw3ICszMTcsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zV2luZG93Q1NTKCkgY29uc3QKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3IgYmVoYXZpb3I7CiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRD
RihNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CiAKLSAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xvci5n
ZXQoKSk7CisgICAgQ29sb3Igd2luZG93Q29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShj
b2xvci5nZXQoKSkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgpKQogICAgICAgICB3
aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOwogCkBAIC0zNDIsNyArMzQyLDcg
QEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91
bmRDU1MoKSBjb25zdAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsK
IAogICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
LCAmYmVoYXZpb3IpKTsKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOwor
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9y
LmdldCgpKSk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBi
YWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOwogCkBAIC0zNTYsNyArMzU2
LDggQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MoKSBjb25zdAogQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zVGV4dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QKIHsKICAgICBNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7Ci0gICAgQ29sb3IgdGV4dENvbG9yID0gYWRvcHRD
RihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpLmdldCgpOworICAgIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjb2xvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29s
b3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKS5nZXQoKTsKKyAg
ICBDb2xvciB0ZXh0Q29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvci5nZXQoKSkp
OwogICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBUaGlzIGRlZmF1
bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNv
bnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lci4KICAgICAg
ICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggMDJlZTBiNjhiMjkxYTY0MzU3Zjc3OTgxN2FiNjM2YjE3ODNmNzM5
OC4uYTdjZjIwOGYwNzBhOWY5MDA3NzcxM2E2YjgxZmFkYjY4YjVjOGJkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ0dDb2xv
clJlZiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IENvbG9yIGNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShDR0NvbG9yUmVmLCBPcHRpb25TZXQ8
RmxhZ3M+ID0geyB9KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMjA3LDYgKzIw
NywxMCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgQ29sb3IoUmVmPE91dE9mTGluZUNvbXBvbmVu
dHM+JiYsIENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOwogCisjaWYgVVNFKENH
KQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBjcmVhdGVBbmRMb3NzbGVzc2x5Q29u
dmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZShDR0NvbG9yUmVmLCBPcHRpb25TZXQ8RmxhZ3M+ID0g
eyB9KTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBGbGFnc0luY2x1ZGluZ1ByaXZhdGUgOiB1
aW50OF90IHsKICAgICAgICAgU2VtYW50aWMgICAgICAgICAgICAgICAgICAgICAgICA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KEZsYWdzOjpTZW1hbnRpYyksCiAgICAgICAgIFVzZUNvbG9yRnVuY3Rp
b25TZXJpYWxpemF0aW9uICAgPSBzdGF0aWNfY2FzdDx1aW50OF90PihGbGFnczo6VXNlQ29sb3JG
dW5jdGlvblNlcmlhbGl6YXRpb24pLApAQCAtMjY4LDYgKzI3Miw3IEBAIGJvb2wgb3V0T2ZMaW5l
Q29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0
IENvbG9yJik7CiAjaWYgVVNFKENHKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJik7CiBXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koQ0dDb2xvclJlZik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDAyYTI2ZDU3YjU1ZWNhZGU0M2M1ZjJl
ZTM5NWY4MzMyOTI2ODc5YTkuLjJkMjg3MTY3N2ExNzdiYmU2ZjQ4Nzg4ZWQ4NDNlMWY1NWFkZTZh
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC04MjAsNyArODIwLDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0
ZXJUeXBlIHZhbHVlKQogCiBDb2xvciBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fbGF5ZXIgYmFja2dyb3VuZENvbG9yXTsKKyAg
ICByZXR1cm4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbbV9sYXllciBiYWNrZ3JvdW5kQ29s
b3JdKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5k
ZXggODI3YjkzMTQ4YmFlMzc2ZWI1MmU4MDc1MTdlYjE0ZWUxNDVhZTQ0OC4uMGM3MWQ0MzhlZTQz
NTkzNTE2MDkzZjgzYWMxYjRhNzQyMTNmMjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5n
TGF5ZXIubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIAogLSAodm9p
ZClzZXRCb3JkZXJDb2xvcjooQ0dDb2xvclJlZilib3JkZXJDb2xvcgogewotICAgIF90aWxlQ29u
dHJvbGxlci0+c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoV2ViQ29yZTo6Q29sb3IoYm9yZGVyQ29s
b3IpKTsKKyAgICBfdGlsZUNvbnRyb2xsZXItPnNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKFdlYkNv
cmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koYm9yZGVyQ29sb3IpKTsKIH0KIAogLSAodm9p
ZClzZXRCb3JkZXJXaWR0aDooQ0dGbG9hdClib3JkZXJXaWR0aApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCBkYWJjN2U3NzM0MDA1NTA0
NTFmMjcwNGUxMWM4MThmY2M2ZDJjODUyLi4xM2VjYjMzNjE4NTJkNWJjMTI5ZGYxYWZlMzI4MTlh
NzYwMjNkY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcApAQCAtNTQsOSArNTQsMTAgQEAgUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlM
UlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+PjoKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNvbG9yKQorc3RkOjpvcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVm
IGNvbG9yKQogewotICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxl
IGNvbG9yIHNwYWNlcy4KKyAgICAvLyBGSVhNRTogSW50ZXJwcmV0aW5nIGNvbXBvbmVudHMgb2Yg
YSBjb2xvciBpbiBhbiBhcmJpdHJhcnkgY29sb3Igc3BhY2UKKyAgICAvLyBhcyBzUkdCIGNvdWxk
IGJlIHdyb25nLCBub3QganVzdCBsb3NzeS4KIAogICAgIGlmICghY29sb3IpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04Nyw5ICs4OCw1MiBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNv
bG9yKQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KG1ha2VGcm9tQ29t
cG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4ociwgZywgYiwgYSApKTsKIH0KIAotQ29sb3I6
OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCi0gICAgOiBD
b2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSwgZmxhZ3MpCitDb2xvciBDb2xv
cjo6Y3JlYXRlQW5kTG9zc2xlc3NseUNvbnZlcnRUb1N1cHBvcnRlZENvbG9yU3BhY2UoQ0dDb2xv
clJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKKyAgICBhdXRvIHNvdXJjZUNH
Q29sb3JTcGFjZSA9IENHQ29sb3JHZXRDb2xvclNwYWNlKGNvbG9yKTsKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfWFlaX0NPTE9SX1NQQUNFKQorICAgIGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3Bh
Y2UgPSB4eXpDb2xvclNwYWNlUmVmKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
PSBDb2xvclNwYWNlOjpYWVpfRDUwOworI2Vsc2UKKyAgICBhdXRvIGRlc3RpbmF0aW9uQ0dDb2xv
clNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JT
cGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7CisjZW5kaWYKKyAgICBBU1NFUlQoQ0dDb2xvclNwYWNl
R2V0TnVtYmVyT2ZDb21wb25lbnRzKGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlKSA9PSAzKTsKKwor
ICAgIGF1dG8gc291cmNlQ29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsK
KyAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSB7IH07CisKKyAgICBhdXRvIHRy
YW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShkZXN0aW5hdGlvbkNHQ29s
b3JTcGFjZSwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNv
bnZlcnRDb2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBzb3VyY2VDR0NvbG9yU3BhY2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9u
Q29tcG9uZW50cyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBm
bG9hdCBhID0gZGVzdGluYXRpb25Db21wb25lbnRzWzBdOworICAgIGZsb2F0IGIgPSBkZXN0aW5h
dGlvbkNvbXBvbmVudHNbMV07CisgICAgZmxvYXQgYyA9IGRlc3RpbmF0aW9uQ29tcG9uZW50c1sy
XTsKKyAgICBmbG9hdCBhbHBoYSA9IENHQ29sb3JHZXRBbHBoYShjb2xvcik7CisKKyAgICByZXR1
cm4gQ29sb3IoT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKHsgYSwgYiwgYywgYWxwaGEgfSks
IGRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgZmxhZ3MpOworfQorCitDb2xvciBDb2xvcjo6Y3JlYXRl
QW5kUHJlc2VydmVDb2xvclNwYWNlKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4g
ZmxhZ3MpCit7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAg
ICBzaXplX3QgbnVtQ29tcG9uZW50cyA9IENHQ29sb3JHZXROdW1iZXJPZkNvbXBvbmVudHMoY29s
b3IpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dD
b2xvckdldENvbG9yU3BhY2UoY29sb3IpKTsKKworICAgIGlmIChudW1Db21wb25lbnRzICE9IDQg
fHwgIWNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBjcmVhdGVBbmRMb3NzbGVzc2x5Q29udmVy
dFRvU3VwcG9ydGVkQ29sb3JTcGFjZShjb2xvciwgZmxhZ3MpOworCisgICAgY29uc3QgQ0dGbG9h
dCogY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKKworICAgIGZsb2F0
IGEgPSBjb21wb25lbnRzWzBdOworICAgIGZsb2F0IGIgPSBjb21wb25lbnRzWzFdOworICAgIGZs
b2F0IGMgPSBjb21wb25lbnRzWzJdOworICAgIGZsb2F0IGFscGhhID0gY29tcG9uZW50c1szXTsK
KworICAgIHJldHVybiBDb2xvcihPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyBhLCBiLCBj
LCBhbHBoYSB9KSwgKmNvbG9yU3BhY2UsIGZsYWdzKTsKIH0KIAogc3RhdGljIHN0ZDo6cGFpcjxD
R0NvbG9yU3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IGNvbnZlcnRUb0NHQ29t
cGF0aWJsZUNvbXBvbmVudHMoQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbXBvbmVudHMpCkBAIC0xODEsNiArMjI1LDcgQEAgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1
dENvbG9yU3AKICAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNy
ZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRyKSk7CiAg
ICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0
cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIC8vIEZJWE1FOiBDR0NvbG9yVHJhbnNmb3Jt
Q29udmVydENvbG9yQ29tcG9uZW50cyBkb2Vzbid0IGNvcHkgb3ZlciBhbnkgYWxwaGEgY29tcG9u
ZW50LgogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVu
dHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZs
b2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCmluZGV4IDE0OTFl
NDFiOTBjZTlkZGM2ZTc4ZWViY2EyMDhlZjM4ZjdiMmFjOGEuLjhjODFjMTBmNzgxNjUzMDdlOWVk
MjM1OGM2ZDA3MzViODQ0OTJkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcApAQCAtMTA4LDYgKzEwOCw0NiBAQCBDR0Nv
bG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB9CiAjZW5kaWYKIAorc3RkOjpvcHRpb25h
bDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKQoreworICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xv
clNwYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6
OlNSR0I7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfQURPQkVfUkdCXzE5OThfQ09MT1JfU1BB
Q0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIGFk
b2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNlOjpB
OThSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9S
X1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xvclNwYWNl
LCBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29sb3JTcGFjZTo6
RGlzcGxheVAzOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTogbGFiQ29sb3JTcGFjZVJlZigpIG5v
dCBpbXBsZW1lbnRlZC4KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xP
Ul9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JTcGFj
ZSwgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNl
OjpMaW5lYXJTUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUk9NTVJHQl9D
T0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JT
cGFjZSwgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNl
OjpQcm9QaG90b1JHQjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0lUVVJfMjAy
MF9DT0xPUl9TUEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29s
b3JTcGFjZSwgSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OlJlYzIwMjA7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09M
T1JfU1BBQ0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3Bh
Y2UsIHh5ekNvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNlOjpYWVpf
RDUwOworI2VuZGlmCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB9CiAKICNlbmRp
ZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvclNwYWNlQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oCmluZGV4IGRiNjA0MTBlNmQ0NzNhY2E3ZWE3YTE5NGNjNzhjOTY0Yzk4
YmEzNzMuLjAzMjkzMGY1MmI4MTU2N2Y1ZDllYWE5NmRkNTEzNzdjY2Q1NzhlNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlIDxvcHRpb25hbD4KIAogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpDR0Nv
bG9yU3BhY2VSZWY7CiAKQEAgLTY1LDYgKzY2LDggQEAgV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpOwogI2VuZGlmCiAKK3N0ZDo6b3B0aW9uYWw8Q29sb3JT
cGFjZT4gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYpOworCiBzdGF0
aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKaW5kZXggYmVlMTk0ZDUzM2ExOTAzZDYzNGQ2OTJkNTYzM2Q3MzMzMjYzMDYx
Yy4uYTFiZTNjZGI5M2FiNDBiZGNlYjBlOTllYjhiYWRhMzViYTc3NDVjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcApAQCAtMjYxLDcgKzI2MSw4IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1
cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKICAgICBjb25zdCBhdXRvJiBzaGFkb3dTdHls
ZSA9ICpzdGF0aWNfY2FzdDxjb25zdCBDR1NoYWRvd1N0eWxlKj4oQ0dTdHlsZUdldERhdGEoc3R5
bGUpKTsKICAgICBhdXRvIHJhZCA9IGRlZzJyYWQoc2hhZG93U3R5bGUuYXppbXV0aCAtIDE4MCk7
CiAgICAgYXV0byBzaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc3RkOjpjb3MocmFkKSwgc3RkOjpz
aW4ocmFkKSkgKiBzaGFkb3dTdHlsZS5oZWlnaHQ7Ci0gICAgdXBkYXRlU2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93U3R5bGUucmFkaXVzLCBDR1N0eWxlR2V0Q29sb3Ioc3R5bGUpLCBTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKKyAgICBhdXRvIHNoYWRvd0NvbG9yID0gQ0dTdHlsZUdl
dENvbG9yKHN0eWxlKTsKKyAgICB1cGRhdGVTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dTdHls
ZS5yYWRpdXMsIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3Ip
LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYg
Z3N0YXRlLCBDR1JlY3QpCkBAIC0zMzAsOCArMzMxLDEwIEBAIHZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdz
dGF0CiAgICAgICAgIGN0bUZpeHVwID0gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgbV9vd25lci5j
b25jYXRDVE0oY3RtRml4dXApOwogCi0gICAgdXBkYXRlRmlsbENvbG9yKENHR1N0YXRlR2V0Rmls
bENvbG9yKGdzdGF0ZSkpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENHR1N0YXRlR2V0U3Ryb2tl
Q29sb3IoZ3N0YXRlKSk7CisgICAgYXV0byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xv
cihnc3RhdGUpOworICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9y
KGdzdGF0ZSk7CisgICAgdXBkYXRlRmlsbENvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNv
bG9yU3BhY2UoZmlsbENvbG9yKSk7CisgICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0
ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwogICAgIHVwZGF0ZVNoYWRvdyhD
R0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCiAgICAgbV9vd25lci5hcHBlbmREcmF3R2x5cGhz
SXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRh
KCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Nt
b290aGluZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGY1OTZlZmFlZWYzZDVmOTcxNTdhOTFhOTg5ZDA5
OWNiYzEwNWQyYS4uNjQwYTQ1MjZjNTdhZWVlMWY5MTJkZTdmNTYzZTYzNzMxMjZmMTNmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCkBAIC0zMTUsNyArMzE1LDcgQEAgQ29sb3IgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xv
cigpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2Fy
ZFR5cGU6VUlDb2xvclBib2FyZFR5cGVdOwogICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbTlNLZXll
ZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3M6UEFMOjpnZXRVSUNvbG9yQ2xhc3Mo
KSBmcm9tRGF0YTpkYXRhIGVycm9yOm5pbF07Ci0gICAgcmV0dXJuIENvbG9yKHVpQ29sb3IuQ0dD
b2xvcik7CisgICAgcmV0dXJuIHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3kodWlDb2xvci5DR0Nv
bG9yKTsKIH0KIAogVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6dXJsKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1NDc5OTE4YTI4ZTA1YjliN2YwMjkw
N2U0NGVlMDcxODc1OGIzMzAyLi4xMzZkMDA1Yzk5ZTc2YWUyODVmZWQ3YmMxYTRmZTk3OWViNzI0
NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0x
MzQ0LDcgKzEzNDQsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPENTU1ZhbHVlU3lzdGVtQ29sb3JJ
bmZvcm1hdGlvbj4mIGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdAogc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZVN5c3RlbUNvbG9ySW5m
b3JtYXRpb24oQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uIHN5c3RlbUNvbG9ySW5mb3Jt
YXRpb24sIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCiB7CiAgICAgaWYgKGF1dG8gY29sb3IgPSB3
dGZPYmpDTXNnU2VuZDxVSUNvbG9yICo+KFBBTDo6Z2V0VUlDb2xvckNsYXNzKCksIHN5c3RlbUNv
bG9ySW5mb3JtYXRpb24uc2VsZWN0b3IpKSB7Ci0gICAgICAgIENvbG9yIHN5c3RlbUNvbG9yID0g
eyBjb2xvci5DR0NvbG9yLCBDb2xvcjo6RmxhZ3M6OlNlbWFudGljIH07CisgICAgICAgIENvbG9y
IHN5c3RlbUNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IuQ0dDb2xvciksIENv
bG9yOjpGbGFnczo6U2VtYW50aWMpOwogCiAgICAgICAgIGlmIChzeXN0ZW1Db2xvckluZm9ybWF0
aW9uLm9wYWNpdHkgPCAxLjBmKQogICAgICAgICAgICAgc3lzdGVtQ29sb3IgPSBzeXN0ZW1Db2xv
ci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzeXN0ZW1Db2xvckluZm9ybWF0aW9uLm9wYWNp
dHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggY2RjZDM5N2FkODVjY2ZiN2JiMWZkMGU1ZTM4ZWQyOGU5MmU3MzI0ZC4uZjJjOWJhZTE4
NjA4NTAxZmEyYzI1ZTEwODZkOGY4NGFhMDJkYzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNzg0LDcgKzE3ODQsNyBAQCAtIChD
b2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCiAKIC0gKHZvaWQpc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUKIHsKLSAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUuQ0dDb2xvcik7CisgICAgX3BhZ2Ut
PnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OnJvdW5kQW5kQ2xh
bXBUb1NSR0JBTG9zc3kodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUuQ0dDb2xvcikp
OwogfQogCiArIChCT09MKWF1dG9tYXRpY2FsbHlOb3RpZmllc09ic2VydmVyc09mVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IGI1NjJmYTRhMDgzYWY1
OThmNjc3MzliNWI2OWI5MDY1OTY3MWIzNjIuLjM1YzIyNWYzY2Q2Nzg5YWUyMDQzZjk2MWU5MDA1
YzUzNGViZTRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC02Nyw3ICs2Nyw3IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKICAgICAgICAg
VVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCiAgICAgICAgIFVSTChzdGFydFVSTCksCi0gICAg
ICAgIFdlYkNvcmU6OkNvbG9yKHRoZW1lQ29sb3IuQ0dDb2xvciksCisgICAgICAgIFdlYkNvcmU6
OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3kodGhlbWVDb2xvci5DR0NvbG9yKSwKICAgICB9Owog
CiAgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+KHNlbGYsIFdURk1vdmUoY29yZUFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggZGE0NTBh
MmU3Y2Q2ZjhlNGY2ZjUxMWE2NTQ5NzY2MTc2MDAzNGJmNi4uMGM2YjFiZDE3NzI0ZWZmYzJhNjA2
ZmI1OWM0YjMwMmE5OWZmY2YxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBlbnVtIGNsYXNzIEFsbG93
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlIDogYm9vbCB7IE5vLCBZZXMgfTsKIHN0YXRpYyBX
ZWJDb3JlOjpDb2xvciBiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndl
YlZpZXcsIEFsbG93UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlIGFsbG93UGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKQogewogICAgIGlmICh3ZWJWaWV3LT5fY3VzdG9tQ29udGVudFZpZXcp
Ci0gICAgICAgIHJldHVybiBbd2ViVmlldy0+X2N1c3RvbUNvbnRlbnRWaWV3IGJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koW3dlYlZpZXctPl9jdXN0b21Db250ZW50VmlldyBiYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IpOwogCiAgICAgaWYgKHdlYlZpZXctPl9nZXN0dXJlQ29udHJvbGxlcikgewogICAgICAg
ICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IHdlYlZpZXctPl9nZXN0dXJlQ29udHJvbGxlci0+YmFj
a2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCk7CkBAIC01MDcsMTEgKzUwNywxMSBAQCBz
dGF0aWMgV2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcg
KndlYlZpZXcsIEFsbG93UGFnZUJhYwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gYmFzZVNj
cm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldywgYWxsb3dQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUpOwogCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkgJiYgd2ViVmlldy0+X2NvbnRl
bnRWaWV3KQotICAgICAgICBjb2xvciA9IFt3ZWJWaWV3LT5fY29udGVudFZpZXcgYmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBU
b1NSR0JBTG9zc3koW3dlYlZpZXctPl9jb250ZW50VmlldyBiYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IpOwogCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpIHsKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQotICAgICAgICBjb2xvciA9IFVJQ29sb3Iuc3lzdGVtQmFja2dyb3VuZENvbG9y
LkNHQ29sb3I7CisgICAgICAgIGNvbG9yID0gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFM
b3NzeShVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5DR0NvbG9yKTsKICNlbHNlCiAgICAg
ICAgIGNvbG9yID0gV2ViQ29yZTo6Q29sb3I6OndoaXRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMWJkMzMwNjVm
MTBjMTcwZDA2NmNjYjdhNmY2YTVjNWU4NjMxODhkZi4uOTRlMjNjZGE0ODg5NTc3MDdiYTNkMDRm
ZTdiODliNWJjNWVkYTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmEKIAogV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmNvbnRlbnRWaWV3QmFj
a2dyb3VuZENvbG9yKCkKIHsKLSAgICByZXR1cm4gW21fY29udGVudFZpZXcgYmFja2dyb3VuZENv
bG9yXS5DR0NvbG9yOworICAgIHJldHVybiBXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxv
c3N5KFttX2NvbnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcik7CiB9CiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RTY3JvbGxUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkNjc0
OGUxMzBkYzQ4MDhkNzVjMWE4MTM3OWUwOTU2NDViMGNhNWJiLi4zY2Q2ODE5YTc1OGEyOTExODQ3
MzY5MjhkODkzMjJlZmFkMzU0ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM2MjMsNyArMzYyMyw4
IEBAIC0gKHZvaWQpX3NldEZvbnRTaXplRm9yV2ViVmlldzooQ0dGbG9hdClmb250U2l6ZSBzZW5k
ZXI6KGlkKXNlbmRlcgogCiAtICh2b2lkKV9zZXRUZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9y
ICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21t
YW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6
OkNvbG9yKGNvbG9yLkNHQ29sb3IpKSk7CisgICAgV2ViQ29yZTo6Q29sb3IgdGV4dENvbG9yKFdl
YkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IuQ0dDb2xvcikpOworICAgIF9w
YWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciJfcywgV2ViQ29yZTo6c2VyaWFsaXph
dGlvbkZvckhUTUwodGV4dENvbG9yKSk7CiB9CiAKIC0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3Vn
aEZvcldlYlZpZXc6KGlkKXNlbmRlcgpAQCAtNDg2NCw3ICs0ODY1LDcgQEAgLSAodm9pZCl1cGRh
dGVGb2N1c2VkRWxlbWVudFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCiAKIC0gKHZvaWQpdXBkYXRl
Rm9jdXNlZEVsZW1lbnRWYWx1ZUFzQ29sb3I6KFVJQ29sb3IgKil2YWx1ZQogewotICAgIFdlYkNv
cmU6OkNvbG9yIGNvbG9yKHZhbHVlLkNHQ29sb3IpOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3kodmFsdWUuQ0dDb2xvcikpOwogICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nID0gV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoY29s
b3IpOwogCiAgICAgX3BhZ2UtPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoX2ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQsIHZhbHVlQXNTdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNTU1MzE3ZjczMGVm
NDBhMDZmOTA2ZDQyYjY5ZjQwMzZkN2YwM2Q5YS4uMDlkNGNmZjIyODk1ODY1NzFiMGUyYjJkMmJj
Yzk5MDgzZThkOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCkBAIC0xNTY1LDkgKzE1NjUsOSBAQCBDb2xvciBXZWJQYWdlUHJveHk6OnBs
YXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNv
bnRlbnRWaWV3QmFja2dyb3VuZENvbG9yOwogCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9S
VCkKLSAgICByZXR1cm4gVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShVSUNvbG9yLnN5c3Rl
bUJhY2tncm91bmRDb2xvci5DR0NvbG9yKTsKICNlbHNlCi0gICAgcmV0dXJuIFVJQ29sb3Iud2hp
dGVDb2xvci5DR0NvbG9yOworICAgIHJldHVybiBXZWJDb3JlOjpDb2xvcjo6d2hpdGU7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggYmUxNDRiYjM3ZDkzMTI5ZjNhODY0MzczNTFiOTg4YmJmNTU1MThhNi4uNzIwMGU5
NjA2NjAyYzZkZWNlM2RkNmM4NTRiNzhlNGNiYTYxMjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03MjgsOSArNzI4LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB2aWV3UmUKIENvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQot
ICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShOU0NvbG9yLmNvbnRyb2xC
YWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CiAjZWxzZQotICAgIHJldHVybiBOU0NvbG9yLndoaXRl
Q29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29sb3I6OndoaXRlOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCmluZGV4IDc3NDI2YjdjZGQ2M2MyZTcwNzY0ZjE0ZjgwNTc4NDVhZDU3MmQwOWUuLjVl
ZGEzNzZhY2Q0ZjhmMjAyY2FkZWRmNDA2YjNhYjhlNDY5MDhlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNjI0LDcgKzYy
NCw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAg
ICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAg
ICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3Jv
dW5kIGNvbG9yIGZyb20gUERGS2l0IGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdAotICAgICAgICBk
b2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhU
TUwoW0NvY29hQ29sb3IgZ3JheUNvbG9yXS5DR0NvbG9yKSk7CisgICAgICAgIGRvY3VtZW50LT5i
b2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNvcmU6OkNTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3Jl
Ojpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtDb2NvYUNvbG9yIGdyYXlDb2xvcl0uQ0dDb2xv
cikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA5YTE4OWI2ZDJmOWZkNGY1Y2Iw
Mjg3MGY2YWQ0YmVhMTJhYTA2ZWM3Li43YjFkN2FjNzdiOTE0ZTYwNTJlNzcwZjYxZjAzZjBkMzgy
YzY5ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
QEAgLTQ0Myw3ICs0NDMsNyBAQCAtICh2b2lkKV91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1do
aWxlT2Zmc2NyZWVuCiAgICAgICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6
OmNvbG9yRnJvbU5TQ29sb3IoW2JhY2tncm91bmRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5h
bWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICNlbHNlCi0gICAgICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xv
ciA9IFdlYkNvcmU6OkNvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgICAgICBXZWJDb3Jl
OjpDb2xvciBjb2xvcihXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGJhY2tncm91
bmRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgICAgICB2aWV3LT5zZXRCYXNlQmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKICAgICAgICAgICAgIHZpZXctPnNldFNob3VsZFVwZGF0ZVdoaWxlT2Zmc2Ny
ZWVuKFt3ZWJWaWV3IHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuXSk7CkBAIC0xMzg4LDcgKzEz
ODgsNyBAQCAtIChOU1JlY3QpcmVjdEZvclNjcm9sbFRvVmlzaWJsZQogCiAtICh2b2lkKXNldENh
cmV0Q29sb3I6KENHQ29sb3JSZWYpY29sb3IKIHsKLSAgICBXZWJDb3JlOjpDb2xvciBxQ29sb3Ig
PSBjb2xvciA/IFdlYkNvcmU6OkNvbG9yKGNvbG9yKSA6IFdlYkNvcmU6OkNvbG9yOjpibGFjazsK
KyAgICBXZWJDb3JlOjpDb2xvciBxQ29sb3IgPSBjb2xvciA/IFdlYkNvcmU6OkNvbG9yKFdlYkNv
cmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKSA6IFdlYkNvcmU6OkNvbG9yOjpi
bGFjazsKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBjb3JlKHNlbGYpOwogICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRDYXJldENvbG9yKHFDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjU5ZTRiNjYwNzg0ZDAxMjc0YTU4
ZTUzMjJlZmYyMDMwOTM1ZmZiOS4uOGRkMDIxZWY0MmNlZDRhMDdkOGU3OGU1ODE4MmY1NWJhNWQ5
MTFlNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTE4ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29sb3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1
cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDI0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIENoYW5nZSBleGlzdGluZyBDR0NvbG9yIC0+IFdlYkNvcmU6OkNvbG9yIGNv
bnZlcnNpb25zIHRvIGJlIGV4cGxpY2l0CisgICAgICAgIGFib3V0IGxvc3NpbHkgY29udmVydGlu
ZyB0byBzUkdCLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
YW1wbGVkUGFnZVRvcENvbG9yLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMDgtMTkgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtydW4td2Via2l0
LXRlc3RzXSBIYW5kbGUganNvbiBjcmFzaCBsb2dzIChQYXJ0IDEpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29s
b3IubW0KaW5kZXggN2E2YmUwOWEzMTc1MWViY2Q0YzBmN2EwMzdkMjE2ZThlOWQ5NTU4OS4uNDZl
YzRiZWZiM2IyMDg3NzdmNjYxN2ZmNWU2NDllYmVlZDEyNzFhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BD
b2xvci5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgU29s
aWRDb2xvcikKICAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0p
OwogCiAgICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmll
dy5nZXQoKSwgY3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJy
ZWQiX3MsICJyZWQiX3MgfSkpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmll
dyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwor
ICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3
IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9
CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgRGlmZmVyZW50Q29sb3JzV2l0aG91dE91dGxp
ZXJCZWxvd01heERpZmZlcmVuY2UpCkBAIC0zMDEsNyArMzAxLDcgQEAgVEVTVChTYW1wbGVkUGFn
ZVRvcENvbG9yLCBIaXRUZXN0SFRNTENhbnZhc1dpdGhvdXRSZW5kZXJpbmdDb250ZXh0KQogICAg
IEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICB3YWl0
Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBAIjxi
b2R5IHN0eWxlPSdtYXJnaW46IDAnPjxjYW52YXMgc3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6
IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHJlZCc+PC9jYW52YXM+VGVzdCIpOwotICAgIEVYUEVD
VF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xv
ciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFu
ZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9y
KSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwg
SGl0VGVzdEhUTUxDYW52YXNXaXRoUmVuZGVyaW5nQ29udGV4dCkKQEAgLTMyOCw3ICszMjgsNyBA
QCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RCZWZvcmVDU1NUcmFuc2l0aW9uKQog
ICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICB3
YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBA
Ijxib2R5IHN0eWxlPSdtYXJnaW46IDA7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMXMn
PlRlc3QiKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQ
YWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVD
VF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVk
UGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKIH0KIAogVEVT
VChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0RHVyaW5nQ1NTVHJhbnNpdGlvbikKQEAgLTM2
MCw3ICszNjAsNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RBZnRlckNTU1Ry
YW5zaXRpb24pCiAgICAgLy8gTm90IHNldHRpbmcgdGhpcyB1bnRpbCBub3cgcHJldmVudHMgdGhl
IHNhbXBsaW5nIGxvZ2ljIGZyb20gcnVubmluZyBiZWNhdXNlIHdpdGhvdXQgaXQgdGhlIHBhZ2Ug
aXNuJ3QgY29uc2lkZXJlZCBjb250ZW50ZnVsLgogICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LnRleHRDb250ZW50ID0gJ1Rlc3QnIl07CiAg
ICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5nZSh3ZWJWaWV3LmdldCgpKTsKLSAg
ICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3Jd
LkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6
cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0u
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9w
Q29sb3IsIEhpdFRlc3RCZWZvcmVDU1NBbmltYXRpb24pCkBAIC0zNjksNyArMzY5LDcgQEAgVEVT
VChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0QmVmb3JlQ1NTQW5pbWF0aW9uKQogICAgIEVY
UEVDVF9OVUxMKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICB3YWl0Rm9y
U2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3LmdldCgpLCBAIjxzdHls
ZT5Aa2V5ZnJhbWVzIGNoYW5nZUJhY2tncm91bmRSZWQgeyB0byB7IGJhY2tncm91bmQtY29sb3I6
IHJlZDsgfSB9PC9zdHlsZT48Ym9keSBzdHlsZT0nbWFyZ2luOiAwOyBhbmltYXRpb246IGNoYW5n
ZUJhY2tncm91bmRSZWQgMXMgZm9yd2FyZHMgcGF1c2VkJz5UZXN0Iik7Ci0gICAgRVhQRUNUX0VR
KFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwg
V2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRD
bGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciks
IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwg
SGl0VGVzdER1cmluZ0NTU0FuaW1hdGlvbikKQEAgLTM5OSw3ICszOTksNyBAQCBURVNUKFNhbXBs
ZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RBZnRlckNTU0FuaW1hdGlvbikKICAgICAvLyBOb3Qgc2V0
dGluZyB0aGlzIHVudGlsIG5vdyBwcmV2ZW50cyB0aGUgc2FtcGxpbmcgbG9naWMgZnJvbSBydW5u
aW5nIGJlY2F1c2Ugd2l0aG91dCBpdCB0aGUgcGFnZSBpc24ndCBjb25zaWRlcmVkIGNvbnRlbnRm
dWwuCiAgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkudGV4dENvbnRlbnQgPSAnVGVzdCciXTsKICAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BD
b2xvclRvQ2hhbmdlKHdlYlZpZXcuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xv
cihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9y
OjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5
KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6
OnJlZCk7CiB9CiAKIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdENTU1BvaW50ZXJF
dmVudHNOb25lKQpAQCAtNDA4LDcgKzQwOCw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwg
SGl0VGVzdENTU1BvaW50ZXJFdmVudHNOb25lKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9z
YW1wbGVkUGFnZVRvcENvbG9yXSk7CiAKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHkg
c3R5bGU9J21hcmdpbjogMCc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyBwb2ludGVyLWV2ZW50czogbm9uZSc+PC9kaXY+VGVzdCJd
OwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BD
b2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOworICAgIEVYUEVDVF9FUShXZWJD
b3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENv
bG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMjI1MTY3PiAoU2FtcGxlZCBQYWdlIFRvcCBDb2xvcjogaG9vayBp
bnRvIHBhaW50aW5nIGxvZ2ljIGluc3RlYWQgb2YgdGFraW5nIHNuYXBzaG90cykKQEAgLTQ0Mywx
MyArNDQzLDEzIEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgTWFpbkRvY3VtZW50Q2hhbmdl
KQogICAgIH1dKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0Fu
ZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8Ym9keT5UZXN0Il07Ci0g
ICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9y
XS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29y
ZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xv
cl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiAgICAgRVhQRUNUX0VRKG5vdGlm
aWNhdGlvbkNvdW50LCAxVUwpOwogCiAgICAgbm90aWZpY2F0aW9uQ291bnQgPSAwOwogCiAgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5PlRlc3QiXTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29y
ZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9T
UkdCQUxvc3N5KFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKTsKICAgICAvLyBEZXBlbmRpbmcgb24gdGltaW5nLCBhIG5vdGlmaWNh
dGlvbiBjYW4gYmUgc2VudCBmb3Igd2hlbiB0aGUgbWFpbiBkb2N1bWVudCBjaGFuZ2VzIGFuZCB0
aGVuCiAgICAgLy8gd2hlbiB0aGUgbmV3IG1haW4gZG9jdW1lbnQgcmVuZGVycyBvciBib3RoIGNh
biBiZSBjb2FsZXNjZWQgaWYgcmVuZGVyaW5nIGlzIGZhc3QgZW5vdWdoLgogICAgIEVYUEVDVF9U
UlVFKG5vdGlmaWNhdGlvbkNvdW50ID09IDAgfHwgbm90aWZpY2F0aW9uQ291bnQgPT0gMik7CkBA
IC00NjksNiArNDY5LDYgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBNYWluRG9jdW1lbnRD
aGFuZ2UpCiAgICAgbm90aWZpY2F0aW9uQ291bnQgPSAwOwogCiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQ
YWludDpAIjxib2R5PlRlc3QiXTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZp
ZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUp
OworICAgIEVYUEVDVF9FUShXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFt3ZWJW
aWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRl
KTsKICAgICBFWFBFQ1RfRVEobm90aWZpY2F0aW9uQ291bnQsIDFVTCk7CiB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyNjc5MjNmNjMxZDdlYTQ0ZGUzN2Q5ZTEzODZjNjM4YWZk
ZDkzOTdlLi42YTkyODlmMjFmOTFlMGExMjViNTEzYTFhNjU3ZjRlZDljZGNkZDk5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wOC0xNiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNv
bG9yIHNwYWNlIHdoZW4gZ2V0dGluZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgY2FsbGlu
ZyBmaWxsVGV4dCgpIGFuZCBzdHJva2VUZXh0KCkgd2l0aCBhIGRpc3BsYXktcDMKKyAgICAgICAg
Y29sb3IgZm9yIGZpbGxTdHlsZSwgc3Ryb2tlU3R5bGUsIGFuZCBzaGFkb3dDb2xvciwgb24gYSBk
aXNwbGF5LXAzIGNhbnZhcy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRl
eHQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQuc2hh
ZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmls
bFRleHQuc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnN0
cm9rZVRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5zdHJva2VUZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbDoKKwogMjAyMS0w
OC0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gQWRkIHN1cHBvcnQgZm9yIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxU
ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDg5NmFmZDg2NTBmYTkzYmY0MjJhNjBlNzA3
NGY0NDc5Y2Q5M2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
LzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAK
KzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0CitUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2Vk
IHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCitBY3R1YWwgb3V0cHV0OgorCitQQVNTIFRl
c3QgaWYgZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAz
LmZpbGxUZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2Uu
cDMuZmlsbFRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzFhNjAwODc1NWZmNmMyOTQ3YmI2YjY3OWUx
YTk5YTc3NWI0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
LzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMgdGVz
dDogMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQ8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZh
cy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxi
b2R5IGNsYXNzPSJzaG93X291dHB1dCI+CisKKzxoMT4yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4
dDwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+VGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRo
IGEgc29saWQgZGlzcGxheS1wMyBjb2xvcjwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1
YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAi
IGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8
L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5j
X3Rlc3QoIlRlc3QgaWYgZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXkt
cDMgY29sb3IiKTsKK19hZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVyVGVz
dCgpOworCitjb25zdCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBzUkdC
UmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOworY2Fu
dmFzLmhlaWdodCA9IDEwMDsKKworbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9m
b250cy9BaGVtLnR0ZikiKTsKK2RvY3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9udCA9
ICI0MHB4IEFoZW0iOworCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7CisgICAgICAg
IGN0eC5maWxsVGV4dCgiQSIsIDAsIDUwKTsKKworICAgICAgICBjdHguZmlsbFN0eWxlID0gImJs
YWNrIjsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAw
KSI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDUwLCA1MCk7CisKKyAgICAgICAgbGV0IHBp
eGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICBsZXQgcGl4ZWxB
dCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeSAqIGNhbnZh
cy53aWR0aCArIHgpICogNDsKKyAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0sIHBp
eGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11d
OworICAgICAgICB9OworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgyNSwg
MjUpLCBzUkdCUmVkSW5QMyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3
NSwgMjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9KTsK
KworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0
LnNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMuZmlsbFRleHQuc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDAzYThh
MWE1Y2RiMGNkNWNiMGZlNWFjYzRkZjQxMTk2ZDQ2M2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5z
aGFkb3cKK1Rlc3QgaWYgZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIGRpc3BsYXktcDMgc2hh
ZG93IGNvbG9yCitBY3R1YWwgb3V0cHV0OgorCitQQVNTIFRlc3QgaWYgZmlsbFRleHQgY2FuIGJl
IHVzZWQgd2l0aCBhIGRpc3BsYXktcDMgc2hhZG93IGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5z
aGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmI3NGM2YWU0YWJhNTRmN2NjMGU0NmVjZGFjMWNmY2Q5
MzhkMDBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRl
c3Q6IDJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdzwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0
bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5j
c3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNlLnAz
LmZpbGxUZXh0LnNoYWRvdzwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+VGVzdCBpZiBmaWxsVGV4dCBj
YW4gYmUgdXNlZCB3aXRoIGEgZGlzcGxheS1wMyBzaGFkb3cgY29sb3I8L3A+CisKKworPHAgY2xh
c3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBjbGFzcz0ib3V0
cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZBSUwgKGZh
bGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+Cis8c2NyaXB0
PgordmFyIHQgPSBhc3luY190ZXN0KCJUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGgg
YSBkaXNwbGF5LXAzIHNoYWRvdyBjb2xvciIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBj
dHgpIHsKKworZGVmZXJUZXN0KCk7CisKK2NvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwg
MjU1XTsKK2NvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCitjYW52YXMu
d2lkdGggPSAxMDA7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworCitsZXQgZiA9IG5ldyBGb250RmFj
ZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIpOworZG9jdW1lbnQuZm9udHMuYWRkKGYp
OworZi5sb2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9
ICJibGFjayI7CisgICAgICAgIGN0eC5zaGFkb3dCbHVyID0gNDsKKyAgICAgICAgY3R4LnNoYWRv
d09mZnNldFggPSAwOworICAgICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDUwOworICAgICAgICBj
dHguc2hhZG93Q29sb3IgPSAiI2YwMCI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDAsIDAp
OworCisgICAgICAgIGN0eC5zaGFkb3dDb2xvciA9ICJibGFjayI7CisgICAgICAgIGN0eC5zaGFk
b3dDb2xvciA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgIGN0eC5maWxs
VGV4dCgiQSIsIDUwLCAwKTsKKworICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0
YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3Bs
YXktcDMiIH0pLmRhdGE7CisgICAgICAgIGxldCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgewor
ICAgICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAg
ICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhl
bHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgIH07CisKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsK
KworICAgICAgICB0LmRvbmUoKTsKKyAgICB9KTsKK30pOworCisKK30sIHtjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGYzNDQ3YTgyMTdiOWJkMWExZjRkZDZlZTNiMDg5ZDY5YTU2MGM3
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy5zdHJva2VUZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKzJkLmNvbG9y
LnNwYWNlLnAzLnN0cm9rZVRleHQKK1Rlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNlZCB3aXRo
IGEgc29saWQgZGlzcGxheS1wMyBjb2xvcgorQWN0dWFsIG91dHB1dDoKKworUEFTUyBUZXN0IGlm
IHN0cm9rZVRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnN0
cm9rZVRleHQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5zdHJva2VUZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM4MDg0YTQ0NDkwYmVkNTljZWRkYWFlOTAw
MjQ2N2ExMjU0ZGFmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMg
dGVzdDogMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0bWwv
Y2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3Mi
PgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNlLnAzLnN0
cm9rZVRleHQ8L2gxPgorPHAgY2xhc3M9ImRlc2MiPlRlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUg
dXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xvcjwvcD4KKworCis8cCBjbGFzcz0ib3V0
cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sg
Y29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIg
dCA9IGFzeW5jX3Rlc3QoIlRlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29s
aWQgZGlzcGxheS1wMyBjb2xvciIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsK
KworZGVmZXJUZXN0KCk7CisKK2NvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsK
K2NvbnN0IHNSR0JSZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCitjYW52YXMud2lkdGgg
PSAxMDA7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworCitsZXQgZiA9IG5ldyBGb250RmFjZSgiQWhl
bSIsICJ1cmwoL2ZvbnRzL0FoZW0udHRmKSIpOworZG9jdW1lbnQuZm9udHMuYWRkKGYpOworZi5s
b2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAg
IGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gIiNm
MDAiOworICAgICAgICBjdHgubGluZVdpZHRoID0gMjA7CisgICAgICAgIGN0eC5zdHJva2VUZXh0
KCJBIiwgMCwgNTApOworCisgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJibGFjayI7CisgICAg
ICAgIGN0eC5zdHJva2VTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAg
ICAgIGN0eC5zdHJva2VUZXh0KCJBIiwgNTAsIDUwKTsKKworICAgICAgICBsZXQgcGl4ZWxzID0g
Y3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29s
b3JTcGFjZTogImRpc3BsYXktcDMiIH0pLmRhdGE7CisgICAgICAgIGxldCBwaXhlbEF0ID0gZnVu
Y3Rpb24oeCwgeSkgeworICAgICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRo
ICsgeCkgKiA0OworICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29m
ZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAg
ICAgIH07CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNS
R0JSZWRJblAzKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSks
IGZ1bGxSZWRJblAzKTsKKworICAgICAgICB0LmRvbmUoKTsKKyAgICB9KTsKK30pOworCisKK30s
IHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rv
b2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29s
b3Jfc3BhY2UueWFtbAppbmRleCBlNjRkNmZiOTc3N2RjMGM1OWQ2NmY0YmJiNjA5MTU5NTcyNjZj
MzY5Li5mY2JiM2E5ZjMxY2JjN2MyZWViNTBiZDhkOWIxYThjNzRjM2E1MzRjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L3Rvb2xzL3lhbWwvZWxlbWVudC9jb2xvcl9zcGFjZS55YW1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9lbGVt
ZW50L2NvbG9yX3NwYWNlLnlhbWwKQEAgLTE3NSwzICsxNzUsMTMxIEBACiAgICAgICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIDIpOwog
ICAgIH0pOwogICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsKKworLSBuYW1lOiAy
ZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dAorICB0ZXN0aW5nOgorICAtIDJkLmNvbG9yLnNwYWNl
LnAzLmFuZC51aW50OAorICBkZXNjOiBUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGgg
YSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCisgIGF0dHJpYnV0ZXM6IHwKKyAgICB7Y29sb3JTcGFj
ZTogImRpc3BsYXktcDMifQorICBjb2RlOiB8CisgICAgZGVmZXJUZXN0KCk7CisKKyAgICBjb25z
dCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07CisgICAgY29uc3Qgc1JHQlJlZEluUDMg
PSBbMjM0LCA1MSwgMzUsIDI1NV07CisKKyAgICBjYW52YXMud2lkdGggPSAxMDA7CisgICAgY2Fu
dmFzLmhlaWdodCA9IDEwMDsKKworICAgIGxldCBmID0gbmV3IEZvbnRGYWNlKCJBaGVtIiwgInVy
bCgvZm9udHMvQWhlbS50dGYpIik7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkKGYpOworICAgIGYu
bG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHQuc3RlcChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgICAgIGN0eC5maWxs
U3R5bGUgPSAiI2YwMCI7CisgICAgICAgICAgICBjdHguZmlsbFRleHQoIkEiLCAwLCA1MCk7CisK
KyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiYmxhY2siOworICAgICAgICAgICAgY3R4LmZp
bGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgICAgICBjdHgu
ZmlsbFRleHQoIkEiLCA1MCwgNTApOworCisgICAgICAgICAgICBsZXQgcGl4ZWxzID0gY3R4Lmdl
dEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFj
ZTogImRpc3BsYXktcDMiIH0pLmRhdGE7CisgICAgICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0
aW9uKHgsIHkpIHsKKyAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lk
dGggKyB4KSAqIDQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4
ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07
CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVs
QXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICAgICAgdC5kb25lKCk7
CisgICAgICAgIH0pOworICAgIH0pOworCistIG5hbWU6IDJkLmNvbG9yLnNwYWNlLnAzLnN0cm9r
ZVRleHQKKyAgdGVzdGluZzoKKyAgLSAyZC5jb2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVz
YzogVGVzdCBpZiBzdHJva2VUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAz
IGNvbG9yCisgIGF0dHJpYnV0ZXM6IHwKKyAgICB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifQor
ICBjb2RlOiB8CisgICAgZGVmZXJUZXN0KCk7CisKKyAgICBjb25zdCBmdWxsUmVkSW5QMyA9IFsy
NTUsIDAsIDAsIDI1NV07CisgICAgY29uc3Qgc1JHQlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1
NV07CisKKyAgICBjYW52YXMud2lkdGggPSAxMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDEwMDsK
KworICAgIGxldCBmID0gbmV3IEZvbnRGYWNlKCJBaGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYp
Iik7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkKGYpOworICAgIGYubG9hZCgpLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgICAgIHQuc3RlcChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGN0eC5mb250
ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICIjZjAwIjsK
KyAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAyMDsKKyAgICAgICAgICAgIGN0eC5zdHJva2VU
ZXh0KCJBIiwgMCwgNTApOworCisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAiYmxhY2si
OworICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMTAwJSAw
IDApIjsKKyAgICAgICAgICAgIGN0eC5zdHJva2VUZXh0KCJBIiwgNTAsIDUwKTsKKworICAgICAg
ICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBj
YW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAg
ICAgICAgbGV0IHBpeGVsQXQgPSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgICAgICAgICAgbGV0
IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAgICAgICAgICAgIHJl
dHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCAr
IDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7
CisKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKworLSBuYW1l
OiAyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cKKyAgdGVzdGluZzoKKyAgLSAyZC5j
b2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVzYzogVGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUg
dXNlZCB3aXRoIGEgZGlzcGxheS1wMyBzaGFkb3cgY29sb3IKKyAgYXR0cmlidXRlczogfAorICAg
IHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9CisgIGNvZGU6IHwKKyAgICBkZWZlclRlc3QoKTsK
KworICAgIGNvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICBjb25zdCBz
UkdCUmVkSW5QMyA9IFsyMzQsIDUxLCAzNSwgMjU1XTsKKworICAgIGNhbnZhcy53aWR0aCA9IDEw
MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTAwOworCisgICAgbGV0IGYgPSBuZXcgRm9udEZhY2Uo
IkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0ZikiKTsKKyAgICBkb2N1bWVudC5mb250cy5hZGQo
Zik7CisgICAgZi5sb2FkKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdC5zdGVwKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsKKworICAgICAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICJibGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9
IDQ7CisgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WCA9IDA7CisgICAgICAgICAgICBjdHgu
c2hhZG93T2Zmc2V0WSA9IDUwOworICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gIiNmMDAi
OworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgMCwgMCk7CisKKyAgICAgICAgICAgIGN0
eC5zaGFkb3dDb2xvciA9ICJibGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAi
Y29sb3IoZGlzcGxheS1wMyAxMDAlIDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJB
IiwgNTAsIDApOworCisgICAgICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgw
LCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pLmRhdGE7CisgICAgICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsK
KyAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCAr
IDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwg
c1JHQlJlZEluUDMpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1
LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0p
OworICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436126</attachid>
            <date>2021-08-22 15:03:33 -0700</date>
            <delta_ts>2021-08-23 14:36:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229024-20210823080331.patch</filename>
            <type>text/plain</type>
            <size>55796</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxOWRjNjgyOTdjZDE4
MGE2ZmFkNzM1ZjIxYTgyZTc1N2U5N2Y5Ny4uMTBiZmVkMmY2MjUxZjkyYmFlNTNhMThjNzJkYzQ0
YTliZTBlNTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIxLTA4LTE2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFdoZW4gR1BVIGNhbnZhcyBpcyBl
bmFibGVkLCBEcmF3R2x5cGhzUmVjb3JkZXIgcmVjb3JkcyB0aGUgdGV4dCBmaWxsLAorICAgICAg
ICBzdHJva2UsIGFuZCBzaGFkb3cgY29sb3JzIGJ5IGdldHRpbmcgdGhlbSBmcm9tIHRoZSBjb250
ZXh0IHVzaW5nCisgICAgICAgIENHR1N0YXRlR2V0RmlsbENvbG9yIGV0Yy4gIFRoaXMgaXMgZG9u
ZSBzbyB0aGF0IGNvbG9yIGdseXBocyBoYXZlIGVhY2gKKyAgICAgICAgcGFydCBwYWludGVkIGlu
IHRoZSByaWdodCBjb2xvci4gIEJ1dCB0aGUgY3VycmVudCBjb252ZXJzaW9uIGZyb20KKyAgICAg
ICAgQ0dDb2xvciB0byBXZWJDb3JlOjpDb2xvciBsb3NzaWx5IGNvbnZlcnRzIHRvIHNSR0IuICBT
byB3ZSBuZWVkIHRvIGdldAorICAgICAgICB0aGUgY29sb3Igc3BhY2UgYW5kIGNvbG9yIGNvbXBv
bmVudHMgZnJvbSB0aGUgQ0dDb2xvciBhbmQgcHJlc2VydmUgdGhlbS4KKworICAgICAgICBUaGUg
ZXhpc3RpbmcgQ29sb3IoQ0dDb2xvclJlZikgY29uc3RydWN0b3IgaXMgcmVwbGFjZWQgYnkgdHdv
CisgICAgICAgIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucywgY3JlYXRlQW5kUHJlc2VydmVDb2xvclNw
YWNlIGFuZAorICAgICAgICByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5LCBzbyB0aGUgY29udmVy
c2lvbiBiZWhhdmlvciBpcyBjbGVhciBhdCBjYWxsCisgICAgICAgIHNpdGVzLiAgY3JlYXRlQW5k
UHJlc2VydmVDb2xvclNwYWNlIHdpbGwgbWF0Y2ggdGhlIENHQ29sb3IncyBjb2xvcgorICAgICAg
ICBzcGFjZSB0byBvbmUgb2YgdGhlIHByZWRlZmluZWQgc3BhY2VzIHRoYXQgV2ViQ29yZTo6Q29s
b3IgY2FuCisgICAgICAgIHJlcHJlc2VudC4gIElmIGl0J3Mgc29tZSBvdGhlciBjb2xvciBzcGFj
ZSwgd2UgY29udmVydCB0byBYWVogKG9uCisgICAgICAgIHBsYXRmb3JtcyB3aGVyZSB0aGF0J3Mg
YXZhaWxhYmxlKSwgc2luY2UgdGhhdCB3aWxsIHJlc3VsdCBpbiB0aGUgbGVhc3QKKyAgICAgICAg
bG9zcywgb3IgdG8gc1JHQiAob24gcGxhdGZvcm1zIHdoZXJlIFhZWiBpcyBub3QgYXZhaWxhYmxl
KS4KKworICAgICAgICBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZSwgd2hpY2ggaXMgdXNl
ZCB3aGVuIGRldGVybWluaW5nIHRoZQorICAgICAgICBDR0NvbG9yJ3MgY29sb3Igc3BhY2UsIGlz
IG5vdCB2ZXJ5IGV4cGVuc2l2ZSwgYnV0IGl0IHdpbGwgZG8gbW9yZSB0aGFuIGEKKyAgICAgICAg
cG9pbnRlciBjb21wYXJpc29uIGluIGNhc2Ugd2UgcGFzcyBpbiB0d28gQ0dDb2xvclNwYWNlUmVm
cyB0aGF0IGFyZQorICAgICAgICBlcXVpdmFsZW50IGJ1dCBub3QgdGhlIHNhbWUgcG9pbnRlciB2
YWx1ZS4gIFNpbmNlIG91ciBuZXcKKyAgICAgICAgY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSBm
dW5jdGlvbiB3aWxsIGJlIHVzZWQgd2l0aCBDR0NvbG9ycyB0aGF0IGhhdmUKKyAgICAgICAgYmVl
biBzZXQgV2ViQ29yZSBkdXJpbmcgY2FudmFzIGRyYXdpbmcsIHdlIHdpbGwgZ2V0IGJhY2sgdGhl
IHNhbWUKKyAgICAgICAgcG9pbnRlcnMgdGhhdCB3ZSBoYXZlIGNhY2hlZCBpbiBzUkdCQ29sb3JT
cGFjZVJlZigpLAorICAgICAgICBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCksIGV0Yy4gIElmIGNh
bGxpbmcgQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UKKyAgICAgICAgb24gYWxsIG91ciBz
dXBwb3J0ZWQgY29sb3Igc3BhY2VzIHR1cm5zIG91dCB0byBiZSB0b28gZXhwZW5zaXZlLCB3ZQor
ICAgICAgICBjb3VsZCBzdGFydCBieSBkb2luZyBhIHBvaW50ZXIgY29tcGFyaXNvbiBvbiBlYWNo
IGJlZm9yZSBjYWxsaW5nCisgICAgICAgIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlLgor
CisgICAgICAgIFRoZSB3YXkgY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZSBpcyB3cml0dGVuIHdl
IGNvdWxkIGVuZCB1cAorICAgICAgICBpbnN0YW50aWF0aW5nIGFsbCBvZiBvdXIgc3VwcG9ydGVk
IGNvbG9yIHNwYWNlcywgaWYgYW4gYXV0aG9yIHVzZWQgYW4KKyAgICAgICAgWFlaIGNvbG9yIHdo
ZW4gZHJhd2luZyB0ZXh0ICh0aGUgbGFzdCBjb2xvciBwcm9maWxlIHdlIGNoZWNrKS4gIFdlCisg
ICAgICAgIGNvdWxkIHRyeSBoYXJkZXIgdG8gYXZvaWQgZG9pbmcgdGhpcyBpZiBpdCdzIGltcG9y
dGFudC4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZp
bGxUZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5maWxsVGV4dC5zaGFkb3cuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnN0cm9rZVRleHQuaHRtbAorCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dDU1MgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENT
UyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y2FwdGlvbnNUZXh0Q29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29u
dmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAg
KC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIgc2V0Qm9yZGVyQ29sb3I6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybUNBTGF5ZXJXaW46OmJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChwcmlu
dENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6
OmRyYXdSZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSk6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kTG9zc2xlc3NseUNvbnZlcnRUb1N1
cHBvcnRlZENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZFBy
ZXNlcnZlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbnZlcnRDb2xv
ckNvbXBvbmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBo
c1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0
Um9vdENoaWxkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24pOgorCiAyMDIx
LTA4LTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbOmhh
cygpIHBzZXVkby1jbGFzc10gQmFzaWMgc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZmQwMjVhYjU5ODNl
NWI2ZGRkMWNmZDdkZWYwNjYwZTNiMTJiNTc4Li5iY2E1YWFjZTgxZjhlZTk5ODYxMzcxYjI5YjEy
NjJhNDJmMDI4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA4LTE4ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29s
b3Igc3BhY2Ugd2hlbiBnZXR0aW5nIGN1cnJlbnQgY29sb3IgaW4gRGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTgyODQ3Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIENoYW5nZSBleGlzdGluZyBDR0Nv
bG9yIC0+IFdlYkNvcmU6OkNvbG9yIGNvbnZlcnNpb25zIHRvIGJlIGV4cGxpY2l0CisgICAgICAg
IGFib3V0IGxvc3NpbHkgY29udmVydGluZyB0byBzUkdCLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisK
IDIwMjEtMDgtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIGFuIE9iamVjdElkZW50aWZpZXI8PiBmb3IgdGV4dCBjaGVja2VyIHJlcXVlc3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCmluZGV4IGQxMGUzMzUxZjMzZTQwN2JkYTI1M2M3ZWVkM2ExNDY4YTJiYzJkNGUu
LjBiYTFjOGIxMjEyNzNmZDM5ZDc2OTFkYzgyYzI0MzI2MzNiYjYwODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBA
IC0zMTcsNyArMzE3LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc1dpbmRvd0NTUygpIGNvbnN0CiAgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
IGJlaGF2aW9yOwogICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0YoTUFD
YXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
blVzZXIsICZiZWhhdmlvcikpOwogCi0gICAgQ29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkp
OworICAgIENvbG9yIHdpbmRvd0NvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3Iu
Z2V0KCkpKTsKICAgICBpZiAoIXdpbmRvd0NvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgd2luZG93
Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKIApAQCAtMzQyLDcgKzM0Miw3IEBAIFN0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NT
KCkgY29uc3QKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAKICAg
ICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJl
aGF2aW9yKSk7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBD
b2xvciBiYWNrZ3JvdW5kQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvci5nZXQo
KSkpOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKIApAQCAtMzU2LDcgKzM1Niw4IEBA
IFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5k
Q1NTKCkgY29uc3QKIENvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c1RleHRDb2xvcihib29sJiBpbXBvcnRhbnQpIGNvbnN0CiB7CiAgICAgTUFDYXB0aW9uQXBwZWFy
YW5jZUJlaGF2aW9yIGJlaGF2aW9yOwotICAgIENvbG9yIHRleHRDb2xvciA9IGFkb3B0Q0YoTUFD
YXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW5Vc2VyLCAmYmVoYXZpb3IpKS5nZXQoKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
Y29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSkuZ2V0KCk7CisgICAgQ29s
b3IgdGV4dENvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IuZ2V0KCkpKTsKICAg
ICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gVGhpcyBkZWZhdWx0IHZh
bHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9s
cy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIuCiAgICAgICAgIHRl
eHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IDAyZWUwYjY4YjI5MWE2NDM1N2Y3Nzk4MTdhYjYzNmIxNzgzZjczOTguLmE3
Y2YyMDhmMDcwYTlmOTAwNzc3MTNhNmI4MWZhZGI2OGI1YzhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yKENHQ29sb3JSZWYs
IE9wdGlvblNldDxGbGFncz4gPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xv
ciBjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoQ0dDb2xvclJlZiwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTIwNyw2ICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICB9OwogICAgIENvbG9yKFJlZjxPdXRPZkxpbmVDb21wb25lbnRzPiYm
LCBDb2xvclNwYWNlLCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKIAorI2lmIFVTRShDRykKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29sb3IgY3JlYXRlQW5kTG9zc2xlc3NseUNvbnZlcnRU
b1N1cHBvcnRlZENvbG9yU3BhY2UoQ0dDb2xvclJlZiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7
CisjZW5kaWYKKwogICAgIGVudW0gY2xhc3MgRmxhZ3NJbmNsdWRpbmdQcml2YXRlIDogdWludDhf
dCB7CiAgICAgICAgIFNlbWFudGljICAgICAgICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihGbGFnczo6U2VtYW50aWMpLAogICAgICAgICBVc2VDb2xvckZ1bmN0aW9uU2Vy
aWFsaXphdGlvbiAgID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlVzZUNvbG9yRnVuY3Rp
b25TZXJpYWxpemF0aW9uKSwKQEAgLTI2OCw2ICsyNzIsNyBAQCBib29sIG91dE9mTGluZUNvbXBv
bmVudHNzRXF1YWxJZ25vcmluZ1NlbWFudGljQ29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xv
ciYpOwogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYpOwogV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxv
c3N5KENHQ29sb3JSZWYpOwogI2VuZGlmCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAwMmEyNmQ1N2I1NWVjYWRlNDNjNWYyZWUzOTVm
ODMzMjkyNjg3OWE5Li4yZDI4NzE2NzdhMTc3YmJlNmY0ODc4OGVkODQzZTFmNTVhZGU2YTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtODIwLDcgKzgyMCw3IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlw
ZSB2YWx1ZSkKIAogQ29sb3IgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFttX2xheWVyIGJhY2tncm91bmRDb2xvcl07CisgICAgcmV0
dXJuIHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW21fbGF5ZXIgYmFja2dyb3VuZENvbG9yXSk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldEJhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IDgy
N2I5MzE0OGJhZTM3NmViNTJlODA3NTE3ZWIxNGVlMTQ1YWU0NDguLjBjNzFkNDM4ZWU0MzU5MzUx
NjA5M2Y4M2FjMWI0YTc0MjEzZjI4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVy
Lm1tCkBAIC0xNDcsNyArMTQ3LDcgQEAgLSAodm9pZClpbnZhbGlkYXRlCiAKIC0gKHZvaWQpc2V0
Qm9yZGVyQ29sb3I6KENHQ29sb3JSZWYpYm9yZGVyQ29sb3IKIHsKLSAgICBfdGlsZUNvbnRyb2xs
ZXItPnNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKFdlYkNvcmU6OkNvbG9yKGJvcmRlckNvbG9yKSk7
CisgICAgX3RpbGVDb250cm9sbGVyLT5zZXRUaWxlRGVidWdCb3JkZXJDb2xvcihXZWJDb3JlOjpy
b3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGJvcmRlckNvbG9yKSk7CiB9CiAKIC0gKHZvaWQpc2V0
Qm9yZGVyV2lkdGg6KENHRmxvYXQpYm9yZGVyV2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKaW5kZXggNjg4MTIyMWIwNDU4ZGNjOTQ4NGYzNGY0MTY2M2RkZDc0ZTEyODc3YS4uYjYyOGRh
OTZiODZmYzIyYWMzZjBjYzUwOTI2YzQ4MjM4ZjdkNWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbi5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0
TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQogCiBDb2xvciBQbGF0Zm9ybUNB
TGF5ZXJXaW46OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENBQ0ZMYXll
ckdldEJhY2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpKTsKKyAgICByZXR1cm4gcm91bmRBbmRD
bGFtcFRvU1JHQkFMb3NzeShDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQo
KSkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiB2YWx1ZSkKQEAgLTcwMyw3ICs3MDMsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRy
YW5zZm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFu
c2ZvcgogCiBzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGlu
dCBpbmRlbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7Ci0gICAg
Q29sb3IgbGF5ZXJDb2xvcihjb2xvcik7CisgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENs
YW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
LmNwcAppbmRleCBkYmQzNjNlNjEzY2ViMDdlMDM2NjczMzU1ZDA0N2VkYWFhNTJlNTMxLi5hNmM0
MmZmNzIyZWZkYjg3ZDViOGNmMDAzNDRhMzEwMzQ3YmVkOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3UmVwYWludENvdW50ZXJzKENBQ0ZMYXllclJlZiBj
YUxheWVyLCBDR0NvbgogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENv
bG9yOjpyZWQpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0Q0cgZ3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQpOwotICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoZ3JhcGhpY3ND
b250ZXh0LCBvd25lcigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xvcik7CisgICAgUGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihncmFwaGljc0NvbnRleHQsIG93bmVyKCks
IGRyYXdDb3VudCwgcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShiYWNrZ3JvdW5kQ29sb3IpKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6aW50ZXJuYWxTZXROZWVkc0Rp
c3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGRhYmM3ZTc3MzQwMDU1MDQ1MWYy
NzA0ZTExYzgxOGZjYzZkMmM4NTIuLjEzZWNiMzM2MTg1MmQ1YmMxMjlkZjFhZmUzMjgxOWE3NjAy
M2RjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCkBAIC01NCw5ICs1NCwxMCBAQCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxSVUNh
Y2hlUG9saWN5PFdlYkNvcmU6OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBy
b3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3IpCitzdGQ6Om9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29s
b3IpCiB7Ci0gICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29s
b3Igc3BhY2VzLgorICAgIC8vIEZJWE1FOiBJbnRlcnByZXRpbmcgY29tcG9uZW50cyBvZiBhIGNv
bG9yIGluIGFuIGFyYml0cmFyeSBjb2xvciBzcGFjZQorICAgIC8vIGFzIHNSR0IgY291bGQgYmUg
d3JvbmcsIG5vdCBqdXN0IGxvc3N5LgogCiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTg3LDkgKzg4LDUyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3Ip
CiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhICkpOwogfQogCi1Db2xvcjo6Q29s
b3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKLSAgICA6IENvbG9y
KHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IpLCBmbGFncykKK0NvbG9yIENvbG9yOjpj
cmVhdGVBbmRMb3NzbGVzc2x5Q29udmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZShDR0NvbG9yUmVm
IGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogeworICAgIGF1dG8gc291cmNlQ0dDb2xv
clNwYWNlID0gQ0dDb2xvckdldENvbG9yU3BhY2UoY29sb3IpOworI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19YWVpfQ09MT1JfU1BBQ0UpCisgICAgYXV0byBkZXN0aW5hdGlvbkNHQ29sb3JTcGFjZSA9
IHh5ekNvbG9yU3BhY2VSZWYoKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSA9IENv
bG9yU3BhY2U6OlhZWl9ENTA7CisjZWxzZQorICAgIGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGF1dG8gZGVzdGluYXRpb25Db2xvclNwYWNl
ID0gQ29sb3JTcGFjZTo6U1JHQjsKKyNlbmRpZgorICAgIEFTU0VSVChDR0NvbG9yU3BhY2VHZXRO
dW1iZXJPZkNvbXBvbmVudHMoZGVzdGluYXRpb25DR0NvbG9yU3BhY2UpID09IDMpOworCisgICAg
YXV0byBzb3VyY2VDb21wb25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworICAg
IENHRmxvYXQgZGVzdGluYXRpb25Db21wb25lbnRzWzNdIHsgfTsKKworICAgIGF1dG8gdHJhbnNm
b3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNmb3JtQ3JlYXRlKGRlc3RpbmF0aW9uQ0dDb2xvclNw
YWNlLCBudWxscHRyKSk7CisgICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIHNvdXJjZUNHQ29sb3JTcGFjZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25Db21w
b25lbnRzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIGZsb2F0
IGEgPSBkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgYiA9IGRlc3RpbmF0aW9u
Q29tcG9uZW50c1sxXTsKKyAgICBmbG9hdCBjID0gZGVzdGluYXRpb25Db21wb25lbnRzWzJdOwor
ICAgIGZsb2F0IGFscGhhID0gQ0dDb2xvckdldEFscGhhKGNvbG9yKTsKKworICAgIHJldHVybiBD
b2xvcihPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyBhLCBiLCBjLCBhbHBoYSB9KSwgZGVz
dGluYXRpb25Db2xvclNwYWNlLCBmbGFncyk7Cit9CisKK0NvbG9yIENvbG9yOjpjcmVhdGVBbmRQ
cmVzZXJ2ZUNvbG9yU3BhY2UoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFn
cykKK3sKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIHNp
emVfdCBudW1Db21wb25lbnRzID0gQ0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7
CisgICAgYXV0byBjb2xvclNwYWNlID0gY29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDR0NvbG9y
R2V0Q29sb3JTcGFjZShjb2xvcikpOworCisgICAgaWYgKG51bUNvbXBvbmVudHMgIT0gNCB8fCAh
Y29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUFuZExvc3NsZXNzbHlDb252ZXJ0VG9T
dXBwb3J0ZWRDb2xvclNwYWNlKGNvbG9yLCBmbGFncyk7CisKKyAgICBjb25zdCBDR0Zsb2F0KiBj
b21wb25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOworCisgICAgZmxvYXQgYSA9
IGNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgYiA9IGNvbXBvbmVudHNbMV07CisgICAgZmxvYXQg
YyA9IGNvbXBvbmVudHNbMl07CisgICAgZmxvYXQgYWxwaGEgPSBjb21wb25lbnRzWzNdOworCisg
ICAgcmV0dXJuIENvbG9yKE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7IGEsIGIsIGMsIGFs
cGhhIH0pLCAqY29sb3JTcGFjZSwgZmxhZ3MpOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPENHQ29s
b3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29udmVydFRvQ0dDb21wYXRp
YmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gY29tcG9uZW50cykKQEAgLTE4MSw2ICsyMjUsNyBAQCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcAogICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNmb3JtQ3JlYXRl
KG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxwdHIpKTsKICAgICBh
dXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKHRyYW5z
Zm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQs
IHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgLy8gRklYTUU6IENHQ29sb3JUcmFuc2Zvcm1Db252
ZXJ0Q29sb3JDb21wb25lbnRzIGRvZXNuJ3QgY29weSBvdmVyIGFueSBhbHBoYSBjb21wb25lbnQu
CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sw
XSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKaW5kZXggMTQ5MWU0MWI5
MGNlOWRkYzZlNzhlZWJjYTIwOGVmMzhmN2IyYWM4YS4uOGM4MWMxMGY3ODE2NTMwN2U5ZWQyMzU4
YzZkMDczNWI4NDQ5MmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCkBAIC0xMDgsNiArMTA4LDQ2IEBAIENHQ29sb3JT
cGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCitzdGQ6Om9wdGlvbmFsPENv
bG9yU3BhY2U+IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UpCit7CisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3Bh
Y2UsIHNSR0JDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29sb3JTcGFjZTo6U1JH
QjsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkK
KyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgYWRvYmVS
R0IxOTk4Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6OkE5OFJH
QjsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BB
Q0UpCisgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIGRp
c3BsYXlQM0NvbG9yU3BhY2VSZWYoKSkpCisgICAgICAgIHJldHVybiBDb2xvclNwYWNlOjpEaXNw
bGF5UDM7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBsYWJDb2xvclNwYWNlUmVmKCkgbm90IGlt
cGxlbWVudGVkLgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xJTkVBUl9TUkdCX0NPTE9SX1NQ
QUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCBs
aW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6Okxp
bmVhclNSR0I7CisjZW5kaWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ST01NUkdCX0NPTE9S
X1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xvclNwYWNl
LCBST01NUkdCQ29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6OlBy
b1Bob3RvUkdCOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8yMDIwX0NP
TE9SX1NQQUNFKQorICAgIGlmIChDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShjb2xvclNw
YWNlLCBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCkpKQorICAgICAgICByZXR1cm4gQ29sb3JTcGFj
ZTo6UmVjMjAyMDsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9DT0xPUl9T
UEFDRSkKKyAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwg
eHl6Q29sb3JTcGFjZVJlZigpKSkKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2U6OlhZWl9ENTA7
CisjZW5kaWYKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIH0KIAogI2VuZGlmIC8v
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JTcGFjZUNHLmgKaW5kZXggZGI2MDQxMGU2ZDQ3M2FjYTdlYTdhMTk0Y2M3OGM5NjRjOThiYTM3
My4uMDMyOTMwZjUyYjgxNTY3ZjVkOWVhYTk2ZGQ1MTM3N2NjZDU3OGU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgPG9wdGlvbmFsPgogCiB0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JT
cGFjZVJlZjsKIApAQCAtNjUsNiArNjYsOCBAQCBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VS
ZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJl
ZiB4eXpDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKIAorc3RkOjpvcHRpb25hbDxDb2xvclNwYWNl
PiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7CisKIHN0YXRpYyBp
bmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcAppbmRleCBiZWUxOTRkNTMzYTE5MDNkNjM0ZDY5MmQ1NjMzZDczMzMyNjMwNjFjLi5h
MWJlM2NkYjkzYWI0MGJkY2ViMGU5OWViOGJhZGEzNWJhNzc0NWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCkBAIC0yNjEsNyArMjYxLDggQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0
ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogICAgIGNvbnN0IGF1dG8mIHNoYWRvd1N0eWxlID0g
KnN0YXRpY19jYXN0PGNvbnN0IENHU2hhZG93U3R5bGUqPihDR1N0eWxlR2V0RGF0YShzdHlsZSkp
OwogICAgIGF1dG8gcmFkID0gZGVnMnJhZChzaGFkb3dTdHlsZS5hemltdXRoIC0gMTgwKTsKICAg
ICBhdXRvIHNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzdGQ6OmNvcyhyYWQpLCBzdGQ6OnNpbihy
YWQpKSAqIHNoYWRvd1N0eWxlLmhlaWdodDsKLSAgICB1cGRhdGVTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENHU3R5bGVHZXRDb2xvcihzdHlsZSksIFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIGF1dG8gc2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29s
b3Ioc3R5bGUpOworICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJh
ZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3Rh
dGUsIENHUmVjdCkKQEAgLTMzMCw4ICszMzEsMTAgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQK
ICAgICAgICAgY3RtRml4dXAgPSBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICBtX293bmVyLmNvbmNh
dENUTShjdG1GaXh1cCk7CiAKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ0dHU3RhdGVHZXRGaWxsQ29s
b3IoZ3N0YXRlKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ0dHU3RhdGVHZXRTdHJva2VDb2xv
cihnc3RhdGUpKTsKKyAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0RmlsbENvbG9yKGdz
dGF0ZSk7CisgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0
YXRlKTsKKyAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JT
cGFjZShmaWxsQ29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5k
UHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0
YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKICAgICBtX293bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVt
V2l0aENhY2hlZEZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zy
b21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwg
Y291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3Ro
aW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dy5jcHAKaW5kZXggZjI0Njg1OGFmNTAwZDhlNDVlN2NlNWM4NTkwNmIwOTA5OTQ3YjcwYi4uMDMz
YzkxMmYzZWM0ZDVkYTMwNGE3NTRlNDc3ODExMjlhOGMxNjZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcApAQCAtMTE2LDEyICsxMTYsMTEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRM
YXllcihSZWY8UGxhdGZvcm1DQUxheWVyPiYKICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9v
dENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7CiAgICAgbV9yb290Q2hpbGQtPnNldFBvc2l0
aW9uKHJvb3RCb3VuZHMub3JpZ2luKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0Qm91bmRzKEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShyb290Qm91bmRzLnNpemUpKSk7Ci0gICAgbV9y
b290Q2hpbGQtPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dD
b2xvckJsYWNrKSk7CisgICAgbV9yb290Q2hpbGQtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6
YmxhY2spOwogI2lmbmRlZiBOREVCVUcKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gcmVkQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsKLSAgICBy
b290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihyZWRDb2xvci5nZXQoKSk7CisgICAgcm9vdExh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnJlZCk7CiAjZWxzZQotICAgIHJvb3RMYXll
ci0+c2V0QmFja2dyb3VuZENvbG9yKENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxh
Y2spKTsKKyAgICByb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6YmxhY2spOwog
I2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGRmNTk2ZWZhZWVmM2Q1Zjk3MTU3YTkxYTk4
OWQwOTljYmMxMDVkMmEuLjY0MGE0NTI2YzU3YWVlZTFmOTEyZGU3ZjU2M2U2MzczMTI2ZjEzZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQpAQCAtMzE1LDcgKzMxNSw3IEBAIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6
Y29sb3IoKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3Rl
Ym9hcmRUeXBlOlVJQ29sb3JQYm9hcmRUeXBlXTsKICAgICBVSUNvbG9yICp1aUNvbG9yID0gW05T
S2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzOlBBTDo6Z2V0VUlDb2xvckNs
YXNzKCkgZnJvbURhdGE6ZGF0YSBlcnJvcjpuaWxdOwotICAgIHJldHVybiBDb2xvcih1aUNvbG9y
LkNHQ29sb3IpOworICAgIHJldHVybiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KHVpQ29sb3Iu
Q0dDb2xvcik7CiB9CiAKIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTQ3OTkxOGEyOGUwNWI5Yjdm
MDI5MDdlNDRlZTA3MTg3NThiMzMwMi4uMTM2ZDAwNWM5OWU3NmFlMjg1ZmVkN2JjMWE0ZmU5Nzll
YjcyNDcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpA
QCAtMTM0NCw3ICsxMzQ0LDcgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxDU1NWYWx1ZVN5c3RlbUNv
bG9ySW5mb3JtYXRpb24+JiBjc3NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXQKIHN0YXRpYyBpbmxp
bmUgc3RkOjpvcHRpb25hbDxDb2xvcj4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVTeXN0ZW1Db2xv
ckluZm9ybWF0aW9uKENTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbiBzeXN0ZW1Db2xvcklu
Zm9ybWF0aW9uLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQogewogICAgIGlmIChhdXRvIGNvbG9y
ID0gd3RmT2JqQ01zZ1NlbmQ8VUlDb2xvciAqPihQQUw6OmdldFVJQ29sb3JDbGFzcygpLCBzeXN0
ZW1Db2xvckluZm9ybWF0aW9uLnNlbGVjdG9yKSkgewotICAgICAgICBDb2xvciBzeXN0ZW1Db2xv
ciA9IHsgY29sb3IuQ0dDb2xvciwgQ29sb3I6OkZsYWdzOjpTZW1hbnRpYyB9OworICAgICAgICBD
b2xvciBzeXN0ZW1Db2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yLkNHQ29sb3Ip
LCBDb2xvcjo6RmxhZ3M6OlNlbWFudGljKTsKIAogICAgICAgICBpZiAoc3lzdGVtQ29sb3JJbmZv
cm1hdGlvbi5vcGFjaXR5IDwgMS4wZikKICAgICAgICAgICAgIHN5c3RlbUNvbG9yID0gc3lzdGVt
Q29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoc3lzdGVtQ29sb3JJbmZvcm1hdGlvbi5v
cGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IGNkY2QzOTdhZDg1Y2NmYjdiYjFmZDBlNWUzOGVkMjhlOTJlNzMyNGQuLmYyYzli
YWUxODYwODUwMWZhMmMyNWUxMDg2ZDhmODRhYTAyZGM3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTc4NCw3ICsxNzg0LDcgQEAg
LSAoQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgogCiAtICh2b2lkKXNldFVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcjooQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRD
b2xvck92ZXJyaWRlCiB7Ci0gICAgX3BhZ2UtPnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlLkNHQ29sb3IpOworICAgIF9w
YWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJDb3JlOjpyb3VuZEFu
ZENsYW1wVG9TUkdCQUxvc3N5KHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlLkNHQ29s
b3IpKTsKIH0KIAogKyAoQk9PTClhdXRvbWF0aWNhbGx5Tm90aWZpZXNPYnNlcnZlcnNPZlVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQppbmRleCBiNTYyZmE0YTA4
M2FmNTk4ZjY3NzM5YjViNjliOTA2NTk2NzFiMzYyLi4zNWMyMjVmM2NkNjc4OWFlMjA0M2Y5NjFl
OTAwNWM1MzRlYmU0ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpAQCAtNjcsNyArNjcsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCiAgICAg
ICAgIFVSTChzY29wZVVSTCksCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q6OkRpc3BsYXk+KGRpc3BsYXkpLAogICAgICAgICBVUkwoc3RhcnRVUkwpLAot
ICAgICAgICBXZWJDb3JlOjpDb2xvcih0aGVtZUNvbG9yLkNHQ29sb3IpLAorICAgICAgICBXZWJD
b3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KHRoZW1lQ29sb3IuQ0dDb2xvciksCiAgICAg
fTsKIAogICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PihzZWxmLCBXVEZNb3ZlKGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGRh
NDUwYTJlN2NkNmY4ZTRmNmY1MTFhNjU0OTc2NjE3NjAwMzRiZjYuLjBjNmIxYmQxNzcyNGVmZmMy
YTYwNmZiNTljNGIzMDJhOTlmZmNmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00ODEsNyArNDgxLDcgQEAgZW51bSBjbGFzcyBB
bGxvd1BhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA6IGJvb2wgeyBObywgWWVzIH07CiBzdGF0
aWMgV2ViQ29yZTo6Q29sb3IgYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3
ICp3ZWJWaWV3LCBBbGxvd1BhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSBhbGxvd1BhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZSkKIHsKICAgICBpZiAod2ViVmlldy0+X2N1c3RvbUNvbnRlbnRW
aWV3KQotICAgICAgICByZXR1cm4gW3dlYlZpZXctPl9jdXN0b21Db250ZW50VmlldyBiYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3I7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpyb3VuZEFuZENsYW1w
VG9TUkdCQUxvc3N5KFt3ZWJWaWV3LT5fY3VzdG9tQ29udGVudFZpZXcgYmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yKTsKIAogICAgIGlmICh3ZWJWaWV3LT5fZ2VzdHVyZUNvbnRyb2xsZXIpIHsKICAg
ICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSB3ZWJWaWV3LT5fZ2VzdHVyZUNvbnRyb2xsZXIt
PmJhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdCgpOwpAQCAtNTA3LDExICs1MDcsMTEg
QEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJW
aWV3ICp3ZWJWaWV3LCBBbGxvd1BhZ2VCYWMKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IGJh
c2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKHdlYlZpZXcsIGFsbG93UGFnZUJhY2tncm91bmRD
b2xvck92ZXJyaWRlKTsKIAogICAgIGlmICghY29sb3IuaXNWYWxpZCgpICYmIHdlYlZpZXctPl9j
b250ZW50VmlldykKLSAgICAgICAgY29sb3IgPSBbd2ViVmlldy0+X2NvbnRlbnRWaWV3IGJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpyb3VuZEFuZENs
YW1wVG9TUkdCQUxvc3N5KFt3ZWJWaWV3LT5fY29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yKTsKIAogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKSB7CiAjaWYgSEFWRShPU19EQVJL
X01PREVfU1VQUE9SVCkKLSAgICAgICAgY29sb3IgPSBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRD
b2xvci5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CiAjZWxzZQog
ICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGFkZDc1
MjcwOTEyYjljODc2ZWZkMmIzMjdkNjJkNTZiYjc5MjU0ZTEuLjZmMzhjMzk1ODE4MjJkMTA2N2Ix
YWY1Yjc0MmE4ODNkZmY5MWI4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMTUsNyArMTAxNSw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhCiAKIFdlYkNvcmU6OkNvbG9yIFBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmll
d0JhY2tncm91bmRDb2xvcigpCiB7Ci0gICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3IGJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShbbV9jb250ZW50VmlldyBiYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOwogfQogCiB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1ZXN0U2Nyb2xsVG9SZWN0KGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
NjdiZmYwNDJjNGY0OTkzYjEwOTI3OGI3M2U0ZTNlZDk0ODMxODU1OC4uYmQ0M2E3YTA0OWExODZi
OGU4MjdlOWU2OTBkY2NhZjhiMWVkOGNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zNjMwLDcgKzM2
MzAsOCBAQCAtICh2b2lkKV9zZXRGb250U2l6ZUZvcldlYlZpZXc6KENHRmxvYXQpZm9udFNpemUg
c2VuZGVyOihpZClzZW5kZXIKIAogLSAodm9pZClfc2V0VGV4dENvbG9yRm9yV2ViVmlldzooVUlD
b2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2UtPmV4ZWN1dGVFZGl0
Q29tbWFuZCgiRm9yZUNvbG9yIl9zLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJD
b3JlOjpDb2xvcihjb2xvci5DR0NvbG9yKSkpOworICAgIFdlYkNvcmU6OkNvbG9yIHRleHRDb2xv
cihXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yLkNHQ29sb3IpKTsKKyAg
ICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JIVE1MKHRleHRDb2xvcikpOwogfQogCiAtICh2b2lkKXRvZ2dsZVN0cmlrZVRo
cm91Z2hGb3JXZWJWaWV3OihpZClzZW5kZXIKQEAgLTQ4NzEsNyArNDg3Miw3IEBAIC0gKHZvaWQp
dXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQogCiAtICh2b2lkKXVw
ZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWVBc0NvbG9yOihVSUNvbG9yICopdmFsdWUKIHsKLSAgICBX
ZWJDb3JlOjpDb2xvciBjb2xvcih2YWx1ZS5DR0NvbG9yKTsKKyAgICBXZWJDb3JlOjpDb2xvciBj
b2xvcihXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KHZhbHVlLkNHQ29sb3IpKTsK
ICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZyA9IFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1M
KGNvbG9yKTsKIAogICAgIF9wYWdlLT5zZXRGb2N1c2VkRWxlbWVudFZhbHVlKF9mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmVsZW1lbnRDb250ZXh0LCB2YWx1ZUFzU3RyaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDRkNzQ4Yjlm
OGQzZjEyMzhkNzNmYWRiNGU0Nzg0MTJhNTUyYmE4NTAuLjdiMDc5ODU4ZTgxMWEwODJjNTE4NzAy
ZDAyMTNiYTliMThlMTU0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtMTU1OSw5ICsxNTU5LDkgQEAgQ29sb3IgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAgICAgIHJldHVy
biBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcjsKIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NV
UFBPUlQpCi0gICAgcmV0dXJuIFVJQ29sb3Iuc3lzdGVtQmFja2dyb3VuZENvbG9yLkNHQ29sb3I7
CisgICAgcmV0dXJuIFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koVUlDb2xvci5z
eXN0ZW1CYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CiAjZWxzZQotICAgIHJldHVybiBVSUNvbG9y
LndoaXRlQ29sb3IuQ0dDb2xvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29sb3I6OndoaXRlOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IGJlMTQ0YmIzN2Q5MzEyOWYzYTg2NDM3MzUxYjk4OGJiZjU1NTE4YTYuLjcy
MDBlOTYwNjYwMmM2ZGVjZTNkZDZjODU0Yjc4ZTRjYmE2MTI2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNzI4LDkgKzcyOCw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdmlld1JlCiBDb2xvciBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKLSAgICByZXR1cm4gTlNDb2xvci5jb250cm9sQmFja2dyb3VuZENvbG9yLkNHQ29sb3I7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koTlNDb2xvci5jb250
cm9sQmFja2dyb3VuZENvbG9yLkNHQ29sb3IpOwogI2Vsc2UKLSAgICByZXR1cm4gTlNDb2xvci53
aGl0ZUNvbG9yLkNHQ29sb3I7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQppbmRleCA3NzQyNmI3Y2RkNjNjMmU3MDc2NGYxNGY4MDU3ODQ1YWQ1NzJkMDll
Li41ZWRhMzc2YWNkNGY4ZjIwMmNhZGVkZjQwNmIzYWI4ZTQ2OTA4ZTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTYyNCw3
ICs2MjQsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyYW1lKQog
ICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwog
CiAgICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzUzMzI5NDg+IGdldCB0aGUgYmFj
a2dyb3VuZCBjb2xvciBmcm9tIFBERktpdCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgaXQKLSAgICAg
ICAgZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCktPnNldElubGluZVN0eWxlUHJvcGVydHkoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25G
b3JIVE1MKFtDb2NvYUNvbG9yIGdyYXlDb2xvcl0uQ0dDb2xvcikpOworICAgICAgICBkb2N1bWVu
dC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2Vi
Q29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbQ29jb2FDb2xvciBncmF5Q29sb3JdLkNH
Q29sb3IpKSk7CiAgICAgfQogCiAgICAgaWYgKHN1cHBvcnRzRm9ybXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggOWExODliNmQyZjlmZDRm
NWNiMDI4NzBmNmFkNGJlYTEyYWEwNmVjNy4uN2IxZDdhYzc3YjkxNGU2MDUyZTc3MGY2MWYwM2Yw
ZDM4MmM2OWViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC00NDMsNyArNDQzLDcgQEAgLSAodm9pZClfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0
ZXNXaGlsZU9mZnNjcmVlbgogICAgICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJD
b3JlOjpjb2xvckZyb21OU0NvbG9yKFtiYWNrZ3JvdW5kQ29sb3IgY29sb3JVc2luZ0NvbG9yU3Bh
Y2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0pOwogICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZWxzZQotICAgICAgICAgICAgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IgPSBXZWJDb3JlOjpDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICAgICAgV2Vi
Q29yZTo6Q29sb3IgY29sb3IoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShiYWNr
Z3JvdW5kQ29sb3IpKTsKICNlbmRpZgogICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91
bmRDb2xvcihjb2xvcik7CiAgICAgICAgICAgICB2aWV3LT5zZXRTaG91bGRVcGRhdGVXaGlsZU9m
ZnNjcmVlbihbd2ViVmlldyBzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbl0pOwpAQCAtMTM4OCw3
ICsxMzg4LDcgQEAgLSAoTlNSZWN0KXJlY3RGb3JTY3JvbGxUb1Zpc2libGUKIAogLSAodm9pZClz
ZXRDYXJldENvbG9yOihDR0NvbG9yUmVmKWNvbG9yCiB7Ci0gICAgV2ViQ29yZTo6Q29sb3IgcUNv
bG9yID0gY29sb3IgPyBXZWJDb3JlOjpDb2xvcihjb2xvcikgOiBXZWJDb3JlOjpDb2xvcjo6Ymxh
Y2s7CisgICAgV2ViQ29yZTo6Q29sb3IgcUNvbG9yID0gY29sb3IgPyBXZWJDb3JlOjpDb2xvcihX
ZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSkgOiBXZWJDb3JlOjpDb2xv
cjo6YmxhY2s7CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0gY29yZShzZWxmKTsKICAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuc2V0Q2FyZXRDb2xvcihxQ29sb3IpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxMGRjYjMyMjZkNThkN2Fh
NjAwZDExYzgxNTM4ZWFlNDMyZDhhNzIuLjliNmRlZGUzMWU0MWQ1Zjg4YmVjZDk0ZGNkZDg4NGY5
ZGJkZGU0NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wOC0xOCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXlj
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNvbG9yIHNwYWNlIHdoZW4gZ2V0dGlu
ZyBjdXJyZW50IGNvbG9yIGluIERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTAyNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODE4Mjg0Nzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBDaGFuZ2UgZXhpc3RpbmcgQ0dDb2xvciAtPiBXZWJDb3JlOjpDb2xv
ciBjb252ZXJzaW9ucyB0byBiZSBleHBsaWNpdAorICAgICAgICBhYm91dCBsb3NzaWx5IGNvbnZl
cnRpbmcgdG8gc1JHQi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA4LTE5
ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtidWlsZC53ZWJraXQub3JnXSBQb3J0IG9sZCB1bml0IHRlc3Qgd2l0aCB0aGUgZXhwZWN0
ZWQgYnVpbGQgc3RlcHMgdG8gdGhlIG5ldyBidWlsZGJvdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1t
CmluZGV4IDdhNmJlMDlhMzE3NTFlYmNkNGMwZjdhMDM3ZDIxNmU4ZTlkOTU1ODkuLjQ2ZWM0YmVm
YjNiMjA4Nzc3ZjY2MTdmZjVlNjQ5ZWJlZWQxMjcxYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3Iu
bW0KQEAgLTE0OSw3ICsxNDksNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIFNvbGlkQ29s
b3IpCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKIAog
ICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZpZXcuZ2V0
KCksIGNyZWF0ZUhUTUxHcmFkaWVudFdpdGhDb2xvclN0b3BzKCJyaWdodCJfcywgeyAicmVkIl9z
LCAicmVkIl9zIH0pKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3Nh
bXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKKyAgICBF
WFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2Ft
cGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwogfQogCiBU
RVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIERpZmZlcmVudENvbG9yc1dpdGhvdXRPdXRsaWVyQmVs
b3dNYXhEaWZmZXJlbmNlKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BD
b2xvciwgSGl0VGVzdEhUTUxDYW52YXNXaXRob3V0UmVuZGVyaW5nQ29udGV4dCkKICAgICBFWFBF
Q1RfTlVMTChbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwogCiAgICAgd2FpdEZvclNh
bXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmlldy5nZXQoKSwgQCI8Ym9keSBz
dHlsZT0nbWFyZ2luOiAwJz48Y2FudmFzIHN0eWxlPSd3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAl
OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQnPjwvY2FudmFzPlRlc3QiKTsKLSAgICBFWFBFQ1RfRVEo
V2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBX
ZWJDb3JlOjpDb2xvcjo6cmVkKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFt
cFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdl
YkNvcmU6OkNvbG9yOjpyZWQpOwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRl
c3RIVE1MQ2FudmFzV2l0aFJlbmRlcmluZ0NvbnRleHQpCkBAIC0zMjgsNyArMzI4LDcgQEAgVEVT
VChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0QmVmb3JlQ1NTVHJhbnNpdGlvbikKICAgICBF
WFBFQ1RfTlVMTChbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwogCiAgICAgd2FpdEZv
clNhbXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmlldy5nZXQoKSwgQCI8Ym9k
eSBzdHlsZT0nbWFyZ2luOiAwOyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzJz5UZXN0
Iik7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRv
cENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBFWFBFQ1RfRVEo
V2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VU
b3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiB9CiAKIFRFU1QoU2Ft
cGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdER1cmluZ0NTU1RyYW5zaXRpb24pCkBAIC0zNjAsNyAr
MzYwLDcgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBIaXRUZXN0QWZ0ZXJDU1NUcmFuc2l0
aW9uKQogICAgIC8vIE5vdCBzZXR0aW5nIHRoaXMgdW50aWwgbm93IHByZXZlbnRzIHRoZSBzYW1w
bGluZyBsb2dpYyBmcm9tIHJ1bm5pbmcgYmVjYXVzZSB3aXRob3V0IGl0IHRoZSBwYWdlIGlzbid0
IGNvbnNpZGVyZWQgY29udGVudGZ1bC4KICAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCA9ICdUZXN0JyJdOwogICAgIHdh
aXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2Uod2ViVmlldy5nZXQoKSk7Ci0gICAgRVhQ
RUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0Nv
bG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5k
QW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29s
b3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKIH0KIAogVEVTVChTYW1wbGVkUGFnZVRvcENvbG9y
LCBIaXRUZXN0QmVmb3JlQ1NTQW5pbWF0aW9uKQpAQCAtMzY5LDcgKzM2OSw3IEBAIFRFU1QoU2Ft
cGxlZFBhZ2VUb3BDb2xvciwgSGl0VGVzdEJlZm9yZUNTU0FuaW1hdGlvbikKICAgICBFWFBFQ1Rf
TlVMTChbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwogCiAgICAgd2FpdEZvclNhbXBs
ZWRQYWdlVG9wQ29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmlldy5nZXQoKSwgQCI8c3R5bGU+QGtl
eWZyYW1lcyBjaGFuZ2VCYWNrZ3JvdW5kUmVkIHsgdG8geyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IH0gfTwvc3R5bGU+PGJvZHkgc3R5bGU9J21hcmdpbjogMDsgYW5pbWF0aW9uOiBjaGFuZ2VCYWNr
Z3JvdW5kUmVkIDFzIGZvcndhcmRzIHBhdXNlZCc+VGVzdCIpOwotICAgIEVYUEVDVF9FUShXZWJD
b3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNv
cmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJvdW5kQW5kQ2xhbXBU
b1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJD
b3JlOjpDb2xvcjo6d2hpdGUpOwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRl
c3REdXJpbmdDU1NBbmltYXRpb24pCkBAIC0zOTksNyArMzk5LDcgQEAgVEVTVChTYW1wbGVkUGFn
ZVRvcENvbG9yLCBIaXRUZXN0QWZ0ZXJDU1NBbmltYXRpb24pCiAgICAgLy8gTm90IHNldHRpbmcg
dGhpcyB1bnRpbCBub3cgcHJldmVudHMgdGhlIHNhbXBsaW5nIGxvZ2ljIGZyb20gcnVubmluZyBi
ZWNhdXNlIHdpdGhvdXQgaXQgdGhlIHBhZ2UgaXNuJ3QgY29uc2lkZXJlZCBjb250ZW50ZnVsLgog
ICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5
LnRleHRDb250ZW50ID0gJ1Rlc3QnIl07CiAgICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JU
b0NoYW5nZSh3ZWJWaWV3LmdldCgpKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dl
YlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVk
KTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2Vi
VmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQp
OwogfQogCiBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRlc3RDU1NQb2ludGVyRXZlbnRz
Tm9uZSkKQEAgLTQwOCw3ICs0MDgsNyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIEhpdFRl
c3RDU1NQb2ludGVyRXZlbnRzTm9uZSkKICAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBfc2FtcGxl
ZFBhZ2VUb3BDb2xvcl0pOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxl
PSdtYXJnaW46IDAnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgcG9pbnRlci1ldmVudHM6IG5vbmUnPjwvZGl2PlRlc3QiXTsKLSAg
ICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3Jd
LkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6
cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0u
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwogfQogCiAvLyBGSVhNRTogPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIyNTE2Nz4gKFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IGhvb2sgaW50byBw
YWludGluZyBsb2dpYyBpbnN0ZWFkIG9mIHRha2luZyBzbmFwc2hvdHMpCkBAIC00NDMsMTMgKzQ0
MywxMyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIE1haW5Eb2N1bWVudENoYW5nZSkKICAg
ICB9XSk7CiAKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0
VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHk+VGVzdCJdOwotICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dD
b2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgRVhQRUNUX0VRKFdlYkNvcmU6OnJv
dW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koW3dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNH
Q29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogICAgIEVYUEVDVF9FUShub3RpZmljYXRp
b25Db3VudCwgMVVMKTsKIAogICAgIG5vdGlmaWNhdGlvbkNvdW50ID0gMDsKIAogICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNo
aWxkRnJhbWVzUGFpbnQ6QCI8Ym9keT5UZXN0Il07Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNv
bG9yKFt3ZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29s
b3I6OndoaXRlKTsKKyAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFM
b3NzeShbd2ViVmlldyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNv
bG9yOjp3aGl0ZSk7CiAgICAgLy8gRGVwZW5kaW5nIG9uIHRpbWluZywgYSBub3RpZmljYXRpb24g
Y2FuIGJlIHNlbnQgZm9yIHdoZW4gdGhlIG1haW4gZG9jdW1lbnQgY2hhbmdlcyBhbmQgdGhlbgog
ICAgIC8vIHdoZW4gdGhlIG5ldyBtYWluIGRvY3VtZW50IHJlbmRlcnMgb3IgYm90aCBjYW4gYmUg
Y29hbGVzY2VkIGlmIHJlbmRlcmluZyBpcyBmYXN0IGVub3VnaC4KICAgICBFWFBFQ1RfVFJVRShu
b3RpZmljYXRpb25Db3VudCA9PSAwIHx8IG5vdGlmaWNhdGlvbkNvdW50ID09IDIpOwpAQCAtNDY5
LDYgKzQ2OSw2IEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgTWFpbkRvY3VtZW50Q2hhbmdl
KQogICAgIG5vdGlmaWNhdGlvbkNvdW50ID0gMDsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6
QCI8Ym9keT5UZXN0Il07Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IF9z
YW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAg
ICBFWFBFQ1RfRVEoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShbd2ViVmlldyBf
c2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiAg
ICAgRVhQRUNUX0VRKG5vdGlmaWNhdGlvbkNvdW50LCAxVUwpOwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggMDdiZDI3NDYwNjBhODUwNjQ0YWJiMTRlMTgzYTg2M2VmYjc4Y2Nm
My4uN2M5NTgyYTZkZGI2NTFlYzJjODIyZjc2ODcyYWI4ZjZjZDI2MWU0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDgtMTYgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVzZXJ2ZSBjb2xvciBz
cGFjZSB3aGVuIGdldHRpbmcgY3VycmVudCBjb2xvciBpbiBEaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTAyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODE4Mjg0Nzc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGNhbGxpbmcgZmls
bFRleHQoKSBhbmQgc3Ryb2tlVGV4dCgpIHdpdGggYSBkaXNwbGF5LXAzCisgICAgICAgIGNvbG9y
IGZvciBmaWxsU3R5bGUsIHN0cm9rZVN0eWxlLCBhbmQgc2hhZG93Q29sb3IsIG9uIGEgZGlzcGxh
eS1wMyBjYW52YXMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0
LnNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VU
ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ry
b2tlVGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvdG9vbHMveWFtbC9lbGVtZW50L2NvbG9yX3NwYWNlLnlhbWw6CisKIDIwMjEtMDgtMTkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFs6aGFzKCkgcHNl
dWRvLWNsYXNzXSBCYXNpYyBzdXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1j
YW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDg5NmFmZDg2NTBmYTkzYmY0MjJhNjBlNzA3NGY0NDc5Y2Q5M2JlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAz
LmZpbGxUZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKzJkLmNvbG9yLnNwYWNlLnAz
LmZpbGxUZXh0CitUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNw
bGF5LXAzIGNvbG9yCitBY3R1YWwgb3V0cHV0OgorCitQQVNTIFRlc3QgaWYgZmlsbFRleHQgY2Fu
IGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YzFhNjAwODc1NWZmNmMyOTQ3YmI2YjY3OWUxYTk5YTc3NWI0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAz
LmZpbGxUZXh0Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIERP
IE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZhcy90
b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQuY29sb3Iuc3BhY2Uu
cDMuZmlsbFRleHQ8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFz
LXRlc3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwv
Y2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291
dHB1dCI+CisKKzxoMT4yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dDwvaDE+Cis8cCBjbGFzcz0i
ZGVzYyI+VGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1w
MyBjb2xvcjwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxj
YW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNs
YXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1
bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoIlRlc3QgaWYgZmls
bFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IiKTsKK19hZGRU
ZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2RlZmVyVGVzdCgpOworCitjb25zdCBmdWxs
UmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Citjb25zdCBzUkdCUmVkSW5QMyA9IFsyMzQsIDUx
LCAzNSwgMjU1XTsKKworY2FudmFzLndpZHRoID0gMTAwOworY2FudmFzLmhlaWdodCA9IDEwMDsK
KworbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250cy9BaGVtLnR0ZikiKTsK
K2RvY3VtZW50LmZvbnRzLmFkZChmKTsKK2YubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
dC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBjdHguZm9udCA9ICI0MHB4IEFoZW0iOworCisg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIs
IDAsIDUwKTsKKworICAgICAgICBjdHguZmlsbFN0eWxlID0gImJsYWNrIjsKKyAgICAgICAgY3R4
LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgIGN0eC5m
aWxsVGV4dCgiQSIsIDUwLCA1MCk7CisKKyAgICAgICAgbGV0IHBpeGVscyA9IGN0eC5nZXRJbWFn
ZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7IGNvbG9yU3BhY2U6ICJk
aXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkp
IHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeSAqIGNhbnZhcy53aWR0aCArIHgpICogNDsK
KyAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNldF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwg
cGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0ICsgM11dOworICAgICAgICB9OworCisg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCgyNSwgMjUpLCBzUkdCUmVkSW5QMyk7
CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBmdWxsUmVkSW5Q
Myk7CisKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9KTsKKworCit9LCB7Y29sb3JTcGFj
ZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMuZmlsbFRleHQu
c2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDAzYThhMWE1Y2RiMGNkNWNiMGZlNWFj
YzRkZjQxMTk2ZDQ2M2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cKK1Rlc3QgaWYgZmls
bFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIGRpc3BsYXktcDMgc2hhZG93IGNvbG9yCitBY3R1YWwg
b3V0cHV0OgorCitQQVNTIFRlc3QgaWYgZmlsbFRleHQgY2FuIGJlIHVzZWQgd2l0aCBhIGRpc3Bs
YXktcDMgc2hhZG93IGNvbG9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5maWxsVGV4dC5zaGFkb3cuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYmI3NGM2YWU0YWJhNTRmN2NjMGU0NmVjZGFjMWNmY2Q5MzhkMDBiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLmZpbGxU
ZXh0LnNoYWRvdy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBE
TyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMv
dG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNl
LnAzLmZpbGxUZXh0LnNoYWRvdzwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNl
cy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MiPgorPGJvZHkgY2xhc3M9
InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNlLnAzLmZpbGxUZXh0LnNoYWRvdzwv
aDE+Cis8cCBjbGFzcz0iZGVzYyI+VGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEg
ZGlzcGxheS1wMyBzaGFkb3cgY29sb3I8L3A+CisKKworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFs
IG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9w
PjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190
ZXN0KCJUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBkaXNwbGF5LXAzIHNoYWRv
dyBjb2xvciIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKworZGVmZXJUZXN0
KCk7CisKK2NvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKK2NvbnN0IHNSR0JS
ZWRJblAzID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCitjYW52YXMud2lkdGggPSAxMDA7CitjYW52
YXMuaGVpZ2h0ID0gMTAwOworCitsZXQgZiA9IG5ldyBGb250RmFjZSgiQWhlbSIsICJ1cmwoL2Zv
bnRzL0FoZW0udHRmKSIpOworZG9jdW1lbnQuZm9udHMuYWRkKGYpOworZi5sb2FkKCkudGhlbihm
dW5jdGlvbigpIHsKKyAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIGN0eC5mb250ID0g
IjQwcHggQWhlbSI7CisKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJibGFjayI7CisgICAgICAg
IGN0eC5zaGFkb3dCbHVyID0gNDsKKyAgICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAwOworICAg
ICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDUwOworICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAi
I2YwMCI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDAsIDApOworCisgICAgICAgIGN0eC5z
aGFkb3dDb2xvciA9ICJibGFjayI7CisgICAgICAgIGN0eC5zaGFkb3dDb2xvciA9ICJjb2xvcihk
aXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgIGN0eC5maWxsVGV4dCgiQSIsIDUwLCAwKTsK
KworICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pLmRhdGE7Cisg
ICAgICAgIGxldCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgeworICAgICAgICAgICAgbGV0IG9m
ZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAgICAgICAgcmV0dXJuIFtw
aXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0ICsgMl0sIHBp
eGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgIH07CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKworICAgICAgICB0LmRvbmUo
KTsKKyAgICB9KTsKK30pOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwv
c2NyaXB0PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMuc3Ryb2tlVGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52
YXMvMmQuY29sb3Iuc3BhY2UucDMuc3Ryb2tlVGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGYzNDQ3YTgyMTdiOWJkMWExZjRkZDZlZTNiMDg5ZDY5YTU2MGM3NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKzJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRl
eHQKK1Rlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1w
MyBjb2xvcgorQWN0dWFsIG91dHB1dDoKKworUEFTUyBUZXN0IGlmIHN0cm9rZVRleHQgY2FuIGJl
IHVzZWQgd2l0aCBhIHNvbGlkIGRpc3BsYXktcDMgY29sb3IKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRleHQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy5zdHJva2VUZXh0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzM4MDg0YTQ0NDkwYmVkNTljZWRkYWFlOTAwMjQ2N2ExMjU0ZGFmYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My5zdHJva2VUZXh0Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
IERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZh
cy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQuY29sb3Iuc3Bh
Y2UucDMuc3Ryb2tlVGV4dDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9j
YW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIv
aHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MiPgorPGJvZHkgY2xhc3M9InNo
b3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRleHQ8L2gxPgorPHAg
Y2xhc3M9ImRlc2MiPlRlc3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQg
ZGlzcGxheS1wMyBjb2xvcjwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0
OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0i
NTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52
YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoIlRl
c3QgaWYgc3Ryb2tlVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgc29saWQgZGlzcGxheS1wMyBjb2xv
ciIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKworZGVmZXJUZXN0KCk7CisK
K2NvbnN0IGZ1bGxSZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKK2NvbnN0IHNSR0JSZWRJblAz
ID0gWzIzNCwgNTEsIDM1LCAyNTVdOworCitjYW52YXMud2lkdGggPSAxMDA7CitjYW52YXMuaGVp
Z2h0ID0gMTAwOworCitsZXQgZiA9IG5ldyBGb250RmFjZSgiQWhlbSIsICJ1cmwoL2ZvbnRzL0Fo
ZW0udHRmKSIpOworZG9jdW1lbnQuZm9udHMuYWRkKGYpOworZi5sb2FkKCkudGhlbihmdW5jdGlv
bigpIHsKKyAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIGN0eC5mb250ID0gIjQwcHgg
QWhlbSI7CisKKyAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gIiNmMDAiOworICAgICAgICBjdHgu
bGluZVdpZHRoID0gMjA7CisgICAgICAgIGN0eC5zdHJva2VUZXh0KCJBIiwgMCwgNTApOworCisg
ICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJibGFjayI7CisgICAgICAgIGN0eC5zdHJva2VTdHls
ZSA9ICJjb2xvcihkaXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgIGN0eC5zdHJva2VUZXh0
KCJBIiwgNTAsIDUwKTsKKworICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgw
LCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pLmRhdGE7CisgICAgICAgIGxldCBwaXhlbEF0ID0gZnVuY3Rpb24oeCwgeSkgeworICAg
ICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2FudmFzLndpZHRoICsgeCkgKiA0OworICAgICAg
ICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNb
b2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgIH07CisKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAzKTsKKwor
ICAgICAgICB0LmRvbmUoKTsKKyAgICB9KTsKK30pOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlz
cGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVudC9j
b2xvcl9zcGFjZS55YW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy90b29scy95YW1sL2VsZW1lbnQvY29sb3Jfc3BhY2UueWFtbAppbmRl
eCBlNjRkNmZiOTc3N2RjMGM1OWQ2NmY0YmJiNjA5MTU5NTcyNjZjMzY5Li5mY2JiM2E5ZjMxY2Jj
N2MyZWViNTBiZDhkOWIxYThjNzRjM2E1MzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL3Rvb2xzL3lhbWwvZWxlbWVu
dC9jb2xvcl9zcGFjZS55YW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvdG9vbHMveWFtbC9lbGVtZW50L2NvbG9yX3NwYWNlLnlh
bWwKQEAgLTE3NSwzICsxNzUsMTMxIEBACiAgICAgICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1
YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIDIpOwogICAgIH0pOwogICAgIGltYWdl
LnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoKTsKKworLSBuYW1lOiAyZC5jb2xvci5zcGFjZS5wMy5m
aWxsVGV4dAorICB0ZXN0aW5nOgorICAtIDJkLmNvbG9yLnNwYWNlLnAzLmFuZC51aW50OAorICBk
ZXNjOiBUZXN0IGlmIGZpbGxUZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAz
IGNvbG9yCisgIGF0dHJpYnV0ZXM6IHwKKyAgICB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifQor
ICBjb2RlOiB8CisgICAgZGVmZXJUZXN0KCk7CisKKyAgICBjb25zdCBmdWxsUmVkSW5QMyA9IFsy
NTUsIDAsIDAsIDI1NV07CisgICAgY29uc3Qgc1JHQlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1
NV07CisKKyAgICBjYW52YXMud2lkdGggPSAxMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDEwMDsK
KworICAgIGxldCBmID0gbmV3IEZvbnRGYWNlKCJBaGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYp
Iik7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkKGYpOworICAgIGYubG9hZCgpLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgICAgIHQuc3RlcChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGN0eC5mb250
ID0gIjQwcHggQWhlbSI7CisKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiI2YwMCI7Cisg
ICAgICAgICAgICBjdHguZmlsbFRleHQoIkEiLCAwLCA1MCk7CisKKyAgICAgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAiYmxhY2siOworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJjb2xvcihk
aXNwbGF5LXAzIDEwMCUgMCAwKSI7CisgICAgICAgICAgICBjdHguZmlsbFRleHQoIkEiLCA1MCwg
NTApOworCisgICAgICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBj
YW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
LmRhdGE7CisgICAgICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBw
aXhlbHNbb2Zmc2V0ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJl
ZEluUDMpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSks
IGZ1bGxSZWRJblAzKTsKKworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0pOworICAg
IH0pOworCistIG5hbWU6IDJkLmNvbG9yLnNwYWNlLnAzLnN0cm9rZVRleHQKKyAgdGVzdGluZzoK
KyAgLSAyZC5jb2xvci5zcGFjZS5wMy5hbmQudWludDgKKyAgZGVzYzogVGVzdCBpZiBzdHJva2VU
ZXh0IGNhbiBiZSB1c2VkIHdpdGggYSBzb2xpZCBkaXNwbGF5LXAzIGNvbG9yCisgIGF0dHJpYnV0
ZXM6IHwKKyAgICB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifQorICBjb2RlOiB8CisgICAgZGVm
ZXJUZXN0KCk7CisKKyAgICBjb25zdCBmdWxsUmVkSW5QMyA9IFsyNTUsIDAsIDAsIDI1NV07Cisg
ICAgY29uc3Qgc1JHQlJlZEluUDMgPSBbMjM0LCA1MSwgMzUsIDI1NV07CisKKyAgICBjYW52YXMu
d2lkdGggPSAxMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDEwMDsKKworICAgIGxldCBmID0gbmV3
IEZvbnRGYWNlKCJBaGVtIiwgInVybCgvZm9udHMvQWhlbS50dGYpIik7CisgICAgZG9jdW1lbnQu
Zm9udHMuYWRkKGYpOworICAgIGYubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGN0eC5mb250ID0gIjQwcHggQWhlbSI7CisK
KyAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICIjZjAwIjsKKyAgICAgICAgICAgIGN0eC5s
aW5lV2lkdGggPSAyMDsKKyAgICAgICAgICAgIGN0eC5zdHJva2VUZXh0KCJBIiwgMCwgNTApOwor
CisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAiYmxhY2siOworICAgICAgICAgICAgY3R4
LnN0cm9rZVN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMTAwJSAwIDApIjsKKyAgICAgICAgICAg
IGN0eC5zdHJva2VUZXh0KCJBIiwgNTAsIDUwKTsKKworICAgICAgICAgICAgbGV0IHBpeGVscyA9
IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7IGNv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KS5kYXRhOworICAgICAgICAgICAgbGV0IHBpeGVsQXQg
PSBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9ICh5ICogY2Fu
dmFzLndpZHRoICsgeCkgKiA0OworICAgICAgICAgICAgICAgIHJldHVybiBbcGl4ZWxzW29mZnNl
dF0sIHBpeGVsc1tvZmZzZXQgKyAxXSwgcGl4ZWxzW29mZnNldCArIDJdLCBwaXhlbHNbb2Zmc2V0
ICsgM11dOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhwaXhlbEF0KDI1LCAyNSksIHNSR0JSZWRJblAzKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocGl4ZWxBdCg3NSwgMjUpLCBmdWxsUmVkSW5QMyk7CisKKyAgICAgICAgICAgIHQu
ZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKworLSBuYW1lOiAyZC5jb2xvci5zcGFjZS5w
My5maWxsVGV4dC5zaGFkb3cKKyAgdGVzdGluZzoKKyAgLSAyZC5jb2xvci5zcGFjZS5wMy5hbmQu
dWludDgKKyAgZGVzYzogVGVzdCBpZiBmaWxsVGV4dCBjYW4gYmUgdXNlZCB3aXRoIGEgZGlzcGxh
eS1wMyBzaGFkb3cgY29sb3IKKyAgYXR0cmlidXRlczogfAorICAgIHtjb2xvclNwYWNlOiAiZGlz
cGxheS1wMyJ9CisgIGNvZGU6IHwKKyAgICBkZWZlclRlc3QoKTsKKworICAgIGNvbnN0IGZ1bGxS
ZWRJblAzID0gWzI1NSwgMCwgMCwgMjU1XTsKKyAgICBjb25zdCBzUkdCUmVkSW5QMyA9IFsyMzQs
IDUxLCAzNSwgMjU1XTsKKworICAgIGNhbnZhcy53aWR0aCA9IDEwMDsKKyAgICBjYW52YXMuaGVp
Z2h0ID0gMTAwOworCisgICAgbGV0IGYgPSBuZXcgRm9udEZhY2UoIkFoZW0iLCAidXJsKC9mb250
cy9BaGVtLnR0ZikiKTsKKyAgICBkb2N1bWVudC5mb250cy5hZGQoZik7CisgICAgZi5sb2FkKCku
dGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgY3R4LmZvbnQgPSAiNDBweCBBaGVtIjsKKworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9
ICJibGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9IDQ7CisgICAgICAgICAgICBj
dHguc2hhZG93T2Zmc2V0WCA9IDA7CisgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDUw
OworICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gIiNmMDAiOworICAgICAgICAgICAgY3R4
LmZpbGxUZXh0KCJBIiwgMCwgMCk7CisKKyAgICAgICAgICAgIGN0eC5zaGFkb3dDb2xvciA9ICJi
bGFjayI7CisgICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAiY29sb3IoZGlzcGxheS1wMyAx
MDAlIDAgMCkiOworICAgICAgICAgICAgY3R4LmZpbGxUZXh0KCJBIiwgNTAsIDApOworCisgICAg
ICAgICAgICBsZXQgcGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgs
IGNhbnZhcy5oZWlnaHQsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pLmRhdGE7CisgICAg
ICAgICAgICBsZXQgcGl4ZWxBdCA9IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgb2Zmc2V0ID0gKHkgKiBjYW52YXMud2lkdGggKyB4KSAqIDQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFtwaXhlbHNbb2Zmc2V0XSwgcGl4ZWxzW29mZnNldCArIDFdLCBwaXhlbHNbb2Zmc2V0
ICsgMl0sIHBpeGVsc1tvZmZzZXQgKyAzXV07CisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpeGVsQXQoMjUsIDI1KSwgc1JHQlJlZEluUDMpOworICAg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXhlbEF0KDc1LCAyNSksIGZ1bGxSZWRJblAz
KTsKKworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>