<?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>214941</bug_id>
          
          <creation_ts>2020-07-29 15:15:20 -0700</creation_ts>
          <short_desc>Remove non-inclusive terminology from WebKit variable names and test-only SPI</short_desc>
          <delta_ts>2020-07-30 08:11:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>caitp</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676166</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:15:20 -0700</bug_when>
    <thetext>Remove non-inclusive terminology from WebKit variable nmes and test-only SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676167</commentid>
    <comment_count>1</comment_count>
      <attachid>405510</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:16:25 -0700</bug_when>
    <thetext>Created attachment 405510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676172</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-29 15:17:11 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676174</commentid>
    <comment_count>3</comment_count>
      <attachid>405510</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-29 15:22:48 -0700</bug_when>
    <thetext>Comment on attachment 405510
Patch

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

&gt; Source/WebKit/ChangeLog:3
&gt; +        Remove non-inclusive terminology from WebKit variable nmes and test-only SPI

nmes

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:156
&gt;   * @level: A #WebKitUserStyleLevel

Need to check with GTK folks about changing their headerdoc.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:58
&gt; -WK_EXPORT void WKBundleAddOriginAccessWhitelistEntry(WKBundleRef bundle, WKStringRef, WKStringRef, WKStringRef, bool);
&gt; -WK_EXPORT void WKBundleRemoveOriginAccessWhitelistEntry(WKBundleRef bundle, WKStringRef, WKStringRef, WKStringRef, bool);
&gt; -WK_EXPORT void WKBundleResetOriginAccessWhitelists(WKBundleRef bundle);
&gt; +WK_EXPORT void WKBundleAddOriginAccessAllowListEntry(WKBundleRef bundle, WKStringRef, WKStringRef, WKStringRef, bool);
&gt; +WK_EXPORT void WKBundleRemoveOriginAccessAllowListEntry(WKBundleRef bundle, WKStringRef, WKStringRef, WKStringRef, bool);
&gt; +WK_EXPORT void WKBundleResetOriginAccessAllowLists(WKBundleRef bundle);

If these are renameable (thus unused), shouldn&apos;t we just delete them??? (or maybe they&apos;re only used by Safari and you&apos;re going to land a change there in sync? but then what about ToT-WebKit-against-older-Safari?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676175</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:23:31 -0700</bug_when>
    <thetext>As seen later, they&apos;re only used by WebKitTestRunner, which we can change at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676176</commentid>
    <comment_count>5</comment_count>
      <attachid>405512</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:23:39 -0700</bug_when>
    <thetext>Created attachment 405512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676178</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-29 15:25:31 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; As seen later, they&apos;re only used by WebKitTestRunner, which we can change at
&gt; the same time.

Fair!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676180</commentid>
    <comment_count>7</comment_count>
      <attachid>405512</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-29 15:25:50 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

r+ for all but the GTK port parts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676181</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:30:42 -0700</bug_when>
    <thetext>Adding some GTK folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676196</commentid>
    <comment_count>9</comment_count>
      <attachid>405512</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-29 15:43:12 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676198</commentid>
    <comment_count>10</comment_count>
      <attachid>405512</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 15:43:54 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

Requesting review from someone not from Apple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676207</commentid>
    <comment_count>11</comment_count>
      <attachid>405512</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-29 16:00:35 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

The WPE/GTK bits look fine to me: only parameter names are changed,
which means the API (and ABI) remains the same—that&apos;s perfect :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676211</commentid>
    <comment_count>12</comment_count>
      <attachid>405512</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-29 16:08:14 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:158
&gt; - * @whitelist: (array zero-terminated=1) (allow-none): A whitelist of URI patterns or %NULL
&gt; - * @blacklist: (array zero-terminated=1) (allow-none): A blacklist of URI patterns or %NULL
&gt; + * @allow_list: (array zero-terminated=1) (allow-none): An allow_list of URI patterns or %NULL
&gt; + * @block_list: (array zero-terminated=1) (allow-none): A block_list of URI patterns or %NULL

Hm, this is actually public API. Changing parameter names is not an API break in C or C++, but it is for introspection. E.g. this could be called from python; if the python code is using positional parameters, it will break. In practice, I bet no apps are doing that, so it&apos;s probably fine... but if I&apos;m wrong, anything that is will definitely break.

I guess we can try it anyway and revert if someone complains we broke their app. This API is relatively new, and it&apos;s relatively unlikely that apps are using it. Or we could take the safer approach and omit the changes to WebKitUserContent.cpp and the two public WebKitUserContent.h headers. From the title of this issue, I guess that was the intent anyway. CC other GTK devs for opinions on whether it&apos;s worth the risk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676260</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-29 17:49:34 -0700</bug_when>
    <thetext>This bug is a part of bug 213092 which implies we hope to remove all references to the terms &quot;whitelist&quot; and &quot;blacklist&quot; and many other projects are doing the same.  See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=49decddd39e5f6132ccd7d9fdc3d7c470b0061bb

Since the GTK API is relatively new, that probably means that if anyone is using it with strange python bindings, it&apos;s a project that is still maintained.  Since the ABI is unbroken, I would assume it&apos;s low risk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676313</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-29 22:57:26 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; This bug is a part of bug 213092 which implies we hope to remove all
&gt; references to the terms &quot;whitelist&quot; and &quot;blacklist&quot; and many other projects
&gt; are doing the same.  See
&gt; https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/
&gt; ?id=49decddd39e5f6132ccd7d9fdc3d7c470b0061bb
&gt; 
&gt; Since the GTK API is relatively new, that probably means that if anyone is
&gt; using it with strange python bindings, it&apos;s a project that is still
&gt; maintained.  Since the ABI is unbroken, I would assume it&apos;s low risk.

User content api is not relatively new, but I&apos;m fine with the change anyway, it&apos;s very unlikely it can break any app.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676354</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-30 05:59:39 -0700</bug_when>
    <thetext>Yeah sorry, I was thinking this was the content filters API but it&apos;s actually the user stylesheets and user JS API.

Calling WebKitGTK APIs from scripting languages is actually very common on Linux, but the first python app I checked (eolie) is not using these functions at all, and they are not very commonly-used APIs, so after thinking on it for a night I agree the risk is relatively low.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676361</commentid>
    <comment_count>16</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-30 06:59:07 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #14)
&gt; (In reply to Alex Christensen from comment #13)
&gt; &gt; This bug is a part of bug 213092 which implies we hope to remove all
&gt; &gt; references to the terms &quot;whitelist&quot; and &quot;blacklist&quot; and many other projects
&gt; &gt; are doing the same.  See
&gt; &gt; https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/
&gt; &gt; ?id=49decddd39e5f6132ccd7d9fdc3d7c470b0061bb
&gt; &gt; 
&gt; &gt; Since the GTK API is relatively new, that probably means that if anyone is
&gt; &gt; using it with strange python bindings, it&apos;s a project that is still
&gt; &gt; maintained.  Since the ABI is unbroken, I would assume it&apos;s low risk.
&gt; 
&gt; User content api is not relatively new, but I&apos;m fine with the change anyway,
&gt; it&apos;s very unlikely it can break any app.

Also most languages which use the functions through GObject-Introspection
do not support named parameters on function calls (only their positions in
the call matter), and those will be fine with the change. I think the main
exception is Python where you can explicitly name parameters in a function
call expression:

  def do_something(a, b): # define a function.
      # ...
  do_something(b=1, a=2)  # call it naming the parameters explicitly.
  do_something(2, 1)      # this does the same as the previous call.

I wonder how many Python applications use WebKitGTK *and* specify parameter
names for the few functions changed by this patch. Definitely not Eolie, and
that&apos;s probably the biggest Python application I am aware of 🤔️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676375</commentid>
    <comment_count>17</comment_count>
      <attachid>405512</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-30 08:00:46 -0700</bug_when>
    <thetext>Comment on attachment 405512
Patch

Requesting review from someone not from Apple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676378</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-30 08:10:44 -0700</bug_when>
    <thetext>Committed r265081: &lt;https://trac.webkit.org/changeset/265081&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405512.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676379</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-30 08:11:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/66327965&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405510</attachid>
            <date>2020-07-29 15:16:25 -0700</date>
            <delta_ts>2020-07-29 15:23:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214941-20200729151624.patch</filename>
            <type>text/plain</type>
            <size>43666</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjUwNTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA3LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG5vbi1p
bmNsdXNpdmUgdGVybWlub2xvZ3kgZnJvbSBXZWJLaXQgdmFyaWFibGUgbm1lcyBhbmQgdGVzdC1v
bmx5IFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nl
c3NBbGxvd0xpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc0Fs
bG93TGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHA6
CisgICAgICAgIChfV2ViS2l0VXNlclN0eWxlU2hlZXQ6Ol9XZWJLaXRVc2VyU3R5bGVTaGVldCk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0
X3VzZXJfc3R5bGVfc2hlZXRfbmV3X2Zvcl93b3JsZCk6CisgICAgICAgIChfV2ViS2l0VXNlclNj
cmlwdDo6X1dlYktpdFVzZXJTY3JpcHQpOgorICAgICAgICAod2Via2l0X3VzZXJfc2NyaXB0X25l
dyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9zY3JpcHRfbmV3X2Zvcl93b3JsZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAocGF0
aElzQmxvY2tlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWRkX3BhdGhfdG9fc2Fu
ZGJveCk6CisgICAgICAgIChwYXRoSXNCbGFja2xpc3RlZCk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2V0
dXBTZWNjb21wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Rm9udEFsbG93TGlzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZUFkZE9yaWdp
bkFjY2Vzc0FsbG93TGlzdEVudHJ5KToKKyAgICAgICAgKFdLQnVuZGxlUmVtb3ZlT3JpZ2luQWNj
ZXNzQWxsb3dMaXN0RW50cnkpOgorICAgICAgICAoV0tCdW5kbGVSZXNldE9yaWdpbkFjY2Vzc0Fs
bG93TGlzdHMpOgorICAgICAgICAoV0tCdW5kbGVBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6
YWRkT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RzKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMC0wNy0yOSAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
NjQ0NzYpOiBDYWxsaW5nIHN5c3RlbUhhc0FDKCkgcmVncmVzc2VzIGxhdW5jaCB0aW1lIHBlcmZv
cm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY0ODQx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxMiwxNyArOTEyLDE3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXUKIH0KICNlbmRpZgogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFkZE9yaWdp
bkFjY2Vzc0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5h
dGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVP
cmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
SG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBTZWN1cml0eVBv
bGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vz
c0FsbG93TGlzdHMoKQogewogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0Fs
bG93bGlzdHMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2
NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDkgKzI3Miw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3Bl
bmVyRG9tYWluKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgdm9pZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KTsKKyAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cygpOwogCiAgICAgdWludDY0X3Qg
bmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9pZCgpPiYmKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjQ4
NDEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw5IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBSZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5kaWYKIAotICAgIEFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBk
ZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKTsKLSAgICBSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5n
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAg
UmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgQWRkT3JpZ2luQWNjZXNzQWxsb3dM
aXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OworICAgIFJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmln
aW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBSZXNldE9yaWdpbkFjY2Vzc0Fs
bG93TGlzdHMoKTsKIAogICAgIEdldE5ldHdvcmtMb2FkSW5mb3JtYXRpb25SZXNwb25zZSh1aW50
NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSkgU3luY2hyb25vdXMKICAgICBHZXROZXR3b3JrTG9hZEludGVybWVkaWF0ZUlu
Zm9ybWF0aW9uKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpIC0+IChWZWN0b3I8V2Vi
Q29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IHRyYW5zYWN0aW9ucykgU3luY2hy
b25vdXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmc7
CiAgICAgZW5jb2RlciA8PCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlcjsKICAg
ICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7Ci0gICAgZW5jb2RlciA8PCBmb250
V2hpdGVsaXN0OworICAgIGVuY29kZXIgPDwgZm9udEFsbG93TGlzdDsKICAgICBlbmNvZGVyIDw8
IHRlcm1pbmF0aW9uVGltZW91dDsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRlTGFuZ3VhZ2VzOwog
I2lmIFVTRShHU1RSRUFNRVIpCkBAIC0yNzksNyArMjc5LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZvbnRX
aGl0ZWxpc3QpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5mb250QWxsb3dM
aXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQ7CiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0Owog
Ci0gICAgVmVjdG9yPFN0cmluZz4gZm9udFdoaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBm
b250QWxsb3dMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogI2lm
IFVTRShHU1RSRUFNRVIpCiAgICAgVmVjdG9yPFN0cmluZz4gZ3N0cmVhbWVyT3B0aW9uczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9u
IDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA3OSwxMSArMjA3OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRNZW1vcnlDYWNoZURpc2FiCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEZvbnRBbGxv
d0xpc3QoQVBJOjpBcnJheSogYXJyYXkpCiB7Ci0gICAgbV9mb250V2hpdGVsaXN0LmNsZWFyKCk7
CisgICAgbV9mb250QWxsb3dMaXN0LmNsZWFyKCk7CiAgICAgaWYgKGFycmF5KSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBpZiAoQVBJOjpTdHJpbmcqIGZvbnQgPSBhcnJheS0+YXQ8QVBJOjpTdHJpbmc+KGkpKQotICAg
ICAgICAgICAgICAgIG1fZm9udFdoaXRlbGlzdC5hcHBlbmQoZm9udC0+c3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgIG1fZm9udEFsbG93TGlzdC5hcHBlbmQoZm9udC0+c3RyaW5nKCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9zaG91bGRVc2VGb250U21vb3RoaW5nIHsgdHJ1ZSB9OwogCi0gICAgVmVjdG9yPFN0
cmluZz4gbV9mb250V2hpdGVsaXN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1fZm9udEFsbG93TGlz
dDsKIAogICAgIC8vIE1lc3NhZ2VzIHRoYXQgd2VyZSBwb3N0ZWQgYmVmb3JlIGFueSBwYWdlcyB3
ZXJlIGNyZWF0ZWQuCiAgICAgLy8gVGhlIGNsaWVudCBzaG91bGQgdXNlIGluaXRpYWxpemF0aW9u
IG1lc3NhZ2VzIGluc3RlYWQsIHNvIHRoYXQgYSByZXN0YXJ0ZWQgcHJvY2VzcyB3b3VsZCBnZXQg
dGhlIHNhbWUgc3RhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3BwCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJp
bmc+IHRvU3RyaW5nVmVjCiB9CiAKIHN0cnVjdCBfV2ViS2l0VXNlclN0eWxlU2hlZXQgewotICAg
IF9XZWJLaXRVc2VyU3R5bGVTaGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBs
ZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJs
YWNrbGlzdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQorICAgIF9XZWJLaXRVc2VyU3R5bGVT
aGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciog
Y29uc3QqIGFsbG93TGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsb2NrTGlzdCwgQVBJOjpDb250
ZW50V29ybGQmIHdvcmxkKQogICAgICAgICA6IHVzZXJTdHlsZVNoZWV0KGFkb3B0UmVmKG5ldyBB
UEk6OlVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0IHsKICAgICAgICAgICAgIFN0cmluZzo6
ZnJvbVVURjgoc291cmNlKSwgVVJMIHsgfSwKLSAgICAgICAgICAgIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCisgICAgICAgICAgICB0b1N0cmlu
Z1ZlY3RvcihhbGxvd0xpc3QpLCB0b1N0cmluZ1ZlY3RvcihibG9ja0xpc3QpLAogICAgICAgICAg
ICAgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKICAgICAgICAg
ICAgIHRvVXNlclN0eWxlTGV2ZWwobGV2ZWwpIH0sIHdvcmxkKSkpCiAgICAgICAgICwgcmVmZXJl
bmNlQ291bnQoMSkKQEAgLTE1NCwxMyArMTU0LDEzIEBAIHZvaWQgd2Via2l0X3VzZXJfc3R5bGVf
c2hlZXRfdW5yZWYoV2ViS2kKICAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0
eWxlIHNoZWV0LgogICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyB2YWx1ZQogICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAotICog
QHdoaXRlbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hp
dGVsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAotICogQGJsYWNrbGlzdDogKGFycmF5IHpl
cm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJu
cyBvciAlTlVMTAorICogQGFsbG93X2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFs
bG93LW5vbmUpOiBBbiBhbGxvd19saXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJs
b2NrX2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIGJsb2Nr
X2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCiAgKgogICogQ3JlYXRlcyBhIG5ldyB1c2Vy
IHN0eWxlIHNoZWV0LiBTdHlsZSBzaGVldHMgY2FuIGJlIGFwcGxpZWQgdG8gc29tZSBVUklzCi0g
KiBvbmx5IGJ5IHBhc3Npbmcgbm9uLW51bGwgdmFsdWVzIGZvciBAd2hpdGVsaXN0IG9yIEBibGFj
a2xpc3QuIFBhc3NpbmcgYQotICogJU5VTEwgd2hpdGVsaXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJ
cyBhcmUgb24gdGhlIHdoaXRlbGlzdC4gVGhlIHN0eWxlCi0gKiBzaGVldCBpcyBhcHBsaWVkIGlm
IGFuIFVSSSBtYXRjaGVzIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCB0aGUgYmxhY2tsaXN0LgorICog
b25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVlcyBmb3IgQGFsbG93X2xpc3Qgb3IgQGJsb2Nr
X2xpc3QuIFBhc3NpbmcgYQorICogJU5VTEwgYWxsb3dfbGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVS
SXMgYXJlIG9uIHRoZSBhbGxvd19saXN0LiBUaGUgc3R5bGUKKyAqIHNoZWV0IGlzIGFwcGxpZWQg
aWYgYW4gVVJJIG1hdGNoZXMgdGhlIGFsbG93X2xpc3QgYW5kIG5vdCB0aGUgYmxvY2tfbGlzdC4K
ICAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBbcHJvdG9jb2xdOi8vW2hvc3Rd
L1twYXRoXWAsIHdoZXJlIHRoZQogICogKmhvc3QqIGFuZCAqcGF0aCogY29tcG9uZW50cyBjYW4g
Y29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmApIHRvCiAgKiByZXByZXNlbnQgemVy
byBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCkBAIC0xNjksMTEgKzE2OSwxMSBAQCB2b2lkIHdl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKFdlYktpCiAgKgogICogU2luY2U6IDIuNgogICov
Ci1XZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNvbnN0
IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCogd2hp
dGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQorV2ViS2l0VXNlclN0eWxlU2hl
ZXQqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhjb25zdCBnY2hhciogc291cmNlLCBXZWJL
aXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5
bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogY29uc3QqIGFsbG93TGlzdCwgY29uc3QgY2hhciog
Y29uc3QqIGJsb2NrTGlzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzb3VyY2UsIG51
bGxwdHIpOwogICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVldCA9IHN0YXRp
Y19jYXN0PFdlYktpdFVzZXJTdHlsZVNoZWV0Kj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0VXNl
clN0eWxlU2hlZXQpKSk7Ci0gICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNlclN0eWxl
U2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBuZXcgKHVzZXJT
dHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBs
ZXZlbCwgYWxsb3dMaXN0LCBibG9ja0xpc3QsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVu
dFdvcmxkKCkpOwogICAgIHJldHVybiB1c2VyU3R5bGVTaGVldDsKIH0KIApAQCAtMTgzLDggKzE4
Myw4IEBAIFdlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV8KICAqIEBpbmpl
Y3RlZF9mcmFtZXM6IEEgI1dlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgdmFsdWUKICAq
IEBsZXZlbDogQSAjV2ViS2l0VXNlclN0eWxlTGV2ZWwKICAqIEB3b3JsZF9uYW1lOiB0aGUgbmFt
ZSBvZiBhICNXZWJLaXRTY3JpcHRXb3JsZAotICogQHdoaXRlbGlzdDogKGFycmF5IHplcm8tdGVy
bWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAl
TlVMTAotICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9u
ZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICogQGFsbG93X2xpc3Q6
IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBbiBhbGxvd19saXN0IG9m
IFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsb2NrX2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1p
bmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIGJsb2NrX2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVO
VUxMCiAgKgogICogQ3JlYXRlcyBhIG5ldyB1c2VyIHN0eWxlIHNoZWV0IGZvciBzY3JpcHQgd29y
bGQgd2l0aCBuYW1lIEB3b3JsZF9uYW1lLgogICogU2VlIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldygpIGZvciBhIGZ1bGwgZGVzY3JpcHRpb24uCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBXZWJL
aXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfCiAgKgogICogU2luY2U6IDIuMjIK
ICAqLwotV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ld19m
b3Jfd29ybGQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNo
YXIqIHdvcmxkTmFtZSwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciog
Y29uc3QqIGJsYWNrbGlzdCkKK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHls
ZV9zaGVldF9uZXdfZm9yX3dvcmxkKGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxl
dmVsLCBjb25zdCBjaGFyKiB3b3JsZE5hbWUsIGNvbnN0IGNoYXIqIGNvbnN0KiBhbGxvd0xpc3Qs
IGNvbnN0IGNoYXIqIGNvbnN0KiBibG9ja0xpc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoc291cmNlLCBudWxscHRyKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3b3JsZE5hbWUs
IG51bGxwdHIpOwogCiAgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0VXNlclN0eWxlU2hlZXQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJL
aXRVc2VyU3R5bGVTaGVldCkpKTsKLSAgICBuZXcgKHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2Vy
U3R5bGVTaGVldChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFj
a2xpc3QsIHdlYmtpdENvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICBuZXcgKHVzZXJTdHls
ZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBsZXZl
bCwgYWxsb3dMaXN0LCBibG9ja0xpc3QsIHdlYmtpdENvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsK
ICAgICByZXR1cm4gdXNlclN0eWxlU2hlZXQ7CiB9CiAKQEAgLTIwOSwxMCArMjA5LDEwIEBAIEFQ
STo6VXNlclN0eWxlU2hlZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWUKIH0KIAogc3RydWN0IF9XZWJL
aXRVc2VyU2NyaXB0IHsKLSAgICBfV2ViS2l0VXNlclNjcmlwdChjb25zdCBnY2hhciogc291cmNl
LCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBnY2hhciogY29uc3Qq
IHdoaXRlbGlzdCwgY29uc3QgZ2NoYXIqIGNvbnN0KiBibGFja2xpc3QsIEFQSTo6Q29udGVudFdv
cmxkJiB3b3JsZCkKKyAgICBfV2ViS2l0VXNlclNjcmlwdChjb25zdCBnY2hhciogc291cmNlLCBX
ZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBnY2hhciogY29uc3QqIGFs
bG93TGlzdCwgY29uc3QgZ2NoYXIqIGNvbnN0KiBibG9ja0xpc3QsIEFQSTo6Q29udGVudFdvcmxk
JiB3b3JsZCkKICAgICAgICAgOiB1c2VyU2NyaXB0KGFkb3B0UmVmKG5ldyBBUEk6OlVzZXJTY3Jp
cHQoVXNlclNjcmlwdCB7CiAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNvdXJjZSksIFVS
TCB7IH0sCi0gICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYWxsb3dMaXN0KSwg
dG9TdHJpbmdWZWN0b3IoYmxvY2tMaXN0KSwKICAgICAgICAgICAgIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksCiAgICAgICAgICAgICB0b1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nOjpObyB9LCB3b3JsZCkpKQogICAgICAgICAsIHJlZmVyZW5jZUNvdW50KDEp
CkBAIC0yNjYsMTMgKzI2NiwxMyBAQCB2b2lkIHdlYmtpdF91c2VyX3NjcmlwdF91bnJlZihXZWJL
aXRVc2VyCiAgKiBAc291cmNlOiBTb3VyY2UgY29kZSBvZiB0aGUgdXNlciBzY3JpcHQuCiAgKiBA
aW5qZWN0ZWRfZnJhbWVzOiBBICNXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHZhbHVl
CiAgKiBAaW5qZWN0aW9uX3RpbWU6IEEgI1dlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHZh
bHVlCi0gKiBAd2hpdGVsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25l
KTogQSB3aGl0ZWxpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCi0gKiBAYmxhY2tsaXN0OiAo
YXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBibGFja2xpc3Qgb2YgVVJJ
IHBhdHRlcm5zIG9yICVOVUxMCisgKiBAYWxsb3dfbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEFuIGFsbG93X2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxM
CisgKiBAYmxvY2tfbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6
IEEgYmxvY2tfbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKICAqCiAgKiBDcmVhdGVzIGEg
bmV3IHVzZXIgc2NyaXB0LiBTY3JpcHRzIGNhbiBiZSBhcHBsaWVkIHRvIHNvbWUgVVJJcwotICog
b25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVlcyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2ts
aXN0LiBQYXNzaW5nIGEKLSAqICVOVUxMIHdoaXRlbGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMg
YXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzY3JpcHQKLSAqIGlzIGFwcGxpZWQgaWYgYW4gVVJJ
IG1hdGNoZXMgdGhlIHdoaXRlbGlzdCBhbmQgbm90IHRoZSBibGFja2xpc3QuCisgKiBvbmx5IGJ5
IHBhc3Npbmcgbm9uLW51bGwgdmFsdWVzIGZvciBAYWxsb3dfbGlzdCBvciBAYmxvY2tfbGlzdC4g
UGFzc2luZyBhCisgKiAlTlVMTCBhbGxvd19saXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJcyBhcmUg
b24gdGhlIGFsbG93X2xpc3QuIFRoZSBzY3JpcHQKKyAqIGlzIGFwcGxpZWQgaWYgYW4gVVJJIG1h
dGNoZXMgdGhlIGFsbG93X2xpc3QgYW5kIG5vdCB0aGUgYmxvY2tfbGlzdC4KICAqIFVSSSBwYXR0
ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdo
ZXJlIHRoZQogICogKmhvc3QqIGFuZCAqcGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUg
d2lsZGNhcmQgY2hhcmFjdGVyIChgKmApIHRvCiAgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90
aGVyIGNoYXJhY3RlcnMuCkBAIC0yODEsMTEgKzI4MSwxMSBAQCB2b2lkIHdlYmtpdF91c2VyX3Nj
cmlwdF91bnJlZihXZWJLaXRVc2VyCiAgKgogICogU2luY2U6IDIuNgogICovCi1XZWJLaXRVc2Vy
U2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktp
dFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGdjaGFyKiBjb25zdCogd2hpdGVs
aXN0LCBjb25zdCBnY2hhciogY29uc3QqIGJsYWNrbGlzdCkKK1dlYktpdFVzZXJTY3JpcHQqIHdl
YmtpdF91c2VyX3NjcmlwdF9uZXcoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclNjcmlwdEluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2NoYXIqIGNvbnN0KiBhbGxvd0xpc3QsIGNvbnN0
IGdjaGFyKiBjb25zdCogYmxvY2tMaXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNv
dXJjZSwgbnVsbHB0cik7CiAgICAgV2ViS2l0VXNlclNjcmlwdCogdXNlclNjcmlwdCA9IHN0YXRp
Y19jYXN0PFdlYktpdFVzZXJTY3JpcHQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRVc2VyU2Ny
aXB0KSkpOwotICAgIG5ldyAodXNlclNjcmlwdCkgV2ViS2l0VXNlclNjcmlwdChzb3VyY2UsIGlu
amVjdGVkRnJhbWVzLCBpbmplY3Rpb25UaW1lLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgQVBJOjpD
b250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgbmV3ICh1c2VyU2NyaXB0KSBX
ZWJLaXRVc2VyU2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIGFs
bG93TGlzdCwgYmxvY2tMaXN0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
KTsKICAgICByZXR1cm4gdXNlclNjcmlwdDsKIH0KIApAQCAtMjk1LDggKzI5NSw4IEBAIFdlYktp
dFVzZXJTY3JpcHQqIHdlYmtpdF91c2VyX3NjcmlwdF9uZXcKICAqIEBpbmplY3RlZF9mcmFtZXM6
IEEgI1dlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgdmFsdWUKICAqIEBpbmplY3Rpb25f
dGltZTogQSAjV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgdmFsdWUKICAqIEB3b3JsZF9u
YW1lOiB0aGUgbmFtZSBvZiBhICNXZWJLaXRTY3JpcHRXb3JsZAotICogQHdoaXRlbGlzdDogKGFy
cmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVSSSBw
YXR0ZXJucyBvciAlTlVMTAotICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0x
KSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICog
QGFsbG93X2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBbiBh
bGxvd19saXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsb2NrX2xpc3Q6IChhcnJh
eSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIGJsb2NrX2xpc3Qgb2YgVVJJIHBh
dHRlcm5zIG9yICVOVUxMCiAgKgogICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNjcmlwdCBmb3Igc2Ny
aXB0IHdvcmxkIHdpdGggbmFtZSBAd29ybGRfbmFtZS4KICAqIFNlZSB3ZWJraXRfdXNlcl9zY3Jp
cHRfbmV3KCkgZm9yIGEgZnVsbCBkZXNjcmlwdGlvbi4KQEAgLTMwNSwxMyArMzA1LDEzIEBAIFdl
YktpdFVzZXJTY3JpcHQqIHdlYmtpdF91c2VyX3NjcmlwdF9uZXcKICAqCiAgKiBTaW5jZTogMi4y
MgogICovCi1XZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3X2Zvcl93b3Js
ZChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBjb25zdCBjaGFyKiB3b3JsZE5hbWUsIGNvbnN0IGdjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBj
b25zdCBnY2hhciogY29uc3QqIGJsYWNrbGlzdCkKK1dlYktpdFVzZXJTY3JpcHQqIHdlYmtpdF91
c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxkKGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGNoYXIqIHdvcmxkTmFtZSwgY29uc3QgZ2No
YXIqIGNvbnN0KiBhbGxvd0xpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxvY2tMaXN0KQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwod29ybGROYW1lLCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTY3JpcHQq
IHVzZXJTY3JpcHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRVc2VyU2NyaXB0Kj4oZmFzdE1hbGxvYyhz
aXplb2YoV2ViS2l0VXNlclNjcmlwdCkpKTsKLSAgICBuZXcgKHVzZXJTY3JpcHQpIFdlYktpdFVz
ZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGltZSwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIHdlYmtpdENvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICBuZXcgKHVz
ZXJTY3JpcHQpIFdlYktpdFVzZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0
aW9uVGltZSwgYWxsb3dMaXN0LCBibG9ja0xpc3QsIHdlYmtpdENvbnRlbnRXb3JsZCh3b3JsZE5h
bWUpKTsKICAgICByZXR1cm4gdXNlclNjcmlwdDsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlz
aW9uIDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE2LDkgKzEzMTYsOSBAQCB2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfc2FuZGJveF9lbmFiCiAgICAgY29udGV4dC0+cHJpdi0+cHJv
Y2Vzc1Bvb2wtPnNldFNhbmRib3hFbmFibGVkKGVuYWJsZWQpOwogfQogCi1zdGF0aWMgYm9vbCBw
YXRoSXNCbGFja2xpc3RlZChjb25zdCBjaGFyKiBwYXRoKQorc3RhdGljIGJvb2wgcGF0aElzQmxv
Y2tlZChjb25zdCBjaGFyKiBwYXRoKQogewotICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Q1N0cmlu
ZywgND4gYmxhY2tsaXN0ZWRQcmVmaXhlcyA9IHsKKyAgICBzdGF0aWMgY29uc3QgVmVjdG9yPENT
dHJpbmcsIDQ+IGJsb2NrZWRQcmVmaXhlcyA9IHsKICAgICAgICAgLy8gVGhlc2UgYXJlIHJlY3Jl
YXRlZCBieSBid3JhcCBhbmQgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHRyeSBhbmQgcmViaW5k
IHRoZW0uCiAgICAgICAgICJzeXMiLCAicHJvYyIsICJkZXYiLAogICAgICAgICAiIiwgLy8gQWxs
IG9mIGAvYCBpc24ndCBhY2NlcHRhYmxlLgpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgc3RhdGljIGJv
b2wgcGF0aElzQmxhY2tsaXN0ZWQoY29uc3QgY2hhcgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIEdVbmlxdWVQdHI8Y2hhcio+IHNwbGl0UGF0aChnX3N0cnNwbGl0KHBhdGgsIEdfRElSX1NF
UEFSQVRPUl9TLCAzKSk7Ci0gICAgcmV0dXJuIGJsYWNrbGlzdGVkUHJlZml4ZXMuY29udGFpbnMo
c3BsaXRQYXRoLmdldCgpWzFdKTsKKyAgICByZXR1cm4gYmxvY2tlZFByZWZpeGVzLmNvbnRhaW5z
KHNwbGl0UGF0aC5nZXQoKVsxXSk7CiB9CiAKIC8qKgpAQCAtMTM1Miw3ICsxMzUyLDcgQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfYWRkX3BhdGhfdG9fc2FuZAogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKIAotICAgIGlmIChwYXRoSXNC
bGFja2xpc3RlZChwYXRoKSkgeworICAgIGlmIChwYXRoSXNCbG9ja2VkKHBhdGgpKSB7CiAgICAg
ICAgIGdfY3JpdGljYWwoIkF0dGVtcHRlZCB0byBhZGQgZGlzYWxsb3dlZCBwYXRoIHRvIHNhbmRi
b3g6ICVzIiwgcGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCShyZXZp
c2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJDb250ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE2ICs4MSwxNiBAQCBXRUJLSVRfQVBJ
IFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAg
ICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqc291cmNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAg
ICp3aGl0ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmFs
bG93X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciogY29uc3QgICAgICAgICAgICAgKmJsb2NrX2xpc3QpOwogCiBXRUJLSVRfQVBJIFdlYktp
dFVzZXJTdHlsZVNoZWV0ICoKIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ld19mb3Jfd29ybGQg
KGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqc291cmNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBp
bmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICp3b3Js
ZF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNrbGlz
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciog
Y29uc3QgICAgICAgICAgICAgKmFsbG93X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsb2NrX2xpc3Qp
OwogCiAvKioKICAqIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOgpAQCAtMTI1LDE2ICsx
MjUsMTYgQEAgV0VCS0lUX0FQSSBXZWJLaXRVc2VyU2NyaXB0ICoKIHdlYmtpdF91c2VyX3Njcmlw
dF9uZXcgICAgICAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAgIGluamVjdGlvbl90aW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAg
ICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmFsbG93X2xp
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0
ICAgICAgICAgICAgICpibG9ja19saXN0KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRVc2VyU2NyaXB0
ICoKIHdlYmtpdF91c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxkIChjb25zdCBnY2hhciAgICAgICAg
ICAgICAgICAgICAgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAg
IGluamVjdGlvbl90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAgICAqd29ybGRfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKndoaXRlbGlz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3Qg
ICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICphbGxvd19saXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAq
YmxvY2tfbGlzdCk7CiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX0ZJTFRFUiAg
ICh3ZWJraXRfdXNlcl9jb250ZW50X2ZpbHRlcl9nZXRfdHlwZSgpKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJDb250ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oCShy
ZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFVzZXJDb250ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE2ICs4MSwxNiBAQCBXRUJLSVRf
QVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAg
ICAgICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqc291cmNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAg
ICAgICp3aGl0ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAg
KmFsbG93X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsb2NrX2xpc3QpOwogCiBXRUJLSVRfQVBJIFdl
YktpdFVzZXJTdHlsZVNoZWV0ICoKIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ld19mb3Jfd29y
bGQgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICp3
b3JsZF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNr
bGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciogY29uc3QgICAgICAgICAgICAgKmFsbG93X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsb2NrX2xp
c3QpOwogCiAvKioKICAqIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOgpAQCAtMTI1LDE2
ICsxMjUsMTYgQEAgV0VCS0lUX0FQSSBXZWJLaXRVc2VyU2NyaXB0ICoKIHdlYmtpdF91c2VyX3Nj
cmlwdF9uZXcgICAgICAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAgIGluamVjdGlvbl90aW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAg
ICAgICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmFsbG93
X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNv
bnN0ICAgICAgICAgICAgICpibG9ja19saXN0KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRVc2VyU2Ny
aXB0ICoKIHdlYmtpdF91c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxkIChjb25zdCBnY2hhciAgICAg
ICAgICAgICAgICAgICAgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSAgIGluamVjdGlvbl90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqd29ybGRfbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKndoaXRl
bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29u
c3QgICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICphbGxvd19saXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAg
ICAqYmxvY2tfbGlzdCk7CiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX0ZJTFRF
UiAgICh3ZWJraXRfdXNlcl9jb250ZW50X2ZpbHRlcl9nZXRfdHlwZSgpKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHJldmlzaW9uIDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRo
cy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogI2VuZGlmCiAKLSAgICBwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QgPSBtX2ZvbnRX
aGl0ZWxpc3Q7CisgICAgcGFyYW1ldGVycy5mb250QWxsb3dMaXN0ID0gbV9mb250QWxsb3dMaXN0
OwogCiAgICAgaWYgKG1fYnVuZGxlUGFyYW1ldGVycykgewogICAgICAgICBhdXRvIGtleWVkQXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFU10pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAkocmV2aXNpb24g
MjY0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3
cmFwTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODEsOCArNTgxLDggQEAgc3RhdGlj
IGludCBzZXR1cFNlY2NvbXAoKQogICAgIC8vIGNhbiBkbywgYW5kIHdlIHNob3VsZCBzdXBwb3J0
IGNvZGUgcG9ydGFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQKICAgICAvLyBjb250YWluZXIgdG9v
bHMuCiAgICAgLy8KLSAgICAvLyBUaGlzIHN5c2NhbGwgYmxhY2tsaXN0IGlzIGNvcGllZCBmcm9t
IGxpbnV4LXVzZXItY2hyb290LCB3aGljaCB3YXMgaW4gdHVybgotICAgIC8vIGNsZWFybHkgaW5m
bHVlbmNlZCBieSB0aGUgU2FuZHN0b3JtLmlvIGJsYWNrbGlzdC4KKyAgICAvLyBUaGlzIHN5c2Nh
bGwgYmxvY2sgbGlzdCBpcyBjb3BpZWQgZnJvbSBsaW51eC11c2VyLWNocm9vdCwgd2hpY2ggd2Fz
IGluIHR1cm4KKyAgICAvLyBjbGVhcmx5IGluZmx1ZW5jZWQgYnkgdGhlIFNhbmRzdG9ybS5pbyBi
bG9jayBsaXN0LgogICAgIC8vCiAgICAgLy8gSWYgeW91IG1ha2UgYW55IGNoYW5nZXMgaGVyZSwg
SSBzdWdnZXN0IHNlbmRpbmcgdGhlIGNoYW5nZXMgYWxvbmcKICAgICAvLyB0byBvdGhlciBzYW5k
Ym94IG1haW50YWluZXJzLiBVc2luZyB0aGUgbGlic2VjY29tcCBsaXN0IGlzIGFsc28KQEAgLTU5
MCw3ICs1OTAsNyBAQCBzdGF0aWMgaW50IHNldHVwU2VjY29tcCgpCiAgICAgLy8gaHR0cHM6Ly9n
cm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2xpYnNlY2NvbXAKICAgICAvLwogICAgIC8v
IEEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiBsaW5rcyB0byBjb250YWluZXIgdG9vbGluZyB0aGF0
IG1pZ2h0Ci0gICAgLy8gd2FudCB0byBzaGFyZSB0aGlzIGJsYWNrbGlzdDoKKyAgICAvLyB3YW50
IHRvIHNoYXJlIHRoaXMgYmxvY2sgbGlzdDoKICAgICAvLwogICAgIC8vICBodHRwczovL2dpdGh1
Yi5jb20vc2FuZHN0b3JtLWlvL3NhbmRzdG9ybQogICAgIC8vICAgIGluIHNyYy9zYW5kc3Rvcm0v
c3VwZXJ2aXNvci5jKysKQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgaW50IHNldHVwU2VjY29t
cCgpCiAgICAgc3RydWN0IHsKICAgICAgICAgaW50IHNjYWxsOwogICAgICAgICBzdHJ1Y3Qgc2Nt
cF9hcmdfY21wKiBhcmc7Ci0gICAgfSBzeXNjYWxsQmxhY2tsaXN0W10gPSB7CisgICAgfSBzeXNj
YWxsQmxvY2tMaXN0W10gPSB7CiAgICAgICAgIC8vIEJsb2NrIGRtZXNnCiAgICAgICAgIHsgU0NN
UF9TWVMoc3lzbG9nKSwgbnVsbHB0ciB9LAogICAgICAgICAvLyBVc2VsZXNzIG9sZCBzeXNjYWxs
LgpAQCAtNjQ5LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQgc2V0dXBTZWNjb21wKCkKICAgICBpZiAo
IXNlY2NvbXApCiAgICAgICAgIGdfZXJyb3IoIkZhaWxlZCB0byBpbml0IHNlY2NvbXAiKTsKIAot
ICAgIGZvciAoYXV0byYgcnVsZSA6IHN5c2NhbGxCbGFja2xpc3QpIHsKKyAgICBmb3IgKGF1dG8m
IHJ1bGUgOiBzeXNjYWxsQmxvY2tMaXN0KSB7CiAgICAgICAgIGludCBzY2FsbCA9IHJ1bGUuc2Nh
bGw7CiAgICAgICAgIGludCByOwogICAgICAgICBpZiAocnVsZS5hcmcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
NiwyMyArMzk2LDIzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNwYXRpYWxOYXZpZ2F0aW8K
ICAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
ZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNj
ZXNzQWxsb3dMaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9u
SG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRP
cmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyB9LCAwKTsK
IAogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vz
c0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29s
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMg
fSwgMCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMo
KQogewogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyB7IH0sIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzZXRP
cmlnaW5BY2Nlc3NBbGxvd0xpc3RzIHsgfSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBw
YWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAy
NjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDkgKzEwNyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiwgYm9vbCk7
CiAgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94
eSosIGJvb2wpOwogICAgIHZvaWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKFdlYlBhZ2VH
cm91cFByb3h5KiwgYm9vbCk7Ci0gICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKLSAg
ICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOwotICAgIHZvaWQgcmVzZXRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRy
eShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAg
ICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZvaWQgcmVzZXRPcmlnaW5B
Y2Nlc3NBbGxvd0xpc3RzKCk7CiAgICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSosIGJvb2wpOwogICAgIGludCBudW1iZXJPZlBhZ2Vz
KFdlYkZyYW1lKiwgZG91YmxlLCBkb3VibGUpOwogICAgIGludCBwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIGRvdWJsZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAJKHJldmlzaW9uIDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3NCwxOSArMTc0LDE5IEBAIHZvaWQgV0tCdW5kbGVTZXRTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQKICAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoV2ViS2l0Ojp0b0ltcGwocGFnZUdyb3VwUmVmKSwgZW5hYmxlZCk7CiB9CiAKLXZv
aWQgV0tCdW5kbGVBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXS0J1bmRsZVJlZiBidW5k
bGVSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Q
cm90b2NvbCwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKQordm9pZCBXS0J1bmRsZUFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5
KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0cmlu
Z1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVu
ZGxlUmVmKS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV2ViS2l0Ojp0b1dURlN0cmlu
Zyhzb3VyY2VPcmlnaW4pLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wp
LCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5hZGRPcmlnaW5BY2Nl
c3NBbGxvd0xpc3RFbnRyeShXZWJLaXQ6OnRvV1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIFdlYktp
dDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIFdlYktpdDo6dG9XVEZTdHJpbmco
ZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCi12b2lk
IFdLQnVuZGxlUmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV0tCdW5kbGVSZWYgYnVu
ZGxlUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKK3ZvaWQgV0tCdW5kbGVSZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RF
bnRyeShXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgV0tT
dHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFdlYktpdDo6dG9JbXBs
KGJ1bmRsZVJlZiktPnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYktpdDo6dG9X
VEZTdHJpbmcoc291cmNlT3JpZ2luKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblBy
b3RvY29sKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3Zl
T3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoV2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmln
aW4pLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRv
V1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
IH0KIAotdm9pZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyhXS0J1bmRsZVJl
ZiBidW5kbGVSZWYpCit2b2lkIFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RzKFdL
QnVuZGxlUmVmIGJ1bmRsZVJlZikKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5y
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVS
ZWYpLT5yZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMoKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBib29sIGVuYWJsZWQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVT
ZXRKYXZhU2NyaXB0Q2FuQQogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cCwgYm9vbCBlbmFibGVkKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXAsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldFNwYXRp
YWxOYXZpZ2F0aW9uRW5hYmxlZChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1Jl
ZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBib29sKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBib29sKTsKLVdLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKFdLQnVuZGxlUmVmIGJ1bmRs
ZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1Jl
ZiwgYm9vbCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93
TGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBX
S1N0cmluZ1JlZiwgYm9vbCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNj
ZXNzQWxsb3dMaXN0cyhXS0J1bmRsZVJlZiBidW5kbGUpOwogV0tfRVhQT1JUIGludCBXS0J1bmRs
ZU51bWJlck9mUGFnZXMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
UmVmLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMp
OwogV0tfRVhQT1JUIGludCBXS0J1bmRsZVBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3RyaW5nUmVmIGlkUmVm
LCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpOwog
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlUGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcgogICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnVybENhY2hlLmdl
dCgpXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZv
bnRBbGxvd2xpc3QocGFyYW1ldGVycy5mb250V2hpdGVsaXN0KTsKKyAgICBXZWJDb3JlOjpGb250
Q2FjaGU6OnNldEZvbnRBbGxvd2xpc3QocGFyYW1ldGVycy5mb250QWxsb3dMaXN0KTsKICNlbmRp
ZgogCiAgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1MDYyKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMjkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1v
dmUgbm9uLWluY2x1c2l2ZSB0ZXJtaW5vbG9neSBmcm9tIFdlYktpdCB2YXJpYWJsZSBubWVzIGFu
ZCB0ZXN0LW9ubHkgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KToKKwogMjAyMC0wNy0yOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIHRoZSBsb2NrIGljb24gdXBkYXRlIGNvcnJlY3RseSBpbiBNaW5pQnJv
d3NlcgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDI2NDg0MSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0
aW5nKFdLRGljdAogCiAgICAgV0tCdW5kbGVDbGVhckFsbERhdGFiYXNlcyhtX2J1bmRsZSk7CiAg
ICAgV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlKHBhZ2UoKS0+cGFnZSgpKTsKLSAg
ICBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyhtX2J1bmRsZSk7CisgICAgV0tC
dW5kbGVSZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMobV9idW5kbGUpOwogICAgIFdLQnVuZGxl
Q2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1fYnVuZGxlKTsKIAogICAgIC8vIFtXSzJdIFJF
R1JFU1NJT04ocjEyODYyMyk6IEl0IG1hZGUgbGF5b3V0IHRlc3RzIGV4dHJlbWVseSBzbG93Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAJKHJldmlzaW9uIDI2NDg0MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MywxMiAr
NTczLDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0UKIAogdm9p
ZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBz
b3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVm
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAg
ICBXS0J1bmRsZUFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgdG9XSyhzb3VyY2VPcmlnaW4pLmdldCgpLCB0b1dLKGRlc3Rp
bmF0aW9uUHJvdG9jb2wpLmdldCgpLCB0b1dLKGRlc3RpbmF0aW9uSG9zdCkuZ2V0KCksIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXS0J1bmRsZUFkZE9yaWdpbkFjY2Vzc0FsbG93
TGlzdEVudHJ5KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgdG9XSyhzb3Vy
Y2VPcmlnaW4pLmdldCgpLCB0b1dLKGRlc3RpbmF0aW9uUHJvdG9jb2wpLmdldCgpLCB0b1dLKGRl
c3RpbmF0aW9uSG9zdCkuZ2V0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmlu
Z1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3Ry
aW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
IHsKLSAgICBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgdG9XSyhzb3VyY2VPcmlnaW4pLmdldCgpLCB0
b1dLKGRlc3RpbmF0aW9uUHJvdG9jb2wpLmdldCgpLCB0b1dLKGRlc3RpbmF0aW9uSG9zdCkuZ2V0
KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXS0J1bmRsZVJlbW92ZU9yaWdp
bkFjY2Vzc0FsbG93TGlzdEVudHJ5KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgdG9XSyhzb3VyY2VPcmlnaW4pLmdldCgpLCB0b1dLKGRlc3RpbmF0aW9uUHJvdG9jb2wpLmdl
dCgpLCB0b1dLKGRlc3RpbmF0aW9uSG9zdCkuZ2V0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKIH0KIAogYm9vbCBUZXN0UnVubmVyOjppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5k
ZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405512</attachid>
            <date>2020-07-29 15:23:39 -0700</date>
            <delta_ts>2020-07-30 08:10:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214941-20200729152337.patch</filename>
            <type>text/plain</type>
            <size>43668</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjUwNTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA3LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG5vbi1p
bmNsdXNpdmUgdGVybWlub2xvZ3kgZnJvbSBXZWJLaXQgdmFyaWFibGUgbmFtZXMgYW5kIHRlc3Qt
b25seSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNDk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNj
ZXNzQWxsb3dMaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd0xpc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
OgorICAgICAgICAoX1dlYktpdFVzZXJTdHlsZVNoZWV0OjpfV2ViS2l0VXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAod2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KToKKyAgICAgICAgKHdlYmtp
dF91c2VyX3N0eWxlX3NoZWV0X25ld19mb3Jfd29ybGQpOgorICAgICAgICAoX1dlYktpdFVzZXJT
Y3JpcHQ6Ol9XZWJLaXRVc2VyU2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3NjcmlwdF9u
ZXcpOgorICAgICAgICAod2Via2l0X3VzZXJfc2NyaXB0X25ld19mb3Jfd29ybGQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHBh
dGhJc0Jsb2NrZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2FkZF9wYXRoX3RvX3Nh
bmRib3gpOgorICAgICAgICAocGF0aElzQmxhY2tsaXN0ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0VXNlckNvbnRlbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
dHVwU2VjY29tcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEZvbnRBbGxvd0xpc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVBZGRPcmln
aW5BY2Nlc3NBbGxvd0xpc3RFbnRyeSk6CisgICAgICAgIChXS0J1bmRsZVJlbW92ZU9yaWdpbkFj
Y2Vzc0FsbG93TGlzdEVudHJ5KToKKyAgICAgICAgKFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd0xpc3RzKToKKyAgICAgICAgKFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkpOiBEZWxldGVkLgorICAgICAgICAoV0tCdW5kbGVSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OmFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cyk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjAtMDctMjkg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MjY0NDc2KTogQ2FsbGluZyBzeXN0ZW1IYXNBQygpIHJlZ3Jlc3NlcyBsYXVuY2ggdGltZSBwZXJm
b3JtYW5jZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2NDg0
MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTIsMTcgKzkxMiwxNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmln
aW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3Zl
T3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlz
dHMoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nl
c3NBbGxvd0xpc3RzKCkKIHsKICAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAy
NjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw5ICsyNzIsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9w
ZW5lckRvbWFpbik7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7CisgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CisgICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CisgICAgdm9pZCByZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMoKTsKIAogICAgIHVpbnQ2NF90
IG5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY0
ODQxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAgICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKLSAgICBB
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcg
ZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgUmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmlu
ZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAg
IFJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIEFkZE9yaWdpbkFjY2Vzc0FsbG93
TGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29s
LCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKKyAgICBSZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShTdHJpbmcgc291cmNlT3Jp
Z2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgUmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd0xpc3RzKCk7CiAKICAgICBHZXROZXR3b3JrTG9hZEluZm9ybWF0aW9uUmVzcG9uc2UodWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UpIFN5bmNocm9ub3VzCiAgICAgR2V0TmV0d29ya0xvYWRJbnRlcm1lZGlhdGVJ
bmZvcm1hdGlvbih1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoVmVjdG9yPFdl
YkNvcmU6Ok5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uPiB0cmFuc2FjdGlvbnMpIFN5bmNo
cm9ub3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjY0ODQxKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZAogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5n
OwogICAgIGVuY29kZXIgPDwgc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXI7CiAg
ICAgZW5jb2RlciA8PCBzaG91bGRVc2VGb250U21vb3RoaW5nOwotICAgIGVuY29kZXIgPDwgZm9u
dFdoaXRlbGlzdDsKKyAgICBlbmNvZGVyIDw8IGZvbnRBbGxvd0xpc3Q7CiAgICAgZW5jb2RlciA8
PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZUxhbmd1YWdlczsK
ICNpZiBVU0UoR1NUUkVBTUVSKQpAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5mb250
V2hpdGVsaXN0KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZm9udEFsbG93
TGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAkocmV2aXNpb24gMjY0ODQxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkOwogICAgIFZlY3RvcjxT
dHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsK
IAotICAgIFZlY3RvcjxTdHJpbmc+IGZvbnRXaGl0ZWxpc3Q7CisgICAgVmVjdG9yPFN0cmluZz4g
Zm9udEFsbG93TGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdlczsKICNp
ZiBVU0UoR1NUUkVBTUVSKQogICAgIFZlY3RvcjxTdHJpbmc+IGdzdHJlYW1lck9wdGlvbnM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lv
biAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNzksMTEgKzIwNzksMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0TWVtb3J5Q2FjaGVEaXNhYgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRGb250QWxs
b3dMaXN0KEFQSTo6QXJyYXkqIGFycmF5KQogewotICAgIG1fZm9udFdoaXRlbGlzdC5jbGVhcigp
OworICAgIG1fZm9udEFsbG93TGlzdC5jbGVhcigpOwogICAgIGlmIChhcnJheSkgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgaWYgKEFQSTo6U3RyaW5nKiBmb250ID0gYXJyYXktPmF0PEFQSTo6U3RyaW5nPihpKSkKLSAg
ICAgICAgICAgICAgICBtX2ZvbnRXaGl0ZWxpc3QuYXBwZW5kKGZvbnQtPnN0cmluZygpKTsKKyAg
ICAgICAgICAgICAgICBtX2ZvbnRBbGxvd0xpc3QuYXBwZW5kKGZvbnQtPnN0cmluZygpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjY0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNjgwLDcgKzY4MCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkVXNlRm9udFNtb290aGluZyB7IHRydWUgfTsKIAotICAgIFZlY3RvcjxT
dHJpbmc+IG1fZm9udFdoaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2ZvbnRBbGxvd0xp
c3Q7CiAKICAgICAvLyBNZXNzYWdlcyB0aGF0IHdlcmUgcG9zdGVkIGJlZm9yZSBhbnkgcGFnZXMg
d2VyZSBjcmVhdGVkLgogICAgIC8vIFRoZSBjbGllbnQgc2hvdWxkIHVzZSBpbml0aWFsaXphdGlv
biBtZXNzYWdlcyBpbnN0ZWFkLCBzbyB0aGF0IGEgcmVzdGFydGVkIHByb2Nlc3Mgd291bGQgZ2V0
IHRoZSBzYW1lIHN0YXRlLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VXNlckNvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNwcAkocmV2aXNpb24gMjY0ODQxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NywxMCArOTcsMTAgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8U3Ry
aW5nPiB0b1N0cmluZ1ZlYwogfQogCiBzdHJ1Y3QgX1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKLSAg
ICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwg
bGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBi
bGFja2xpc3QsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKKyAgICBfV2ViS2l0VXNlclN0eWxl
U2hlZXQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIq
IGNvbnN0KiBhbGxvd0xpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibG9ja0xpc3QsIEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCkKICAgICAgICAgOiB1c2VyU3R5bGVTaGVldChhZG9wdFJlZihuZXcg
QVBJOjpVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVldCB7CiAgICAgICAgICAgICBTdHJpbmc6
OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCi0gICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9TdHJp
bmdWZWN0b3IoYWxsb3dMaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxvY2tMaXN0KSwKICAgICAgICAg
ICAgIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksCiAgICAgICAg
ICAgICB0b1VzZXJTdHlsZUxldmVsKGxldmVsKSB9LCB3b3JsZCkpKQogICAgICAgICAsIHJlZmVy
ZW5jZUNvdW50KDEpCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCB2b2lkIHdlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X3VucmVmKFdlYktpCiAgKiBAc291cmNlOiBTb3VyY2UgY29kZSBvZiB0aGUgdXNlciBz
dHlsZSBzaGVldC4KICAqIEBpbmplY3RlZF9mcmFtZXM6IEEgI1dlYktpdFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgdmFsdWUKICAqIEBsZXZlbDogQSAjV2ViS2l0VXNlclN0eWxlTGV2ZWwKLSAq
IEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIHdo
aXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFja2xpc3Q6IChhcnJheSB6
ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVy
bnMgb3IgJU5VTEwKKyAqIEBhbGxvd19saXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChh
bGxvdy1ub25lKTogQW4gYWxsb3dfbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAqIEBi
bG9ja19saXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBibG9j
a19saXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAogICoKICAqIENyZWF0ZXMgYSBuZXcgdXNl
ciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBiZSBhcHBsaWVkIHRvIHNvbWUgVVJJcwot
ICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVlcyBmb3IgQHdoaXRlbGlzdCBvciBAYmxh
Y2tsaXN0LiBQYXNzaW5nIGEKLSAqICVOVUxMIHdoaXRlbGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVS
SXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHlsZQotICogc2hlZXQgaXMgYXBwbGllZCBp
ZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAq
IG9ubHkgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEBhbGxvd19saXN0IG9yIEBibG9j
a19saXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIGFsbG93X2xpc3QgaW1wbGllcyB0aGF0IGFsbCBV
UklzIGFyZSBvbiB0aGUgYWxsb3dfbGlzdC4gVGhlIHN0eWxlCisgKiBzaGVldCBpcyBhcHBsaWVk
IGlmIGFuIFVSSSBtYXRjaGVzIHRoZSBhbGxvd19saXN0IGFuZCBub3QgdGhlIGJsb2NrX2xpc3Qu
CiAgKiBVUkkgcGF0dGVybnMgbXVzdCBiZSBvZiB0aGUgZm9ybSBgW3Byb3RvY29sXTovL1tob3N0
XS9bcGF0aF1gLCB3aGVyZSB0aGUKICAqICpob3N0KiBhbmQgKnBhdGgqIGNvbXBvbmVudHMgY2Fu
IGNvbnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoYCpgKSB0bwogICogcmVwcmVzZW50IHpl
cm8gb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgpAQCAtMTY5LDExICsxNjksMTEgQEAgdm9pZCB3
ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihXZWJLaQogICoKICAqIFNpbmNlOiAyLjYKICAq
LwotV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhjb25z
dCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdo
aXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsYWNrbGlzdCkKK1dlYktpdFVzZXJTdHlsZVNo
ZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2Vi
S2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclN0
eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiBhbGxvd0xpc3QsIGNvbnN0IGNoYXIq
IGNvbnN0KiBibG9ja0xpc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc291cmNlLCBu
dWxscHRyKTsKICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQgPSBzdGF0
aWNfY2FzdDxXZWJLaXRVc2VyU3R5bGVTaGVldCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktpdFVz
ZXJTdHlsZVNoZWV0KSkpOwotICAgIG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHls
ZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlz
dCwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgbmV3ICh1c2Vy
U3R5bGVTaGVldCkgV2ViS2l0VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywg
bGV2ZWwsIGFsbG93TGlzdCwgYmxvY2tMaXN0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRl
bnRXb3JsZCgpKTsKICAgICByZXR1cm4gdXNlclN0eWxlU2hlZXQ7CiB9CiAKQEAgLTE4Myw4ICsx
ODMsOCBAQCBXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfCiAgKiBAaW5q
ZWN0ZWRfZnJhbWVzOiBBICNXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHZhbHVlCiAg
KiBAbGV2ZWw6IEEgI1dlYktpdFVzZXJTdHlsZUxldmVsCiAgKiBAd29ybGRfbmFtZTogdGhlIG5h
bWUgb2YgYSAjV2ViS2l0U2NyaXB0V29ybGQKLSAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRl
cm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3Ig
JU5VTEwKLSAqIEBibGFja2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5v
bmUpOiBBIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAqIEBhbGxvd19saXN0
OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQW4gYWxsb3dfbGlzdCBv
ZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAqIEBibG9ja19saXN0OiAoYXJyYXkgemVyby10ZXJt
aW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBibG9ja19saXN0IG9mIFVSSSBwYXR0ZXJucyBvciAl
TlVMTAogICoKICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldCBmb3Igc2NyaXB0IHdv
cmxkIHdpdGggbmFtZSBAd29ybGRfbmFtZS4KICAqIFNlZSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF9uZXcoKSBmb3IgYSBmdWxsIGRlc2NyaXB0aW9uLgpAQCAtMTkzLDEzICsxOTMsMTMgQEAgV2Vi
S2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlXwogICoKICAqIFNpbmNlOiAyLjIy
CiAgKi8KLVdlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdf
Zm9yX3dvcmxkKGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBj
aGFyKiB3b3JsZE5hbWUsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGNoYXIq
IGNvbnN0KiBibGFja2xpc3QpCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5
bGVfc2hlZXRfbmV3X2Zvcl93b3JsZChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBs
ZXZlbCwgY29uc3QgY2hhciogd29ybGROYW1lLCBjb25zdCBjaGFyKiBjb25zdCogYWxsb3dMaXN0
LCBjb25zdCBjaGFyKiBjb25zdCogYmxvY2tMaXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1l
LCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVldCA9
IHN0YXRpY19jYXN0PFdlYktpdFVzZXJTdHlsZVNoZWV0Kj4oZmFzdE1hbGxvYyhzaXplb2YoV2Vi
S2l0VXNlclN0eWxlU2hlZXQpKSk7Ci0gICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNl
clN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwgYmxh
Y2tsaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgbmV3ICh1c2VyU3R5
bGVTaGVldCkgV2ViS2l0VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2
ZWwsIGFsbG93TGlzdCwgYmxvY2tMaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29ybGROYW1lKSk7
CiAgICAgcmV0dXJuIHVzZXJTdHlsZVNoZWV0OwogfQogCkBAIC0yMDksMTAgKzIwOSwxMCBAQCBB
UEk6OlVzZXJTdHlsZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVTaGVlCiB9CiAKIHN0cnVjdCBfV2Vi
S2l0VXNlclNjcmlwdCB7Ci0gICAgX1dlYktpdFVzZXJTY3JpcHQoY29uc3QgZ2NoYXIqIHNvdXJj
ZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2NoYXIqIGNvbnN0
KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxhY2tsaXN0LCBBUEk6OkNvbnRlbnRX
b3JsZCYgd29ybGQpCisgICAgX1dlYktpdFVzZXJTY3JpcHQoY29uc3QgZ2NoYXIqIHNvdXJjZSwg
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNl
clNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2NoYXIqIGNvbnN0KiBh
bGxvd0xpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxvY2tMaXN0LCBBUEk6OkNvbnRlbnRXb3Js
ZCYgd29ybGQpCiAgICAgICAgIDogdXNlclNjcmlwdChhZG9wdFJlZihuZXcgQVBJOjpVc2VyU2Ny
aXB0KFVzZXJTY3JpcHQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChzb3VyY2UpLCBV
UkwgeyB9LAotICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0KSwKKyAgICAgICAgICAgIHRvU3RyaW5nVmVjdG9yKGFsbG93TGlzdCks
IHRvU3RyaW5nVmVjdG9yKGJsb2NrTGlzdCksCiAgICAgICAgICAgICB0b1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLAogICAgICAgICAgICAgdG9Vc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgd29ybGQpKSkKICAgICAgICAgLCByZWZlcmVuY2VDb3VudCgx
KQpAQCAtMjY2LDEzICsyNjYsMTMgQEAgdm9pZCB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoV2Vi
S2l0VXNlcgogICogQHNvdXJjZTogU291cmNlIGNvZGUgb2YgdGhlIHVzZXIgc2NyaXB0LgogICog
QGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2YWx1
ZQogICogQGluamVjdGlvbl90aW1lOiBBICNXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB2
YWx1ZQotICogQHdoaXRlbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9u
ZSk6IEEgd2hpdGVsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAotICogQGJsYWNrbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGFsbG93X2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0
ZWQ9MSkgKGFsbG93LW5vbmUpOiBBbiBhbGxvd19saXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVM
TAorICogQGJsb2NrX2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUp
OiBBIGJsb2NrX2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCiAgKgogICogQ3JlYXRlcyBh
IG5ldyB1c2VyIHNjcmlwdC4gU2NyaXB0cyBjYW4gYmUgYXBwbGllZCB0byBzb21lIFVSSXMKLSAq
IG9ubHkgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0ZWxpc3Qgb3IgQGJsYWNr
bGlzdC4gUGFzc2luZyBhCi0gKiAlTlVMTCB3aGl0ZWxpc3QgaW1wbGllcyB0aGF0IGFsbCBVUklz
IGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUgc2NyaXB0Ci0gKiBpcyBhcHBsaWVkIGlmIGFuIFVS
SSBtYXRjaGVzIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCB0aGUgYmxhY2tsaXN0LgorICogb25seSBi
eSBwYXNzaW5nIG5vbi1udWxsIHZhbHVlcyBmb3IgQGFsbG93X2xpc3Qgb3IgQGJsb2NrX2xpc3Qu
IFBhc3NpbmcgYQorICogJU5VTEwgYWxsb3dfbGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJl
IG9uIHRoZSBhbGxvd19saXN0LiBUaGUgc2NyaXB0CisgKiBpcyBhcHBsaWVkIGlmIGFuIFVSSSBt
YXRjaGVzIHRoZSBhbGxvd19saXN0IGFuZCBub3QgdGhlIGJsb2NrX2xpc3QuCiAgKiBVUkkgcGF0
dGVybnMgbXVzdCBiZSBvZiB0aGUgZm9ybSBgW3Byb3RvY29sXTovL1tob3N0XS9bcGF0aF1gLCB3
aGVyZSB0aGUKICAqICpob3N0KiBhbmQgKnBhdGgqIGNvbXBvbmVudHMgY2FuIGNvbnRhaW4gdGhl
IHdpbGRjYXJkIGNoYXJhY3RlciAoYCpgKSB0bwogICogcmVwcmVzZW50IHplcm8gb3IgbW9yZSBv
dGhlciBjaGFyYWN0ZXJzLgpAQCAtMjgxLDExICsyODEsMTEgQEAgdm9pZCB3ZWJraXRfdXNlcl9z
Y3JpcHRfdW5yZWYoV2ViS2l0VXNlcgogICoKICAqIFNpbmNlOiAyLjYKICAqLwotV2ViS2l0VXNl
clNjcmlwdCogd2Via2l0X3VzZXJfc2NyaXB0X25ldyhjb25zdCBnY2hhciogc291cmNlLCBXZWJL
aXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBnY2hhciogY29uc3QqIHdoaXRl
bGlzdCwgY29uc3QgZ2NoYXIqIGNvbnN0KiBibGFja2xpc3QpCitXZWJLaXRVc2VyU2NyaXB0KiB3
ZWJraXRfdXNlcl9zY3JpcHRfbmV3KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGdjaGFyKiBjb25zdCogYWxsb3dMaXN0LCBjb25z
dCBnY2hhciogY29uc3QqIGJsb2NrTGlzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChz
b3VyY2UsIG51bGxwdHIpOwogICAgIFdlYktpdFVzZXJTY3JpcHQqIHVzZXJTY3JpcHQgPSBzdGF0
aWNfY2FzdDxXZWJLaXRVc2VyU2NyaXB0Kj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0VXNlclNj
cmlwdCkpKTsKLSAgICBuZXcgKHVzZXJTY3JpcHQpIFdlYktpdFVzZXJTY3JpcHQoc291cmNlLCBp
bmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGltZSwgd2hpdGVsaXN0LCBibGFja2xpc3QsIEFQSTo6
Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgIG5ldyAodXNlclNjcmlwdCkg
V2ViS2l0VXNlclNjcmlwdChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25UaW1lLCBh
bGxvd0xpc3QsIGJsb2NrTGlzdCwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKQEAgLTI5NSw4ICsyOTUsOCBAQCBXZWJL
aXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiAgKiBAaW5qZWN0ZWRfZnJhbWVz
OiBBICNXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHZhbHVlCiAgKiBAaW5qZWN0aW9u
X3RpbWU6IEEgI1dlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHZhbHVlCiAgKiBAd29ybGRf
bmFtZTogdGhlIG5hbWUgb2YgYSAjV2ViS2l0U2NyaXB0V29ybGQKLSAqIEB3aGl0ZWxpc3Q6IChh
cnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIHdoaXRlbGlzdCBvZiBVUkkg
cGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFja2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9
MSkgKGFsbG93LW5vbmUpOiBBIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAq
IEBhbGxvd19saXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQW4g
YWxsb3dfbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAqIEBibG9ja19saXN0OiAoYXJy
YXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBibG9ja19saXN0IG9mIFVSSSBw
YXR0ZXJucyBvciAlTlVMTAogICoKICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzY3JpcHQgZm9yIHNj
cmlwdCB3b3JsZCB3aXRoIG5hbWUgQHdvcmxkX25hbWUuCiAgKiBTZWUgd2Via2l0X3VzZXJfc2Ny
aXB0X25ldygpIGZvciBhIGZ1bGwgZGVzY3JpcHRpb24uCkBAIC0zMDUsMTMgKzMwNSwxMyBAQCBX
ZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiAgKgogICogU2luY2U6IDIu
MjIKICAqLwotV2ViS2l0VXNlclNjcmlwdCogd2Via2l0X3VzZXJfc2NyaXB0X25ld19mb3Jfd29y
bGQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBp
bmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGlt
ZSwgY29uc3QgY2hhciogd29ybGROYW1lLCBjb25zdCBnY2hhciogY29uc3QqIHdoaXRlbGlzdCwg
Y29uc3QgZ2NoYXIqIGNvbnN0KiBibGFja2xpc3QpCitXZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRf
dXNlcl9zY3JpcHRfbmV3X2Zvcl93b3JsZChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBjaGFyKiB3b3JsZE5hbWUsIGNvbnN0IGdj
aGFyKiBjb25zdCogYWxsb3dMaXN0LCBjb25zdCBnY2hhciogY29uc3QqIGJsb2NrTGlzdCkKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzb3VyY2UsIG51bGxwdHIpOwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRVc2VyU2NyaXB0
KiB1c2VyU2NyaXB0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclNjcmlwdCo+KGZhc3RNYWxsb2Mo
c2l6ZW9mKFdlYktpdFVzZXJTY3JpcHQpKSk7Ci0gICAgbmV3ICh1c2VyU2NyaXB0KSBXZWJLaXRV
c2VyU2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIHdoaXRlbGlz
dCwgYmxhY2tsaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgbmV3ICh1
c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVj
dGlvblRpbWUsIGFsbG93TGlzdCwgYmxvY2tMaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29ybGRO
YW1lKSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZp
c2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxNiw5ICsxMzE2LDkgQEAgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3NhbmRib3hfZW5hYgogICAgIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLT5zZXRTYW5kYm94RW5hYmxlZChlbmFibGVkKTsKIH0KIAotc3RhdGljIGJvb2wg
cGF0aElzQmxhY2tsaXN0ZWQoY29uc3QgY2hhciogcGF0aCkKK3N0YXRpYyBib29sIHBhdGhJc0Js
b2NrZWQoY29uc3QgY2hhciogcGF0aCkKIHsKLSAgICBzdGF0aWMgY29uc3QgVmVjdG9yPENTdHJp
bmcsIDQ+IGJsYWNrbGlzdGVkUHJlZml4ZXMgPSB7CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxD
U3RyaW5nLCA0PiBibG9ja2VkUHJlZml4ZXMgPSB7CiAgICAgICAgIC8vIFRoZXNlIGFyZSByZWNy
ZWF0ZWQgYnkgYndyYXAgYW5kIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkgYW5kIHJlYmlu
ZCB0aGVtLgogICAgICAgICAic3lzIiwgInByb2MiLCAiZGV2IiwKICAgICAgICAgIiIsIC8vIEFs
bCBvZiBgL2AgaXNuJ3QgYWNjZXB0YWJsZS4KQEAgLTEzMjgsNyArMTMyOCw3IEBAIHN0YXRpYyBi
b29sIHBhdGhJc0JsYWNrbGlzdGVkKGNvbnN0IGNoYXIKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBHVW5pcXVlUHRyPGNoYXIqPiBzcGxpdFBhdGgoZ19zdHJzcGxpdChwYXRoLCBHX0RJUl9T
RVBBUkFUT1JfUywgMykpOwotICAgIHJldHVybiBibGFja2xpc3RlZFByZWZpeGVzLmNvbnRhaW5z
KHNwbGl0UGF0aC5nZXQoKVsxXSk7CisgICAgcmV0dXJuIGJsb2NrZWRQcmVmaXhlcy5jb250YWlu
cyhzcGxpdFBhdGguZ2V0KClbMV0pOwogfQogCiAvKioKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X2FkZF9wYXRoX3RvX3NhbmQKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBpZiAocGF0aElz
QmxhY2tsaXN0ZWQocGF0aCkpIHsKKyAgICBpZiAocGF0aElzQmxvY2tlZChwYXRoKSkgewogICAg
ICAgICBnX2NyaXRpY2FsKCJBdHRlbXB0ZWQgdG8gYWRkIGRpc2FsbG93ZWQgcGF0aCB0byBzYW5k
Ym94OiAlcyIsIHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaAkocmV2
aXNpb24gMjY0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyQ29udGVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNiArODEsMTYgQEAgV0VCS0lUX0FQ
SSBXZWJLaXRVc2VyU3R5bGVTaGVldCAqCiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcgICAg
ICAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAg
ICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICph
bGxvd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibG9ja19saXN0KTsKIAogV0VCS0lUX0FQSSBXZWJL
aXRVc2VyU3R5bGVTaGVldCAqCiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdfZm9yX3dvcmxk
IChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRfZnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqd29y
bGRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyKiBjb25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFja2xp
c3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIq
IGNvbnN0ICAgICAgICAgICAgICphbGxvd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibG9ja19saXN0
KTsKIAogLyoqCiAgKiBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZToKQEAgLTEyNSwxNiAr
MTI1LDE2IEBAIFdFQktJVF9BUEkgV2ViS2l0VXNlclNjcmlwdCAqCiB3ZWJraXRfdXNlcl9zY3Jp
cHRfbmV3ICAgICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICpzb3VyY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgICBpbmplY3Rpb25fdGltZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAg
ICAgICAgKndoaXRlbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICphbGxvd19s
aXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25z
dCAgICAgICAgICAgICAqYmxvY2tfbGlzdCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0VXNlclNjcmlw
dCAqCiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3X2Zvcl93b3JsZCAoY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICAgICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUg
ICBpbmplY3Rpb25fdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAgICAgICAgICAgKndvcmxkX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0ZWxp
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0
ICAgICAgICAgICAgICpibGFja2xpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYWxsb3dfbGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAg
KmJsb2NrX2xpc3QpOwogCiAjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9GSUxURVIg
ICAod2Via2l0X3VzZXJfY29udGVudF9maWx0ZXJfZ2V0X3R5cGUoKSkKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlckNvbnRlbnQuaAko
cmV2aXNpb24gMjY0ODQxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRVc2VyQ29udGVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNiArODEsMTYgQEAgV0VCS0lU
X0FQSSBXZWJLaXRVc2VyU3R5bGVTaGVldCAqCiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcg
ICAgICAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAg
ICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAg
ICphbGxvd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibG9ja19saXN0KTsKIAogV0VCS0lUX0FQSSBX
ZWJLaXRVc2VyU3R5bGVTaGVldCAqCiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdfZm9yX3dv
cmxkIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRfZnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAq
d29ybGRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFj
a2xpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIqIGNvbnN0ICAgICAgICAgICAgICphbGxvd19saXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibG9ja19s
aXN0KTsKIAogLyoqCiAgKiBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZToKQEAgLTEyNSwx
NiArMTI1LDE2IEBAIFdFQktJVF9BUEkgV2ViS2l0VXNlclNjcmlwdCAqCiB3ZWJraXRfdXNlcl9z
Y3JpcHRfbmV3ICAgICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICpzb3Vy
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgICBpbmplY3Rpb25fdGltZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAg
ICAgICAgICAgKndoaXRlbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciogY29uc3QgICAgICAgICAgICAgKmJsYWNrbGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICphbGxv
d19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBj
b25zdCAgICAgICAgICAgICAqYmxvY2tfbGlzdCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0VXNlclNj
cmlwdCAqCiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3X2Zvcl93b3JsZCAoY29uc3QgZ2NoYXIgICAg
ICAgICAgICAgICAgICAgICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZF9mcmFtZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRp
bWUgICBpbmplY3Rpb25fdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKndvcmxkX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0
ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNv
bnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYWxsb3dfbGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAg
ICAgKmJsb2NrX2xpc3QpOwogCiAjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9GSUxU
RVIgICAod2Via2l0X3VzZXJfY29udGVudF9maWx0ZXJfZ2V0X3R5cGUoKSkKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0
aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNlbmRpZgogCi0gICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250
V2hpdGVsaXN0OworICAgIHBhcmFtZXRlcnMuZm9udEFsbG93TGlzdCA9IG1fZm9udEFsbG93TGlz
dDsKIAogICAgIGlmIChtX2J1bmRsZVBhcmFtZXRlcnMpIHsKICAgICAgICAgYXV0byBrZXllZEFy
Y2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAJKHJldmlzaW9u
IDI2NDg0MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxl
d3JhcExhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgxLDggKzU4MSw4IEBAIHN0YXRp
YyBpbnQgc2V0dXBTZWNjb21wKCkKICAgICAvLyBjYW4gZG8sIGFuZCB3ZSBzaG91bGQgc3VwcG9y
dCBjb2RlIHBvcnRhYmlsaXR5IGJldHdlZW4gZGlmZmVyZW50CiAgICAgLy8gY29udGFpbmVyIHRv
b2xzLgogICAgIC8vCi0gICAgLy8gVGhpcyBzeXNjYWxsIGJsYWNrbGlzdCBpcyBjb3BpZWQgZnJv
bSBsaW51eC11c2VyLWNocm9vdCwgd2hpY2ggd2FzIGluIHR1cm4KLSAgICAvLyBjbGVhcmx5IGlu
Zmx1ZW5jZWQgYnkgdGhlIFNhbmRzdG9ybS5pbyBibGFja2xpc3QuCisgICAgLy8gVGhpcyBzeXNj
YWxsIGJsb2NrIGxpc3QgaXMgY29waWVkIGZyb20gbGludXgtdXNlci1jaHJvb3QsIHdoaWNoIHdh
cyBpbiB0dXJuCisgICAgLy8gY2xlYXJseSBpbmZsdWVuY2VkIGJ5IHRoZSBTYW5kc3Rvcm0uaW8g
YmxvY2sgbGlzdC4KICAgICAvLwogICAgIC8vIElmIHlvdSBtYWtlIGFueSBjaGFuZ2VzIGhlcmUs
IEkgc3VnZ2VzdCBzZW5kaW5nIHRoZSBjaGFuZ2VzIGFsb25nCiAgICAgLy8gdG8gb3RoZXIgc2Fu
ZGJveCBtYWludGFpbmVycy4gVXNpbmcgdGhlIGxpYnNlY2NvbXAgbGlzdCBpcyBhbHNvCkBAIC01
OTAsNyArNTkwLDcgQEAgc3RhdGljIGludCBzZXR1cFNlY2NvbXAoKQogICAgIC8vIGh0dHBzOi8v
Z3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9saWJzZWNjb21wCiAgICAgLy8KICAgICAv
LyBBIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgbGlua3MgdG8gY29udGFpbmVyIHRvb2xpbmcgdGhh
dCBtaWdodAotICAgIC8vIHdhbnQgdG8gc2hhcmUgdGhpcyBibGFja2xpc3Q6CisgICAgLy8gd2Fu
dCB0byBzaGFyZSB0aGlzIGJsb2NrIGxpc3Q6CiAgICAgLy8KICAgICAvLyAgaHR0cHM6Ly9naXRo
dWIuY29tL3NhbmRzdG9ybS1pby9zYW5kc3Rvcm0KICAgICAvLyAgICBpbiBzcmMvc2FuZHN0b3Jt
L3N1cGVydmlzb3IuYysrCkBAIC02MDMsNyArNjAzLDcgQEAgc3RhdGljIGludCBzZXR1cFNlY2Nv
bXAoKQogICAgIHN0cnVjdCB7CiAgICAgICAgIGludCBzY2FsbDsKICAgICAgICAgc3RydWN0IHNj
bXBfYXJnX2NtcCogYXJnOwotICAgIH0gc3lzY2FsbEJsYWNrbGlzdFtdID0geworICAgIH0gc3lz
Y2FsbEJsb2NrTGlzdFtdID0gewogICAgICAgICAvLyBCbG9jayBkbWVzZwogICAgICAgICB7IFND
TVBfU1lTKHN5c2xvZyksIG51bGxwdHIgfSwKICAgICAgICAgLy8gVXNlbGVzcyBvbGQgc3lzY2Fs
bC4KQEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0aWMgaW50IHNldHVwU2VjY29tcCgpCiAgICAgaWYg
KCFzZWNjb21wKQogICAgICAgICBnX2Vycm9yKCJGYWlsZWQgdG8gaW5pdCBzZWNjb21wIik7CiAK
LSAgICBmb3IgKGF1dG8mIHJ1bGUgOiBzeXNjYWxsQmxhY2tsaXN0KSB7CisgICAgZm9yIChhdXRv
JiBydWxlIDogc3lzY2FsbEJsb2NrTGlzdCkgewogICAgICAgICBpbnQgc2NhbGwgPSBydWxlLnNj
YWxsOwogICAgICAgICBpbnQgcjsKICAgICAgICAgaWYgKHJ1bGUuYXJnKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTYsMjMgKzM5NiwyMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTcGF0aWFsTmF2aWdhdGlv
CiAgICAgICAgICgqaXRlciktPnNldHRpbmdzKCkuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KGVuYWJsZWQpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFj
Y2Vzc0FsbG93TGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIFNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkFkZE9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0
aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6QWRk
T3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7
CiAKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nl
c3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9v
bCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6cmVt
b3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyB9LCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
IH0sIDApOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd0xpc3Rz
KCkKIHsKICAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RzKCk7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMgeyB9LCAwKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc2V0
T3JpZ2luQWNjZXNzQWxsb3dMaXN0cyB7IH0sIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSog
cGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24g
MjY0ODQxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw5ICsxMDcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSosIGJvb2wp
OwogICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJv
eHkqLCBib29sKTsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChXZWJQYWdl
R3JvdXBQcm94eSosIGJvb2wpOwotICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Ci0g
ICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICB2b2lkIHJlc2V0T3JpZ2lu
QWNjZXNzV2hpdGVsaXN0cygpOworICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50
cnkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2b2lkIHJlc2V0T3JpZ2lu
QWNjZXNzQWxsb3dMaXN0cygpOwogICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKICAgICBpbnQgbnVtYmVyT2ZQYWdl
cyhXZWJGcmFtZSosIGRvdWJsZSwgZG91YmxlKTsKICAgICBpbnQgcGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCBkb3VibGUpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiAyNjQ4NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzQsMTkgKzE3NCwxOSBAQCB2b2lkIFdLQnVuZGxlU2V0U3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkCiAgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0U3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkKFdlYktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZiksIGVuYWJsZWQpOwogfQogCi12
b2lkIFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV0tCdW5kbGVSZWYgYnVu
ZGxlUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKK3ZvaWQgV0tCdW5kbGVBZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRy
eShXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgV0tTdHJp
bmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1
bmRsZVJlZiktPmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYktpdDo6dG9XVEZTdHJp
bmcoc291cmNlT3JpZ2luKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblByb3RvY29s
KSwgV2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+YWRkT3JpZ2luQWNj
ZXNzQWxsb3dMaXN0RW50cnkoV2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJL
aXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5n
KGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAotdm9p
ZCBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1
bmRsZVJlZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlv
blByb3RvY29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCit2b2lkIFdLQnVuZGxlUmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0
RW50cnkoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdL
U3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBXZWJLaXQ6OnRvSW1w
bChidW5kbGVSZWYpLT5yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJLaXQ6OnRv
V1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Q
cm90b2NvbCksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92
ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KFdlYktpdDo6dG9XVEZTdHJpbmcoc291cmNlT3Jp
Z2luKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgV2ViS2l0Ojp0
b1dURlN0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CiB9CiAKLXZvaWQgV0tCdW5kbGVSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmKQordm9pZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cyhX
S0J1bmRsZVJlZiBidW5kbGVSZWYpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxl
UmVmKS0+cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RzKCk7CiB9CiAKIHZvaWQgV0tCdW5kbGVT
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChXS0J1bmRsZVJlZiBidW5kbGVSZWYs
IFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgYm9vbCBlbmFibGVkKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAkocmV2aXNpb24gMjY0ODQxKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
U2V0SmF2YVNjcmlwdENhbkEKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3Jv
dXAsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwLCBib29sIGVuYWJsZWQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91
cFJlZiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCk7Ci1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdS
ZWYsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZiwgYm9vbCk7Ci1XS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZiwgYm9vbCk7Ci1XS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyhXS0J1bmRsZVJlZiBidW5k
bGUpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRy
eShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdS
ZWYsIGJvb2wpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVPcmlnaW5BY2Nlc3NBbGxv
d0xpc3RFbnRyeShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZiwg
V0tTdHJpbmdSZWYsIGJvb2wpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZXNldE9yaWdpbkFj
Y2Vzc0FsbG93TGlzdHMoV0tCdW5kbGVSZWYgYnVuZGxlKTsKIFdLX0VYUE9SVCBpbnQgV0tCdW5k
bGVOdW1iZXJPZlBhZ2VzKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZVJlZiwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxz
KTsKIFdLX0VYUE9SVCBpbnQgV0tCdW5kbGVQYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmluZ1JlZiBpZFJl
ZiwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKTsK
IFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZVBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxz
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjY0ODQxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHIKICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTp1cmxDYWNoZS5n
ZXQoKV07CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgV2ViQ29yZTo6Rm9udENhY2hlOjpzZXRG
b250QWxsb3dsaXN0KHBhcmFtZXRlcnMuZm9udFdoaXRlbGlzdCk7CisgICAgV2ViQ29yZTo6Rm9u
dENhY2hlOjpzZXRGb250QWxsb3dsaXN0KHBhcmFtZXRlcnMuZm9udEFsbG93TGlzdCk7CiAjZW5k
aWYKIAogICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gV1RGTW92ZShwYXJhbWV0
ZXJzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NTA2MikKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTI5ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIG5vbi1pbmNsdXNpdmUgdGVybWlub2xvZ3kgZnJvbSBXZWJLaXQgdmFyaWFibGUgbmFtZXMg
YW5kIHRlc3Qtb25seSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkpOgorCiAyMDIwLTA3LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgdGhlIGxvY2sgaWNvbiB1cGRhdGUgY29ycmVjdGx5IGluIE1pbmlC
cm93c2VyCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjY0ODQxKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRl
c3RpbmcoV0tEaWN0CiAKICAgICBXS0J1bmRsZUNsZWFyQWxsRGF0YWJhc2VzKG1fYnVuZGxlKTsK
ICAgICBXS0J1bmRsZVBhZ2VDbGVhckFwcGxpY2F0aW9uQ2FjaGUocGFnZSgpLT5wYWdlKCkpOwot
ICAgIFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKG1fYnVuZGxlKTsKKyAgICBX
S0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cyhtX2J1bmRsZSk7CiAgICAgV0tCdW5k
bGVDbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3MobV9idW5kbGUpOwogCiAgICAgLy8gW1dLMl0g
UkVHUkVTU0lPTihyMTI4NjIzKTogSXQgbWFkZSBsYXlvdXQgdGVzdHMgZXh0cmVtZWx5IHNsb3cK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjY0ODQxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTczLDEy
ICs1NzMsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRQogCiB2
b2lkIFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVm
IHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdS
ZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewot
ICAgIFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCB0b1dLKHNvdXJjZU9yaWdpbikuZ2V0KCksIHRvV0soZGVz
dGluYXRpb25Qcm90b2NvbCkuZ2V0KCksIHRvV0soZGVzdGluYXRpb25Ib3N0KS5nZXQoKSwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzQWxs
b3dMaXN0RW50cnkoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCB0b1dLKHNv
dXJjZU9yaWdpbikuZ2V0KCksIHRvV0soZGVzdGluYXRpb25Qcm90b2NvbCkuZ2V0KCksIHRvV0so
ZGVzdGluYXRpb25Ib3N0KS5nZXQoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3Ry
aW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNT
dHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewotICAgIFdLQnVuZGxlUmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCB0b1dLKHNvdXJjZU9yaWdpbikuZ2V0KCks
IHRvV0soZGVzdGluYXRpb25Qcm90b2NvbCkuZ2V0KCksIHRvV0soZGVzdGluYXRpb25Ib3N0KS5n
ZXQoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdLQnVuZGxlUmVtb3ZlT3Jp
Z2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCB0b1dLKHNvdXJjZU9yaWdpbikuZ2V0KCksIHRvV0soZGVzdGluYXRpb25Qcm90b2NvbCku
Z2V0KCksIHRvV0soZGVzdGluYXRpb25Ib3N0KS5nZXQoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMpOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJ
bmRleCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>