<?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>117789</bug_id>
          
          <creation_ts>2013-06-19 03:52:24 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add WebKit2 Pointer Lock Implementation</short_desc>
          <delta_ts>2014-02-03 03:26:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118132</dependson>
    
    <dependson>118133</dependson>
    
    <dependson>118469</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Stanislav Pikulik">stanislav.pikulik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jdapena</cc>
    
    <cc>kbalazs</cc>
    
    <cc>menard</cc>
    
    <cc>mkwst</cc>
    
    <cc>mrobinson</cc>
    
    <cc>obzhirov</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>scheib</cc>
    
    <cc>stanislav.pikulik</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>901725</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-19 03:52:24 -0700</bug_when>
    <thetext>[Qt][WK2] Add WebKit2 Pointer Lock Implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901731</commentid>
    <comment_count>1</comment_count>
      <attachid>204986</attachid>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-19 04:18:48 -0700</bug_when>
    <thetext>Created attachment 204986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901732</commentid>
    <comment_count>2</comment_count>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-19 04:21:24 -0700</bug_when>
    <thetext>Pointer Lock is currently disabled by macro ENABLE_POINTER_LOCK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901762</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-06-19 06:01:52 -0700</bug_when>
    <thetext>Please rebase against trunk. New features like this are also announced on webkit-dev usually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902096</commentid>
    <comment_count>4</comment_count>
      <attachid>205075</attachid>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-20 05:31:40 -0700</bug_when>
    <thetext>Created attachment 205075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902097</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-20 05:34:52 -0700</bug_when>
    <thetext>Attachment 205075 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/platform/qt-5.0-wk2/TestExpectations&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/page/PointerLockController.cpp&apos;, u&apos;Source/WebCore/page/PointerLockController.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DerivedSources.pri&apos;, u&apos;Source/WebKit2/Shared/API/c/WKBase.h&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.cpp&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/Shared/WebEventConversion.cpp&apos;, u&apos;Source/WebKit2/Shared/WebProcessCreationParameters.cpp&apos;, u&apos;Source/WebKit2/Shared/WebProcessCreationParameters.h&apos;, u&apos;Source/WebKit2/Target.pri&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKAPICast.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPage.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPointerLockPermissionManager.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPointerLockPermissionManager.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPointerLockPermissionProvider.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPointerLockPermissionRequest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPointerLockPermissionRequest.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_pointerlock.qml&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/pointerlock1.html&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/pointerlock2.html&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/PointerLockPermissionRequest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/PointerLockPermissionRequest.h&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/PointerLockPermissionRequestManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/PointerLockPermissionRequestManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockManagerProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockPermissionManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockPermissionManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockPermissionProvider.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/WebPointerLockPermissionProvider.h&apos;, u&apos;Source/WebKit2/UIProcess/PointerLock/qt/WebPointerLockManagerProxyQt.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/WebUIClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebUIClient.h&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtDialogRunner.h&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h&apos;, u&apos;Source/WebKit2/WebKit2.pri&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePointerLockClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePointerLockClient.h&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/PointerLockPermissionRequestManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/PointerLockPermissionRequestManager.h&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockManager.h&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockManager.messages.in&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockPermissionCallback.cpp&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockPermissionCallback.h&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockPermissionManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockPermissionManager.h&apos;, u&apos;Source/WebKit2/WebProcess/PointerLock/WebPointerLockPermissionManager.messages.in&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.messages.in&apos;, u&apos;Source/WebKit2/WebProcess/WebProcess.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/qt/MiniBrowserApplication.cpp&apos;, u&apos;Tools/MiniBrowser/qt/qml/BrowserWindow.qml&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/TestRunner.h&apos;, u&apos;Tools/WebKitTestRunner/Target.pri&apos;, u&apos;Tools/WebKitTestRunner/TestController.cpp&apos;, u&apos;Tools/WebKitTestRunner/TestController.h&apos;, u&apos;Tools/WebKitTestRunner/WebPointerLockPermissionProvider.cpp&apos;, u&apos;Tools/WebKitTestRunner/WebPointerLockPermissionProvider.h&apos;, u&apos;Tools/qmake/mkspecs/features/features.pri&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902099</commentid>
    <comment_count>6</comment_count>
      <attachid>205075</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-20 05:38:00 -0700</bug_when>
    <thetext>Comment on attachment 205075
Patch

Attachment 205075 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/942507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902109</commentid>
    <comment_count>7</comment_count>
      <attachid>205075</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-20 05:58:48 -0700</bug_when>
    <thetext>Comment on attachment 205075
Patch

Attachment 205075 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/880511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902113</commentid>
    <comment_count>8</comment_count>
      <attachid>205075</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-20 06:12:16 -0700</bug_when>
    <thetext>Comment on attachment 205075
Patch

Attachment 205075 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/951506</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902550</commentid>
    <comment_count>9</comment_count>
      <attachid>205185</attachid>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-21 08:09:31 -0700</bug_when>
    <thetext>Created attachment 205185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902551</commentid>
    <comment_count>10</comment_count>
      <attachid>205185</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 08:18:14 -0700</bug_when>
    <thetext>Comment on attachment 205185
Patch

Attachment 205185 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/937647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902552</commentid>
    <comment_count>11</comment_count>
      <attachid>205185</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 08:18:48 -0700</bug_when>
    <thetext>Comment on attachment 205185
Patch

Attachment 205185 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/961112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902563</commentid>
    <comment_count>12</comment_count>
      <attachid>205189</attachid>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-21 08:49:16 -0700</bug_when>
    <thetext>Created attachment 205189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902564</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-21 08:52:02 -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>902583</commentid>
    <comment_count>14</comment_count>
      <attachid>205189</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 09:31:30 -0700</bug_when>
    <thetext>Comment on attachment 205189
Patch

Attachment 205189 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/884547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902590</commentid>
    <comment_count>15</comment_count>
      <attachid>205189</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-21 09:46:00 -0700</bug_when>
    <thetext>Comment on attachment 205189
Patch

Attachment 205189 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/918602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902912</commentid>
    <comment_count>16</comment_count>
      <attachid>205285</attachid>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-24 04:58:34 -0700</bug_when>
    <thetext>Created attachment 205285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902963</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-06-24 08:17:27 -0700</bug_when>
    <thetext>Please announce this new feature in webkit-dev, as explained in http://www.webkit.org/coding/adding-features.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903364</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-06-25 09:41:02 -0700</bug_when>
    <thetext>I think you should break this patch up in to smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904234</commentid>
    <comment_count>19</comment_count>
    <who name="Stanislav Pikulik">stanislav.pikulik</who>
    <bug_when>2013-06-27 07:39:17 -0700</bug_when>
    <thetext>Ok. I&apos;ve started breaking up it by submitting 2 patches that contain basics implementations. If/Once they be approved, I&apos;ll continue to submit patches with any other changes from this big patch accordingly comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920166</commentid>
    <comment_count>20</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-08-23 03:56:01 -0700</bug_when>
    <thetext>Hi, it seems like we are working on the same feature for different ports. You should check https://bugs.webkit.org/show_bug.cgi?id=99036.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935695</commentid>
    <comment_count>21</comment_count>
      <attachid>205285</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-02 21:37:35 -0700</bug_when>
    <thetext>Comment on attachment 205285
Patch

Qt has been removed, clearing review flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975747</commentid>
    <comment_count>22</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:26:13 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204986</attachid>
            <date>2013-06-19 04:18:48 -0700</date>
            <delta_ts>2013-06-20 05:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117789-20130619151656.patch</filename>
            <type>text/plain</type>
            <size>201448</size>
            <attacher name="Stanislav Pikulik">stanislav.pikulik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE2MzlkOGQxYzAxOGIw
ZThkZDIwZjljMjhjMjllOWVhMTUzOGI2MC4uYzBhMGUzYTA1NGEzMzliMGQyOTgxYjFhOTE0ZGEx
NGE3NjdlYzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTA2LTE5ICBTdGFu
aXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRhcmdldCBtZXRob2QgdG8gZ2V0IHNlY3VyaXR5IG9yaWdpbiBv
ZiBkb2N1bWVudCB0byB3aGljaCB0aGUgZWxlbWVudCBiZWxvbmdzLCAKKyAgICAgICAgYmVmb3Jl
IHBvaW50ZXIgbG9jayB3aWxsIGJlIHJlcXVlc3RlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZEFjcXVp
cmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OmNsZWFyRWxlbWVudCk6CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFBvaW50ZXJMb2NrQ29udHJvbGxlcik6CisKIDIwMTMtMDQtMjQgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEJhY2sgcmVmZXJlbmNlcyBkb24n
dCB3b3JrIGluIHBhdHRlcm4gYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTUyOTZkZTgzMGU1NGRl
YzkwOTk2MDVlZTVjZjg1N2ExMDQyNDYyOS4uMDFmZjc5OWIxNWY4Y2VkZDAwYzRlZjBkNzFmMTk4
NmE3MzYwMjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NiBAQAorMjAxMy0wNi0xOSAgU3Rh
bmlzbGF2IFBpa3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtR
dF1bV0syXSBBZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBwb2ludGVyIGxvY2sg
cGVybWlzc2lvbiByZXF1ZXN0IHByb2Nlc3NpbmcKKyAgICAgICAgYWRkIHBvaW50ZXIgbG9jayBy
ZXF1ZXN0cyBwcm9jZXNzaW5nCisgICAgICAgIGFkZCBxbWwgQVBJCisgICAgICAgIGFkZCBxbWwg
dGVzdHMgZm9yIHBvaW50ZXIgbG9jaworCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xp
ZW50VHJhaXRzLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogU2hhcmVkL0FQSUNs
aWVudFRyYWl0cy5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBs
YXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICog
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdldFR5cGVJRCk6CisgICAg
ICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAg
IChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJM
b2NrUG9saWN5KToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3Zp
ZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RHZXRU
eXBlSUQpOgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3cpOgor
ICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OnBvaW50ZXJMb2NrZWQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnVubG9ja1BvaW50ZXIpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6cG9p
bnRlckxvY2tlZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1bmxvY2tQ
b2ludGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAgICAgICAg
KFFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJw
ZXJtaXNzaW9ucmVxdWVzdC5jcHA6CisgICAgICAgIChRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlOjpRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVh
dGUpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpRV2ViUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpzZXRBbGxvdyk6CisgICAgICAg
IChRV2ViUGVybWlzc2lvblJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9wb2ludGVybG9jay5xbWw6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3Bv
aW50ZXJsb2NrMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazIuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJL
aXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0
OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1p
c3Npb25EZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9p
bnRlckxvY2tNYW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6On5XZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5
OjpzZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJv
eHk6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFu
YWdlclByb3h5OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwcm9j
ZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBw
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3h5Ojpwb3B1bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
VXBkYXRlUG9pbnRlckxvY2tQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xp
Y2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkQWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cG9pbnRlckxvY2tNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UG9pbnRlckxvY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZVByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9x
dC9RdERpYWxvZ1J1bm5lci5oOgorICAgICAgICAoUXREaWFsb2dSdW5uZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0
V2ViUGFnZVVJQ2xpZW50OjpRdFdlYlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0
V2ViUGFnZVVJQ2xpZW50Ojpwb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
U2V0UG9pbnRlckxvY2tDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0
UG9pbnRlckxvY2spOgorICAgICAgICAoV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVu
bG9jayk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VJc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAo
V0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRMb3Nl
UG9pbnRlckxvY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQb2lu
dGVyTG9ja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFBvaW50ZXJMb2NrUGVybWlzc2lvbnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAg
KEluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0Ns
aWVudDo6c3VwcG9ydHNQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudDo6cmVxdWVzdFBvaW50
ZXJVbmxvY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9j
a0NsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2Vs
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpwZXJtaXNzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1v
dmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lv
bkRlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjazo6flBvaW50
ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OldlYlBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6fldlYlBvaW50ZXJMb2NrTWFuYWdlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3VwcG9ydHNQb2ludGVy
TG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6cmVxdWVzdFBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpyZXF1
ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdl
cjo6aXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5h
Z2VyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVy
TG9ja01hbmFnZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2ludGVyTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3RhcnRSZXF1ZXN0UG9pbnRl
clVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYlBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjazo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRl
ckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2spOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcjo6fldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6ZGlkVXBk
YXRlUG9pbnRlckxvY2tEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXI6OmRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cG9saWN5Rm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9p
bnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQb2ludGVy
TG9ja2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2lu
dGVyTG9ja0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OldlYlByb2Nlc3MpOgorCiAyMDEzLTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBERlBsdWdpbjogQ3Vyc29yIHNob3VsZCBiZWNv
bWUgYW4gaS1iZWFtIHdoZW4gb3ZlciBzZWxlY3RhYmxlIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGVj
Njg0MWFiYmYxMzAxZDllYzMyMmY1NDJhMDg1YjdjMzAwMTA1NTMuLjc0ZmZlNWJlNWEwZDIwNDE0
MDk3MDBkN2JiMzhiMGRmZTNkNDcyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtOTU1LDYgKzk1NSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBcCiAgICAg
cGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBcCiAgICAgcGFnZS9QZXJmb3JtYW5j
ZVRpbWluZy5jcHAgXAorICAgIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBcCiAgICAg
cGFnZS9QcmludENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBcCkBAIC0yMTI3LDYgKzIxMjgsNyBA
QCBIRUFERVJTICs9IFwKICAgICBwYWdlL1BhZ2VDb25zb2xlLmggXAogICAgIHBhZ2UvUGFnZVZp
c2liaWxpdHlTdGF0ZS5oIFwKICAgICBwYWdlL1BsdWdJbkNsaWVudC5oIFwKKyAgICBwYWdlL1Bv
aW50ZXJMb2NrQ29udHJvbGxlci5oIFwKICAgICBwYWdlL1BvcHVwT3BlbmluZ09ic2VydmVyLmgg
XAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmggXAogICAgIHBhZ2UvU2NyZWVuLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4IDYzZjk2NWIy
NTA2NDFjZTMzNmQ4MmNiODYwNzFmMjBkOTNhZGI1MTIuLjQzNTBkOWYxYWEzNDFhNDczODE2Yzhm
YWVhMWM5YWQxZTkyZjEwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2Nr
Q29udHJvbGxlci5jcHAKQEAgLTY4LDExICs2OCwxMyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKICAgICAgICAgfQogICAg
ICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZl
bnQsIHRhcmdldCk7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKLSAgICB9IGVsc2UgaWYg
KG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZXF1ZXN0UG9pbnRlckxvY2soKSkgewotICAg
ICAgICBtX2xvY2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0Owog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9p
bnRlcmxvY2tlcnJvckV2ZW50LCB0YXJnZXQpOworICAgICAgICBtX3RhcmdldCA9IHRhcmdldDsK
KyAgICAgICAgaWYgKG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZXF1ZXN0UG9pbnRlckxv
Y2soKSkgeworICAgICAgICAgICAgbV9sb2NrUGVuZGluZyA9IHRydWU7CisgICAgICAgICAgICBt
X2VsZW1lbnQgPSB0YXJnZXQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZW5xdWV1ZUV2
ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2Vycm9yRXZlbnQsIHRhcmdldCk7CiAg
ICAgfQogfQogCkBAIC0xMTAsMTAgKzExMiwxNiBAQCBFbGVtZW50KiBQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7CiB9CiAK
K0VsZW1lbnQqIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpk
aWRBY3F1aXJlUG9pbnRlckxvY2soKQogewogICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCku
d2Via2l0cG9pbnRlcmxvY2tjaGFuZ2VFdmVudCwgbV9lbGVtZW50LmdldCgpKTsKICAgICBtX2xv
Y2tQZW5kaW5nID0gZmFsc2U7CisgICAgbV90YXJnZXQgPSAwOwogfQogCiB2b2lkIFBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKQEAgLTE0NSw2ICsxNTMs
NyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6Y2xlYXJFbGVtZW50KCkKIHsKICAgICBt
X2xvY2tQZW5kaW5nID0gZmFsc2U7CiAgICAgbV9lbGVtZW50ID0gMDsKKyAgICBtX3RhcmdldCA9
IDA7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKaW5kZXggYzgyMDc1NGFlMWE0ZWNjNTNkMTE2YThk
NDIxZGI0ZjY2YzQ0ZTM3NC4uZGVhNDExNGRiZDIzYjJlZDdlNzNmNGViZGI4ZTFlOTVjM2FjOTE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCkBAIC01
MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQq
KTsKICAgICBib29sIGxvY2tQZW5kaW5nKCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudCgp
IGNvbnN0OworICAgIEVsZW1lbnQqIHRhcmdldCgpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRBY3F1
aXJlUG9pbnRlckxvY2soKTsKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOwpA
QCAtNjUsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2NrUGVuZGluZzsKICAgICBS
ZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVu
dE9mUmVtb3ZlZEVsZW1lbnRXaGlsZVdhaXRpbmdGb3JVbmxvY2s7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IG1fdGFyZ2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMucHJpCmluZGV4IDg5YmFjZTYwNzVlODViNGViOGFhOGQ3MjI2ZWU5ZDRiM2NmODA5
NjYuLjQ5OTZjZmE4Y2I0YjczMjM5ODVkOWVlOTM0Y2NhMjRhMmE1YjY4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5wcmkKQEAgLTQ4LDYgKzQ4LDcgQEAgVlBBVEggPSBcCiAgICAgV2ViUHJv
Y2Vzcy9OZXR3b3JrSW5mbyBcCiAgICAgV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICBX
ZWJQcm9jZXNzL1BsdWdpbnMgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2sgXAogICAgIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlIFwKICAgICBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKQEAgLTU5LDYgKzYwLDcgQEAgVlBBVEggPSBcCiAg
ICAgVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAog
ICAgIFVJUHJvY2Vzcy9QbHVnaW5zIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2sgXAogICAg
IFVJUHJvY2Vzcy9TdG9yYWdlIFwKICAgICBTaGFyZWQgXAogICAgIFNoYXJlZC9BdXRoZW50aWNh
dGlvbiBcCkBAIC0xMDMsNiArMTA1LDkgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gXAorICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBX
ZWJQb2ludGVyTG9ja01hbmFnZXIubWVzc2FnZXMuaW4gXAorICAgIFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5tZXNzYWdlcy5pbiBcCiAgICAgRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gXAogICAgIFdlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5k
ZXggNTQwYTcyMjk5OWNiMjIwMWM0YjgzY2Q0MTU2YTU5Y2NhYzlkODYyMS4uOWMwNTBhODNmYzBl
ZjdmZjg5YzRjNmUwN2Q5NGE5MzM0ZDdlNmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaApAQCAtMTMwLDYgKzEzMCw5IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
UGFnZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAq
IFdLUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQbHVnaW5TaXRl
RGF0YU1hbmFnZXIqIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciogV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KiBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3RSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyKiBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVjdGlvblNwYWNlUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUZXh0Q2hlY2tlciogV0tUZXh0Q2hlY2tl
clJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlv
blJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggYTVj
ZWVkOGFkZmViNzZmYmRjMDBiYjM2ZmZiZWQxMzQyMjQ2MGVhNS4uNDYyODFiY2QwNjUyMGJiYmVh
Mjc1YWE2M2M1ZGMzOWFmZDY0YmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVu
dFRyYWl0cy5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3Qgc2l6ZV90IEFQSUNsaWVudFRyYWl0
czxXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnMKICAg
ICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LCBiZWdhbkVudGVyRnVsbFNj
cmVlbiksCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQpCiB9OwotICAg
IAorCiBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50
Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCwgY29udGV4dE1lbnVEaXNtaXNzZWQpLAogICAgIG9mZnNldG9mKFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50LCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpLApAQCAt
NzEsNiArNzEsNyBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUxvYWRlckNs
aWVudD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7CiBjb25zdCBzaXplX3QgQVBJQ2xp
ZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsK
ICAgICBvZmZzZXRvZihXS1BhZ2VVSUNsaWVudCwgY3JlYXRlTmV3UGFnZSksCiAgICAgb2Zmc2V0
b2YoV0tQYWdlVUlDbGllbnQsIHNob3dDb2xvclBpY2tlciksCisgICAgb2Zmc2V0b2YoV0tQYWdl
VUlDbGllbnQsIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpLAog
ICAgIHNpemVvZihXS1BhZ2VVSUNsaWVudCkKIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJQ2xpZW50VHJhaXRzLmgKaW5kZXggM2JiYjZmMDNjZDk1OWFhZTdlOTk3OTY0YjllM2IwYWI1
NzRkOTAwZi4uMWE0M2ZmYzMyYzBiNDQzZmVkZmVmMjkzNDZjYjRjMzBhYWI4ZGQ0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAtNjgsNyArNjgsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlTG9hZGVyQ2xpZW50PiB7CiB9Owog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnQ+IHsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzNdOworICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bNF07CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRm9ybUNsaWVudD4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IGEyMjVlMmFmM2E5MWJiZDMyMGE5NDc3MjBi
MTdiNTg0OWExNGUxNjMuLjg2NDJiNDhiMmYxYmEyMDk0YzUxZTc1OTY0ODJjNTg2ZjM3MGJjNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFR5cGVQYWdlLAogICAgICAgICBUeXBlUGFnZUdyb3VwLAogICAgICAgICBUeXBl
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLAorICAgICAgICBUeXBlUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCwKKyAgICAgICAgVHlwZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsCiAgICAg
ICAgIFR5cGVQcmVmZXJlbmNlcywKICAgICAgICAgVHlwZVRleHRDaGVja2VyLAogICAgICAgICBU
eXBlVmlicmF0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAppbmRleCA4MWFmN2ViMjcwMmU2NDA2MjFlMjhjYmE3NTA4YTY4MzZjZTQzNmY2Li45ZjFl
NTdiZjczMWVlNThlM2YyZTQ4Y2E0ZmQ1OTczMzI5NmQ0ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtODMsNiArODMsMTAgQEAgcHVibGlj
OgogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsK
ICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwogCisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgbV9tb3ZlbWVudERlbHRhID0gV2ViQ29yZTo6SW50
UG9pbnQod2ViRXZlbnQuZGVsdGFYKCksIHdlYkV2ZW50LmRlbHRhWSgpKTsKKyNlbmRpZgorCiAg
ICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtl
eSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50OjpTaGlmdEtleTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA1NmYxNDRkNmRhNGIyNTczYzlkZmU1NjA2YWMzNDI5MzIwODE5NDZm
Li4wMWY0YzZiM2VlYzNkYWUyMDQxNjBiN2UyODFiYjE5ZTg4NjkyZWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC0xMDYsNiArMTA2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2Rl
ciA8PCBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyAgICBlbmNvZGVyIDw8IHBvaW50ZXJMb2NrUGVybWlzc2lvbnM7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgZW5jb2RlciA8PCB1c2VzTmV0d29y
a1Byb2Nlc3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQyMTkzYzc0Njc2Nzg4ZWYyZGU2ZWE3OTFh
Zjc5M2Y3NDg2ZjFlYjAuLjAyYTViYmRjZTE2NDJmNGIyMjA5NzIyN2EzNzY4YzBhMzQzMjRiOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtMTI4LDYgKzEyOCwxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1p
c3Npb25zOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIEhhc2hNYXA8
U3RyaW5nLCBib29sPiBwb2ludGVyTG9ja1Blcm1pc3Npb25zOworI2VuZGlmCisKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaQppbmRleCA0MzdmZmI4MDUwYzVlYjJhMmQ4ZWQ5NWVmYjgxZTIxOTk4Mzc2ODhh
Li4xN2JhZjJjNzk2ODRmMDNlM2EzNTY3YmE3ZGExYWE4MzEzMmUwYWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
QEAgLTE4Niw2ICsxODYsOSBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlR3JvdXAuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggXAorICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCBcCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBcCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmggXApA
QCAtMjc1LDYgKzI3OCwxMSBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZUNv
bnRleHRNZW51Q2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2sv
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIFwKKyAgICBVSVByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaCBcCisgICAgVUlQcm9j
ZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIFwK
KyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3Mv
V2ViUHJlZmVyZW5jZXMuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIFwKQEAg
LTMxMSw2ICszMTksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3Jl
ZW5DbGllbnQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIFwKQEAgLTMzNCw2ICsz
NDMsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmggXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIFwK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgg
XAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01h
bmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjay5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJC
YXR0ZXJ5Q2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggXApAQCAtNTQwLDYgKzU1Myw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIFwKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcCBcCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuY3BwIFwKQEAgLTU4MCw2ICs1OTUsMTIgQEAgU09VUkNFUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCiAgICAg
VUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwIFwKICAgICBVSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIFwKKyAgICBVSVByb2Nl
c3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAorICAgIFVJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL3F0L1dlYlBvaW50ZXJMb2NrTWFu
YWdlclByb3h5UXQuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcCBcCiAgICAgVUlQcm9jZXNz
L1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVl
c3QuY3BwIFwKICAgICBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgXApAQCAt
Njc4LDYgKzY5OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQ
b2ludGVyTG9ja0NsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBc
CkBAIC03MDQsNiArNzI2LDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBcCisgICAgV2ViUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgXAogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCmluZGV4IGIxYmU3ODU4OGNmZTEwNDlmMDNhOWI4NjQ0NmM2MzU2ZDYzMTU4OWQu
LmQ2MDRjMzViYjM1MmFmMTRhZTVlZmQwYzk5YzU1NGU4MzI0ZGY5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNs
YXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwpAQCAtODgsNiArODksOCBA
QCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdy
b3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
OworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OworY2xhc3MgV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNs
YXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFdlYlJlbmRlckxheWVyOwpAQCAtMTMzLDYg
KzEzNiw5IEBAIFdLX0FERF9BUElfTUFQUElORyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVm
LCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5CiBXS19BRERfQVBJX01BUFBJTkcoV0tQ
YWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYs
IFdlYlBhZ2VQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BsdWdpblNpdGVEYXRhTWFuYWdl
clJlZiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiwgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdFJlZiwgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCkKK1dLX0FERF9BUElfTUFQUElO
RyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUmVmLCBXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQ
cmVmZXJlbmNlcykKIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2Vi
UHJvdGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYsIFdl
YlJlbmRlckxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAppbmRleCBmYWVmNGY3YTdmN2ExNjBmOTEwNDFjYzQ5ZGYzODViOWY0Yzg5M2NlLi5iOWYy
M2RkYWY4NTQ5ZmQ1OGZjM2EyYTg0Yjc5NzIxODhhY2Q5MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIgpAQCAtMjU1
LDYgKzI1NiwxNSBAQCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZp
Y2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZgogICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
PigpKTsKIH0KIAorV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdl
dFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRl
eHRSZWYpLT5zdXBwbGVtZW50PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eT4o
KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKIFdLUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyUmVmIFdLQ29udGV4dEdldFBsdWdpblNpdGVEYXRhTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dFJlZikKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCA0YTQxMTUzYjZkN2QyNjVi
ZjU2NzNmMTJjMzFhNmI0YzIwM2VlYTg0Li42YTE3MTcxMGNiMzM3MTA0NjhkYTI5NDc1NzdkYTY2
NzgyNmMyMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CkBAIC0xOTcsNyArMTk3LDggQEAgV0tfRVhQT1JUIFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIFdL
Q29udGV4dEdldE5ldHdvcmtJbmZvTWFuYWdlcihXS0NvbnRleHRSZWYgY28KIFdLX0VYUE9SVCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihX
S0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJS
ZWYgV0tDb250ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKIFdLX0VYUE9SVCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291
cmNlQ2FjaGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKLSAgICAKK1dLX0VYUE9SVCBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CisKIHR5cGVkZWYgdm9pZCAo
KldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbikoV0tEaWN0aW9uYXJ5UmVmIHN0YXRpc3Rp
Y3MsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzKFdLQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBm
dW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbiBmdW5jdGlvbik7
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzV2l0aE9wdGlvbnMoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLU3RhdGlzdGljc09wdGlvbnMgc3RhdGlzdGljc01hc2ssIHZvaWQq
IGZ1bmN0aW9uQ29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAppbmRleCAxYWYyMzRlZGIx
YTM5NzNmMGZjMjk4ZGRlYTU3MzQxMGM4YTFjYWI2Li45M2Y5ZGVmZjA1NWE3YzNiNzczZjk4NWZj
MzJkMjU3ZWY3MDYxMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CkBAIC0yMTksNiArMjE5LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWcKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVu
ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSGlkZUNv
bG9yUGlja2VyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9u
YXJ5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lk
ZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
CiAvLyBEZXByZWNhdGVkICAgIAogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQ
YWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGlj
dGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRN
b3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0yODEs
MTAgKzI4MiwxMyBAQCBzdHJ1Y3QgV0tQYWdlVUlDbGllbnQgewogICAgIFdLUGFnZVNob3dDb2xv
clBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hv
d0NvbG9yUGlja2VyOwogICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwogICAgIFdLUGFn
ZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8gVmVyc2lvbiAz
CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0OwogfTsKIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50IFdLUGFnZVVJQ2xpZW50Owog
Ci1lbnVtIHsga1dLUGFnZVVJQ2xpZW50Q3VycmVudFZlcnNpb24gPSAyIH07CitlbnVtIHsga1dL
UGFnZVVJQ2xpZW50Q3VycmVudFZlcnNpb24gPSAzIH07CiAKIC8vIEZpbmQgY2xpZW50LgogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkRmluZFN0cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgc3RyaW5nLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE4
MmI0YjRmZTgwN2VhODYzZDQ5MGQzYzIxOGMxNmFmNDUzZmIzYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcg
RWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklD
UyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXIuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCisKK1dLVHlwZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdldFR5
cGVJRCgpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9BUEkoV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpBUElUeXBlKTsKKyNlbHNlCisgICAg
cmV0dXJuIEFQSU9iamVjdDo6VHlwZU51bGw7CisjZW5kaWYKK30KKwordm9pZCBXS1BvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcihXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ciogd2tQcm92aWRlcikKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHRvSW1wbCht
YW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZVByb3ZpZGVyKHdrUHJvdmlkZXIpOworI2VuZGlmCit9CisK
K3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVQb2lu
dGVyTG9ja1BvbGljeShXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRVcGRh
dGVQb2ludGVyTG9ja1BvbGljeSh0b0ltcGwob3JpZ2luKSwgYWxsb3dlZCk7CisjZW5kaWYKK30K
Kwordm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZVBv
aW50ZXJMb2NrUG9saWNpZXMoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucykKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGlj
aWVzKHRvSW1wbChvcmlnaW5zKSk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMTcxOGI0OTU1ZTA5OWRkODZkZGU2NjQ1MzdlOWZjYzA0YmQ0OTdl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9O
SUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyX2gKKyNkZWZpbmUgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyX2gKKwor
I2luY2x1ZGUgIldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJH
ZXRUeXBlSUQoKTsKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clNldFByb3ZpZGVyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBjb25zdCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKTsKK1dL
X0VYUE9SVCB2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkVXBk
YXRlUG9pbnRlckxvY2tQb2xpY3koV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1h
bmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBib29sIGFsbG93ZWQpOworV0tf
RVhQT1JUIHZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1v
dmVQb2ludGVyTG9ja1BvbGljaWVzKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBt
YW5hZ2VyUmVmLCBXS0FycmF5UmVmIG9yaWdpbnMpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTgxZDczYTExOTk3ZWE0
NTdjYzA3MGM4OGI0Zjg3ZmMzMjc4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisjZGVmaW5lIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXJfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQg
KCpXS1BvaW50ZXJMb2NrUGVybWlzc2lvbkFkZE5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayko
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
clJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjaykoV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBX
S0RpY3Rpb25hcnlSZWYgKCpXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUGVybWlzc2lv
bnNDYWxsYmFjaykoY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qg
dm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRJbmZvOworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uQWRkTm90aWZpY2F0aW9u
TWFuYWdlckNhbGxiYWNrICAgICAgICAgICAgYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
cjsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUmVtb3ZlTm90aWZpY2F0aW9u
TWFuYWdlckNhbGxiYWNrIHJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI7CisgICAg
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlclBlcm1pc3Npb25zQ2FsbGJhY2sgICAgICAg
ICAgICAgICBwb2ludGVyTG9ja1Blcm1pc3Npb25zOworfTsKK3R5cGVkZWYgc3RydWN0IFdLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
cjsKKworZW51bSB7IGtXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyQ3VycmVudFZlcnNp
b24gPSAwIH07CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcwZDQ5N2ZmYmM4YWUyYjY0MmY2Yjc3YmFlNDVhYWEzM2Iz
YzNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVM
RUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2luY2x1ZGUgIlBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHJl
dHVybiB0b0FQSShQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjpBUElUeXBlKTsKKyNlbHNl
CisgICAgcmV0dXJuIEFQSU9iamVjdDo6VHlwZU51bGw7CisjZW5kaWYKK30KKwordm9pZCBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIHJldHVybiB0b0ltcGwocG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dCktPmFsbG93KCk7CisjZW5kaWYKK30KKwordm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3REZW55KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0KQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcmV0dXJu
IHRvSW1wbChwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KS0+ZGVueSgpOworI2VuZGlmCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUxODZkNjcwMjIwOTgx
YzNkN2NhMDgxOGYzMjhjMGNjNjY1MzRiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5
cGVJRCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsKKworV0tfRVhQ
T1JUIHZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3coV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpOworV0tf
RVhQT1JUIHZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueShXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggMTIxM2ZkOWIyMDE4N2I5OTU5M2Y0NTAxZmMyZDkx
NmQ1N2EyNjYxYS4uOGE0NDgwY2UyZGQxMTk2OTY1MzMzYzI3Y2Y2YzZhMWFmNTczZmE5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
CkBAIC00NSw2ICs0NSw5IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5o
IgogI2VuZGlmCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJxZ2xvYmFsLmgiCiAjaW5jbHVk
ZSAicXF1aWNrbmV0d29ya3JlcGx5X3AuaCIKQEAgLTMzNSw2ICszMzgsMTAgQEAgdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYgcGEKICAgICB3ZWJQYWdlUHJveHktPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNl
dFdlYlZpZXcocV9wdHIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAg
IHdlYlBhZ2VQcm94eS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnNldFdlYlZpZXcocV9wdHIpOwor
I2VuZGlmCisKICAgICBwYWdlRXZlbnRIYW5kbGVyLnJlc2V0KG5ldyBRdFdlYlBhZ2VFdmVudEhh
bmRsZXIod2ViUGFnZS5nZXQoKSwgcGFnZVZpZXcuZGF0YSgpLCBxX3B0cikpOwogCiAgICAgewpA
QCAtNTI3LDYgKzUzNCwxOCBAQCBib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVu
dEJhY2tncm91bmQoKSBjb25zdAogICAgIHJldHVybiB3ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKCk7CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9vbCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6cG9pbnRlckxvY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHdlYlBhZ2VQcm94eS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmlzUG9pbnRlckxvY2tlZCgpOwor
fQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1bmxvY2tQb2ludGVyKCkKK3sKKyAgICB3
ZWJQYWdlUHJveHktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5kaWRMb3NlUG9pbnRlckxvY2soKTsK
K30KKyNlbmRpZgorCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkUHJvZ3Jlc3NEaWRD
aGFuZ2UoaW50IGxvYWRQcm9ncmVzcykKIHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CkBAIC0x
MDcxLDEyICsxMDkwLDMxIEBAIGJvb2wgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CiAg
ICAgcmV0dXJuIGQtPnRyYW5zcGFyZW50QmFja2dyb3VuZCgpOwogfQorCiB2b2lkIFFRdWlja1dl
YlZpZXdFeHBlcmltZW50YWw6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGVuYWJsZSkK
IHsKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7CiAgICAgZC0+c2V0VHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKGVuYWJsZSk7CiB9CiAKK2Jvb2wgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6cG9pbnRl
ckxvY2tlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBRX0QoY29u
c3QgUVF1aWNrV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPnBvaW50ZXJMb2NrZWQoKTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbDo6dW5sb2NrUG9pbnRlcigpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBRX0QoUVF1aWNrV2ViVmlldyk7CisgICAgZC0+dW5sb2NrUG9pbnRlcigpOworI2VuZGlmCit9
CisKIGJvb2wgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dXNlRGVmYXVsdENvbnRlbnRJdGVt
U2l6ZSgpIGNvbnN0CiB7CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggNDY4
NTE1ZmNmZmE4MTk0OTFiMGJkZWUzNTM2NTZlMzgxMGEwODAwOS4uZmY2NWZiYTBlZDdkZWU2M2I2
ZmU3YTQ4MzY5MTg0ODgyMDg1Y2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yNTYsNyArMjU2LDcgQEAgY2xhc3MgUVdF
QktJVF9FWFBPUlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1YmxpYyBRT2JqZWN0IHsK
IAogICAgIFFfUFJPUEVSVFkoYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQgV1JJVEUgc2V0VHJh
bnNwYXJlbnRCYWNrZ3JvdW5kIFJFQUQgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAgIFFfUFJP
UEVSVFkoYm9vbCB1c2VEZWZhdWx0Q29udGVudEl0ZW1TaXplIFdSSVRFIHNldFVzZURlZmF1bHRD
b250ZW50SXRlbVNpemUgUkVBRCB1c2VEZWZhdWx0Q29udGVudEl0ZW1TaXplKQotCisgICAgUV9Q
Uk9QRVJUWShib29sIHBvaW50ZXJMb2NrZWQgUkVBRCBwb2ludGVyTG9ja2VkKQogICAgIFFfUFJP
UEVSVFkoaW50IHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoIFdSSVRFIHNldFByZWZlcnJl
ZE1pbmltdW1Db250ZW50c1dpZHRoIFJFQUQgcHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGgg
Tk9USUZZIHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoQ2hhbmdlZCkKICAgICBRX1BST1BF
UlRZKGludCBkZXZpY2VXaWR0aCBXUklURSBzZXREZXZpY2VXaWR0aCBSRUFEIGRldmljZVdpZHRo
IE5PVElGWSBkZXZpY2VXaWR0aENoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShpbnQgZGV2aWNlSGVp
Z2h0IFdSSVRFIHNldERldmljZUhlaWdodCBSRUFEIGRldmljZUhlaWdodCBOT1RJRlkgZGV2aWNl
SGVpZ2h0Q2hhbmdlZCkKQEAgLTI3Myw3ICsyNzMsNiBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBR
UXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJPUEVS
VFkoUVFtbENvbXBvbmVudCogZmlsZVBpY2tlciBSRUFEIGZpbGVQaWNrZXIgV1JJVEUgc2V0Rmls
ZVBpY2tlciBOT1RJRlkgZmlsZVBpY2tlckNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRUW1sQ29t
cG9uZW50KiBkYXRhYmFzZVF1b3RhRGlhbG9nIFJFQUQgZGF0YWJhc2VRdW90YURpYWxvZyBXUklU
RSBzZXREYXRhYmFzZVF1b3RhRGlhbG9nIE5PVElGWSBkYXRhYmFzZVF1b3RhRGlhbG9nQ2hhbmdl
ZCkKICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGNvbG9yQ2hvb3NlciBSRUFEIGNvbG9y
Q2hvb3NlciBXUklURSBzZXRDb2xvckNob29zZXIgTk9USUZZIGNvbG9yQ2hvb3NlckNoYW5nZWQp
Ci0KICAgICBRX1BST1BFUlRZKFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVm
ZXJlbmNlcyBDT05TVEFOVCBGSU5BTCkKICAgICBRX1BST1BFUlRZKFFXZWJLaXRUZXN0KiB0ZXN0
IFJFQUQgdGVzdCBDT05TVEFOVCBGSU5BTCkKICAgICBRX1BST1BFUlRZKFFRbWxMaXN0UHJvcGVy
dHk8UVF1aWNrVXJsU2NoZW1lRGVsZWdhdGU+IHVybFNjaGVtZURlbGVnYXRlcyBSRUFEIHNjaGVt
ZURlbGVnYXRlcykKQEAgLTM0NSw2ICszNDQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0cmFuc3Bh
cmVudEJhY2tncm91bmQoKSBjb25zdDsKICAgICB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3Vu
ZChib29sKTsKIAorICAgIGJvb2wgcG9pbnRlckxvY2tlZCgpIGNvbnN0OworCiAgICAgYm9vbCB1
c2VEZWZhdWx0Q29udGVudEl0ZW1TaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2VEZWZhdWx0
Q29udGVudEl0ZW1TaXplKGJvb2wgZW5hYmxlKTsKIApAQCAtMzYzLDYgKzM2NCw3IEBAIHB1Ymxp
YyBRX1NMT1RTOgogICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgUVN0cmluZyYpOwogICAgIHZv
aWQgZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFs
dWUmIHZhbHVlID0gUUpTVmFsdWUoKSk7CiAgICAgdm9pZCBmaW5kVGV4dChjb25zdCBRU3RyaW5n
JiBzdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zID0gMCk7CisgICAgdm9pZCB1bmxvY2tQb2ludGVy
KCk7CiAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRWaXN1YWxseUNvbW1pdHRlZCgpOwpAQCAt
Mzg4LDYgKzM5MCw4IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIHByZWZlcnJlZE1pbmltdW1Db250
ZW50c1dpZHRoQ2hhbmdlZCgpOwogICAgIHZvaWQgcmVtb3RlSW5zcGVjdG9yVXJsQ2hhbmdlZCgp
OwogICAgIHZvaWQgdGV4dEZvdW5kKGludCBtYXRjaENvdW50KTsKKyAgICB2b2lkIHBvaW50ZXJM
b2NrUmVxdWVzdGVkKCk7CisgICAgdm9pZCBwb2ludGVyVW5sb2NrUmVxdWVzdGVkKCk7CiAKIHBy
aXZhdGU6CiAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbChRUXVpY2tXZWJWaWV3KiB3ZWJW
aWV3LCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2ViVmlld1ByaXZhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDQz
NGY0MTEyOTg3YjRlMDBhNTc0ZjRmMTU3YzFlZjhlMTY0YTcxZWEuLmY0ZTA2YTQ0NzEzOTVkZDYx
ZmYxY2EwZjgyMzA1N2ZjNDliMWM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTEyMyw2ICsxMjMsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlVXNlclNjcmlwdHMoKTsKICAgICB2b2lkIHVwZGF0ZVNjaGVt
ZURlbGVnYXRlcygpOwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBib29sIHBvaW50
ZXJMb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIHVubG9ja1BvaW50ZXIoKTsKKyNlbmRpZgorCiAg
ICAgUVBvaW50RiBjb250ZW50UG9zKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50UG9zKGNv
bnN0IFFQb2ludEYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCmluZGV4IDQ1Njk3YTIyYjY2MmMyNjll
MjNiNzQ5ZjU5ZjhmZDIyOWY5YWJmMzIuLjY1YWQ3NjRjOTY2MmE5NThjNjUzYjQ4MDVmMjdlYzEx
MmNhNmFhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
YnBlcm1pc3Npb25yZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAKQEAgLTI3LDEwICsyNywxMSBAQAogCiBjbGFz
cyBRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhIHsKIHB1
YmxpYzoKLSAgICBRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKFdLU2VjdXJpdHlPcmlnaW5S
ZWYgc2VjdXJpdHlPcmlnaW4sIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8g
PSAwLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIG5vdGlmeSA9IDAsIFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6UmVxdWVzdFR5cGUgcmVxVHlwZSA9IFFXZWJQZXJtaXNzaW9uUmVx
dWVzdDo6R2VvbG9jYXRpb24pCisgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWYgZ2VvID0gMCwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3Rp
ZnkgPSAwLCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcG9pbnRlciA9IDAsIFFX
ZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVxdWVzdFR5cGUgcmVxVHlwZSA9IFFXZWJQZXJtaXNzaW9u
UmVxdWVzdDo6R2VvbG9jYXRpb24pCiAgICAgICAgIDogb3JpZ2luKHNlY3VyaXR5T3JpZ2luKQog
ICAgICAgICAsIGdlb2xvY2F0aW9uUmVxdWVzdChnZW8pCiAgICAgICAgICwgbm90aWZpY2F0aW9u
UmVxdWVzdChub3RpZnkpCisgICAgICAgICwgcG9pbnRlckxvY2tSZXF1ZXN0KHBvaW50ZXIpCiAg
ICAgICAgICwgdHlwZShyZXFUeXBlKQogICAgICAgICAsIGFsbG93KGZhbHNlKQogICAgIHsKQEAg
LTUwLDYgKzUxLDcgQEAgcHVibGljOgogICAgIFdLUmV0YWluUHRyPFdLU2VjdXJpdHlPcmlnaW5S
ZWY+IG9yaWdpbjsKICAgICBXS1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RSZWY+IGdlb2xvY2F0aW9uUmVxdWVzdDsKICAgICBXS1JldGFpblB0cjxXS05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UmVmPiBub3RpZmljYXRpb25SZXF1ZXN0OworICAgIFdLUmV0YWlu
UHRyPFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZj4gcG9pbnRlckxvY2tSZXF1ZXN0
OwogICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVxdWVzdFR5cGUgdHlwZTsKICAgICBRdFdl
YlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5SW5mbzsKICAgICBib29sIGFsbG93OwpAQCAtNjIsMTYg
KzY0LDIyIEBAIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogUVdlYlBlcm1pc3Npb25SZXF1ZXN0Ojpj
cmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sCiAKIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dCogUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmln
aW4sIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gbmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdChvcmlnaW4sIDAsIHJlcXVlc3QsIFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6Tm90aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gbmV3IFFXZWJQZXJt
aXNzaW9uUmVxdWVzdChvcmlnaW4sIDAsIHJlcXVlc3QsIDAsIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dDo6Tm90aWZpY2F0aW9uKTsKK30KKworUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIG5ldyBRV2Vi
UGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCAwLCAwLCByZXF1ZXN0LCBRV2ViUGVybWlzc2lvblJl
cXVlc3Q6OlBvaW50ZXJMb2NrKTsKIH0KIAogUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpRV2ViUGVy
bWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBXS0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYgZ2VvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVxdWVzdFR5cGUg
dHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2Jq
ZWN0KiBwYXJlbnQpCiAgICAgOiBRT2JqZWN0KHBhcmVudCkKLSAgICAsIGQobmV3IFFXZWJQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUoc2VjdXJpdHlPcmlnaW4sIGdlbywgbm90aWZ5LCB0eXBlKSkK
KyAgICAsIGQobmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoc2VjdXJpdHlPcmlnaW4s
IGdlbywgbm90aWZ5LCBwb2ludGVyLCB0eXBlKSkKIHsKIH0KIApAQCAtMTAyLDYgKzExMCwxNCBA
QCB2b2lkIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3coYm9vbCBhY2NlcHRlZCkKICAg
ICAgICAgICAgIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KGQtPm5vdGlmaWNh
dGlvblJlcXVlc3QuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQb2lu
dGVyTG9jazogeworICAgICAgICBpZiAoYWNjZXB0ZWQpCisgICAgICAgICAgICBXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyhkLT5wb2ludGVyTG9ja1JlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RE
ZW55KGQtPnBvaW50ZXJMb2NrUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAg
LTExOCw0ICsxMzQsMyBAQCBRdFdlYlNlY3VyaXR5T3JpZ2luKiBRV2ViUGVybWlzc2lvblJlcXVl
c3Q6OnNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICByZXR1cm4gJihkLT5zZWN1cml0eUluZm8pOwog
fQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJt
aXNzaW9ucmVxdWVzdF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJw
ZXJtaXNzaW9ucmVxdWVzdF9wLmgKaW5kZXggMDAwMjUyYmRiZTFhYjhjNThhYWEyOTc3YTc5OTNk
NWQzOTA2NDlhNC4uYzU0ODUxOGY3YTQxMTEzNmQxYjFiZTVjYWM3NDFmNmM1NWMyMDNhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJl
cXVlc3RfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1p
c3Npb25yZXF1ZXN0X3AuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPFF0Q29yZS9xc2hh
cmVkZGF0YS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VjdXJpdHlPcmlnaW4uaD4KIAogY2xhc3MgUVdlYlBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZTsKQEAgLTQxLDExICs0MiwxMyBAQCBjbGFzcyBRV0VCS0lUX0VY
UE9SVCBRV2ViUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgZW51bSBSZXF1ZXN0VHlwZSB7CiAgICAgICAgIEdlb2xvY2F0aW9uLAotICAgICAgICBOb3Rp
ZmljYXRpb24KKyAgICAgICAgTm90aWZpY2F0aW9uLAorICAgICAgICBQb2ludGVyTG9jawogICAg
IH07CiAKICAgICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1cml0
eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKICAgICBzdGF0
aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiwgV0tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CisgICAgc3RhdGljIFFXZWJQZXJtaXNz
aW9uUmVxdWVzdCogY3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdFJlZik7CiAgICAgdmlydHVhbCB+UVdlYlBlcm1pc3Npb25SZXF1ZXN0KCk7
CiAKICAgICBSZXF1ZXN0VHlwZSB0eXBlKCkgY29uc3Q7CkBAIC02MCw2ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJp
dHlPcmlnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBXS0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWYgZ2VvID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAsIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyID0g
MAogICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVx
dWVzdFR5cGUgdHlwZSA9IEdlb2xvY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
UU9iamVjdCogcGFyZW50ID0gMCk7CiAKQEAgLTY3LDUgKzcxLDQgQEAgcHJpdmF0ZToKICAgICBR
RXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyPFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU+
IGQ7CiB9OwogCi0KICNlbmRpZiAvLyBxd2VicGVybWlzc2lvbnJlcXVlc3RfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3
L3RzdF9wb2ludGVybG9jay5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJsb2NrLnFtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGY3
YmUxZGI3MWYyNTNjMTkyNTA0YmY0MzRlZjc0MWU4YjRlMzY0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3Rz
dF9wb2ludGVybG9jay5xbWwKQEAgLTAsMCArMSwxMTUgQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAor
aW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKK2ltcG9ydCBRdFdlYktpdC5l
eHBlcmltZW50YWwgMS4wCisKK1dlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6
IDIwMAorICAgIGhlaWdodDogMjAwCisKKyAgICBwcm9wZXJ0eSBib29sIGV4cGVjdGVkUGVybWlz
c2lvbjogZmFsc2UKKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBwZXJtaXNzaW9uU3B5
CisgICAgICAgIHRhcmdldDogZXhwZXJpbWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJwZXJt
aXNzaW9uUmVxdWVzdGVkIgorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBw
b2ludGVyTG9ja1NweQorICAgICAgICB0YXJnZXQ6IGV4cGVyaW1lbnRhbAorICAgICAgICBzaWdu
YWxOYW1lOiAicG9pbnRlckxvY2tSZXF1ZXN0ZWQiCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsK
KyAgICAgICAgaWQ6IHBvaW50ZXJVbmxvY2tTcHkKKyAgICAgICAgdGFyZ2V0OiBleHBlcmltZW50
YWwKKyAgICAgICAgc2lnbmFsTmFtZTogInBvaW50ZXJVbmxvY2tSZXF1ZXN0ZWQiCisgICAgfQor
CisgICAgZXhwZXJpbWVudGFsLm9uUGVybWlzc2lvblJlcXVlc3RlZDogeworICAgICAgICAvLyBN
dXN0IGJlIGZhbHNlIGJ5IGRlZmF1bHQKKyAgICAgICAgaWYgKCFwZXJtaXNzaW9uLmFsbG93KSB7
CisgICAgICAgICAgIHBlcm1pc3Npb24uYWxsb3cgPSB0cnVlCisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgIGNvbnNvbGUubG9nKCJGYWlsOiBwZXJtaXNzaW9uIG11c3QgYmUgc2V0IHRvIGZh
bHNlIikKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwZXJtaXNzaW9uLnR5cGUgPT0gUGVybWlz
c2lvblJlcXVlc3QuUG9pbnRlckxvY2spIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJQZXJt
aXNzaW9uIGlzIFBvaW50ZXJMb2NrIikKKyAgICAgICAgfQorICAgIH0KKworICAgIGV4cGVyaW1l
bnRhbC5vblBvaW50ZXJMb2NrUmVxdWVzdGVkOiB7CisgICAgICAgIGNvbnNvbGUubG9nKCJQb2lu
dGVyTG9jayBpcyByZXF1ZXN0ZWQiKQorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5vblBvaW50
ZXJVbmxvY2tSZXF1ZXN0ZWQ6IHsKKyAgICAgICAgY29uc29sZS5sb2coIlBvaW50ZXIgVW5sb2Nr
IGlzIHJlcXVlc3RlZCIpCisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAi
V2ViVmlld1BvaW50ZXJMb2NrIFJlcXVlc3QiCisKKyAgICAgICAgLy8gRGVsYXllZCB3aW5kb3dT
aG93biB0byB3b3JrYXJvdW5kIHByb2JsZW1zIHdpdGggUXQ1IGluIGRlYnVnIG1vZGUuCisgICAg
ICAgIHdoZW46IGZhbHNlCisgICAgICAgIFRpbWVyIHsKKyAgICAgICAgICAgIHJ1bm5pbmc6IHBh
cmVudC53aW5kb3dTaG93bgorICAgICAgICAgICAgcmVwZWF0OiBmYWxzZQorICAgICAgICAgICAg
aW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiBwYXJlbnQud2hlbiA9IHRydWUK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiB0ZXN0X3BvaW50ZXJMb2NrUmVxdWVzdFdpdGhGb3JjZWRFeGl0KCkgewor
ICAgICAgICAgICAgcGVybWlzc2lvblNweS5jbGVhcigpCisgICAgICAgICAgICBwb2ludGVyTG9j
a1NweS5jbGVhcigpCisKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwo
Ii4uL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbCIpCisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5
LndhaXQoKQorICAgICAgICAgICAgcG9pbnRlckxvY2tTcHkud2FpdCgpCisgICAgICAgICAgICBj
b21wYXJlKHBlcm1pc3Npb25TcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50
ZXJMb2NrU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShleHBlcmltZW50YWwucG9p
bnRlckxvY2tlZCwgdHJ1ZSkKKworICAgICAgICAgICAgcG9pbnRlclVubG9ja1NweS5jbGVhcigp
CisgICAgICAgICAgICBleHBlcmltZW50YWwudW5sb2NrUG9pbnRlcigpCisgICAgICAgICAgICBw
b2ludGVyVW5sb2NrU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShwb2ludGVyVW5sb2Nr
U3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShleHBlcmltZW50YWwucG9pbnRlckxv
Y2tlZCwgZmFsc2UpCisKKyAgICAgICAgICAgIC8vIE9ubHkgdGhlIFBvaW50ZXJMb2NrUmVxdWVz
dGVkIG5vdGlmaWNhdGlvbiBpcyBleHBlY3RlZC4KKyAgICAgICAgICAgIC8vIEEgcGVybWlzc2lv
biBtdXN0IGJlZW4gY2FjaGVkCisgICAgICAgICAgICBwb2ludGVyTG9ja1NweS5jbGVhcigpCisg
ICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vcG9pbnRl
cmxvY2sxLmh0bWwiKQorICAgICAgICAgICAgcG9pbnRlckxvY2tTcHkud2FpdCgpCisgICAgICAg
ICAgICBjb21wYXJlKHBvaW50ZXJMb2NrU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFy
ZShleHBlcmltZW50YWwucG9pbnRlckxvY2tlZCwgdHJ1ZSkKKworICAgICAgICAgICAgcG9pbnRl
clVubG9ja1NweS5jbGVhcigpCisgICAgICAgICAgICBleHBlcmltZW50YWwudW5sb2NrUG9pbnRl
cigpCisgICAgICAgICAgICBwb2ludGVyVW5sb2NrU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShwb2ludGVyVW5sb2NrU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShleHBl
cmltZW50YWwucG9pbnRlckxvY2tlZCwgZmFsc2UpCisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiB0ZXN0X3BvaW50ZXJMb2NrUmVxdWVzdFdpdGhTZWxmRXhpdCgpIHsKKyAgICAgICAgICAg
IHBlcm1pc3Npb25TcHkuY2xlYXIoKQorICAgICAgICAgICAgcG9pbnRlckxvY2tTcHkuY2xlYXIo
KQorICAgICAgICAgICAgcG9pbnRlclVubG9ja1NweS5jbGVhcigpCisKKyAgICAgICAgICAgIHdl
YlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wb2ludGVybG9jazIuaHRtbCIp
CisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5LndhaXQoKQorICAgICAgICAgICAgcG9pbnRlckxv
Y2tTcHkud2FpdCgpCisgICAgICAgICAgICBwb2ludGVyVW5sb2NrU3B5LndhaXQoKQorCisgICAg
ICAgICAgICBjb21wYXJlKHBlcm1pc3Npb25TcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21w
YXJlKHBvaW50ZXJMb2NrU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShwb2ludGVy
VW5sb2NrU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShleHBlcmltZW50YWwucG9p
bnRlckxvY2tlZCwgZmFsc2UpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVy
bG9jazEuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyZmE2YzdlODc2ZTA2ZmQ0
NTM3NzFkMzg1OTBiZGQyM2M0MTQ3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazEuaHRt
bApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorICA8dGl0bGU+UG9pbnRlciBMb2Nr
IFJlcXVlc3QgdGVzdCAobmVlZHMgZm9yY2VkIHVubG9jayk8L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisgIDxzY3JpcHQ+
CisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworICAg
IHRhcmdldGRpdi53ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAgPC9zY3JpcHQ+CisgIFBv
aW50ZXIgTG9jayBSZXF1ZXN0IFRlc3QgKG5lZWRzIGZvcmNlZCB1bmxvY2spCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazIuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhODg5MGE1Y2Q4NDFiMDllYzFiZTFkZjU2MzU0ZTY5N2FiMDk5NGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L2NvbW1vbi9wb2ludGVybG9jazIuaHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbD4KKzxoZWFk
PgorICA8dGl0bGU+UG9pbnRlciBMb2NrIFJlcXVlc3QgdGVzdCAodW5sb2NrcyBzZWxmKTwvdGl0
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8
L2Rpdj4KKyAgPHNjcmlwdD4KKyAgICBkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdl
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoZG9jdW1lbnQud2Via2l0UG9pbnRlckxvY2tF
bGVtZW50ID09IHRhcmdldGRpdikKKyAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRQb2lu
dGVyTG9jaygpOworICAgIH07CisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpOworICAgIHRhcmdldGRpdi53ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsK
KyAgPC9zY3JpcHQ+CisgIFBvaW50ZXIgTG9jayBSZXF1ZXN0IFRlc3QgKHVubG9ja3Mgc2VsZikK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
b2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NzJhNGNlODVkNDY5N2RjNTFjZmZiYTI3OTFhZDI1NWI3NDc3NGRjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNU
Uk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8UG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdD4gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdlYktp
dDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSAqbWFuYWdlcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QobWFu
YWdlcikpOworfQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjpQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0KFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkq
IG1hbmFnZXIpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKK3sKK30KKwordm9pZCBQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0OjphbGxvdygpCit7CisgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWFuYWdlci0+ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVy
bWlzc2lvbkRlY2lzaW9uKHRydWUpOworICAgIG1fbWFuYWdlciA9IDA7Cit9CisKK3ZvaWQgUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSgpCit7CisgICAgaWYgKCFtX21hbmFnZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFuYWdlci0+ZGlkUmVjZWl2ZVBvaW50ZXJMb2Nr
UGVybWlzc2lvbkRlY2lzaW9uKGZhbHNlKTsKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit2b2lk
IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmludmFsaWRhdGUoKQoreworICAgIG1fbWFu
YWdlciA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMDA1NzMwNzc2NzlkMzdjNGI0OWE3MDc0ZTU0NmQ2MDEwMGYwMzgwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklD
UyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RfaAorI2RlZmluZSBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTsKKworY2xhc3MgUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqKTsKKworICAgIHZvaWQgYWxsb3coKTsKKyAgICB2b2lk
IGRlbnkoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QoUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSopOworCisgICAgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbV9tYW5hZ2VyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
T0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcwMDVjYzExY2RkZjRhOTUzMjA0NDZjODBlM2I2NGYxNTczOTg5
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxv
Y2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0LT5pbnZh
bGlkYXRlKCk7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3QuY2xlYXIoKTsKKyAgICB9Cit9CisK
K1Bhc3NSZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4gUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCgpCit7CisgICAgUmVmUHRy
PFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0OjpjcmVhdGUodGhpcyk7CisgICAgbV9wZW5kaW5nUmVxdWVzdCA9IHJlcXVl
c3Q7CisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworfQorCit2b2lkIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1p
c3Npb25EZWNpc2lvbihib29sIGFsbG93KQoreworICAgIGlmICghbV9wYWdlLT5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wZW5kaW5nUmVxdWVzdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihhbGxvdyksIG1fcGFnZS0+
cGFnZUlEKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMyZDEzOGUzZDM5N2NiNjU1MDAx
MTJhZGNmMGMzNjI5YjNlYWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVj
dHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gK
KyNkZWZpbmUgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFz
cyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBh
Z2VQcm94eSopOworCisgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdCgpOworCisgICAgUGFzc1Jl
ZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KCk7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFsbG93
KTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4g
bV9wZW5kaW5nUmVxdWVzdDsKKyAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCisKKyNlbmRpZiAvLyBQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNDFiYjMxNDg1OGUyY2VlNjE3NmVi
ZjY5ZGY0YWU2ZmE5OTY2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgorCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bh
c3NSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk+IFdlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkocGFnZSkpOworfQorCitXZWJQb2ludGVy
TG9ja01hbmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3dlYlZpZXcoMCkKKyAgICAsIG1f
aXNQb2ludGVyTG9ja2VkKGZhbHNlKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFn
ZS0+cHJvY2VzcygpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIHRo
aXMpOworfQorCitXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6fldlYlBvaW50ZXJMb2NrTWFu
YWdlclByb3h5KCkKK3sKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6c2V0
V2ViVmlldyhQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgbV93ZWJWaWV3ID0gd2Vi
VmlldzsKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6aXNQb2ludGVyTG9j
a2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1BvaW50ZXJMb2NrZWQ7Cit9CisKK3ZvaWQg
V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnJlcXVlc3RQb2ludGVyTG9jaygpCit7CisgICAg
aWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAgZGlkQWNxdWlyZVBvaW50
ZXJMb2NrKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnJlcXVlc3RQ
b2ludGVyVW5sb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlICYmIG1fcGFnZS0+aXNWYWxpZCgpKQor
ICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1MDc4OWFlZDRjMTBlNWFjOTVmNDYxMDI4ZmE3
ZGVjYTQzOTc2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHlfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eV9o
CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworY2xhc3MgUVF1aWNrV2ViVmlldzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3R5
cGVkZWYgUVF1aWNrV2ViVmlldyBQbGF0Zm9ybVdlYlZpZXc7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eT4sIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFu
YWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Kik7CisgICAgdmlydHVhbCB+V2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHkoKTsKKworICAgIHZvaWQgc2V0V2ViVmlldyhQbGF0Zm9ybVdlYlZp
ZXcqKTsKKworICAgIGJvb2wgaXNQb2ludGVyTG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
OworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisKKyAgICB2b2lkIHJlcXVlc3RQb2lu
dGVyTG9jaygpOworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKKworcHJvdGVjdGVk
OgorCisgICAgZXhwbGljaXQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5
Kik7CisKKyAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIG1f
d2ViVmlldzsKKyAgICBib29sIG1faXNQb2ludGVyTG9ja2VkOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFdlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5X2gKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxMGZkOWIzMDU4NThkNzYwNzA1MjMy
MTQ0YzJlNmI5MGE1N2I4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisjCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorbWVzc2FnZXMgLT4gV2ViUG9p
bnRlckxvY2tNYW5hZ2VyUHJveHkgeworICAgIFJlcXVlc3RQb2ludGVyTG9jaygpCisgICAgUmVx
dWVzdFBvaW50ZXJVbmxvY2soKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5Y2NlNzQwMGI5NmJj
ZmE3NmYzOWEzZWZkZjA0Njg3ZmM5YWVlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3h5LmNwcApAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBM
RyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9O
SUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKwor
I2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFy
eS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorCit1c2luZyBuYW1lc3BhY2UgV1RGOwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjb25zdCBjaGFy
KiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkK
K3sKKyAgICByZXR1cm4gIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSI7Cit9
CisKK1Bhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5PiBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250
ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclByb3h5KGNvbnRleHQpKTsKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4
dCogY29udGV4dCkKKyAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KGNvbnRleHQpCit7Cit9CisK
K3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJv
dmlkZXIoY29uc3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciAqcHJvdmlkZXIpCit7
CisgICAgbV9wcm92aWRlci5pbml0aWFsaXplKHByb3ZpZGVyKTsKKyAgICBtX3Byb3ZpZGVyLmFk
ZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIodGhpcyk7Cit9CisKK3ZvaWQgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBt
X3Byb3ZpZGVyLnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIodGhpcyk7Cit9CisK
K3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xv
c2UoV2ViUHJvY2Vzc1Byb3h5KikKK3sKKyAgICBtX3Byb3ZpZGVyLnJlbW92ZVBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXIodGhpcyk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2Jq
ZWN0OjpyZWYoKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJv
eHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6ZGVyZWYo
KTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnBvcHVs
YXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4mIHBl
cm1pc3Npb25zKQoreworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBrbm93blBlcm1p
c3Npb25zID0gbV9wcm92aWRlci5wb2ludGVyTG9ja1Blcm1pc3Npb25zKCk7CisKKyAgICBpZiAo
IWtub3duUGVybWlzc2lvbnMpCisgICAgICAgIHJldHVybjsKKworICAgIHBlcm1pc3Npb25zLmNs
ZWFyKCk7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBrbm93bk9yaWdpbnMgPSBrbm93blBl
cm1pc3Npb25zLT5rZXlzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrbm93bk9yaWdp
bnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYlN0cmluZyogb3JpZ2luID0ga25vd25Pcmln
aW5zLT5hdDxXZWJTdHJpbmc+KGkpOworICAgICAgICBwZXJtaXNzaW9ucy5zZXQob3JpZ2luLT5z
dHJpbmcoKSwga25vd25QZXJtaXNzaW9ucy0+Z2V0PFdlYkJvb2xlYW4+KG9yaWdpbi0+c3RyaW5n
KCkpLT52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5KGNvbnN0IFdl
YlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAoIWNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OkRpZFVwZGF0ZVBv
aW50ZXJMb2NrRGVjaXNpb24ob3JpZ2luLT50b1N0cmluZygpLCBhbGxvd2VkKSk7Cit9CisKK3Zv
aWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92
ZVBvaW50ZXJMb2NrUG9saWNpZXMoSW1tdXRhYmxlQXJyYXkqIG9yaWdpbnMpCit7CisgICAgaWYg
KCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBzaXplID0gb3JpZ2lu
cy0+c2l6ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9y
PFN0cmluZz4gb3JpZ2luU3RyaW5nczsKKyAgICBvcmlnaW5TdHJpbmdzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgb3JpZ2luU3RyaW5ncy5hcHBlbmQob3JpZ2lucy0+YXQ8V2ViU2VjdXJpdHlPcmln
aW4+KGkpLT50b1N0cmluZygpKTsKKworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpEaWRSZW1vdmVQb2lu
dGVyTG9ja0RlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWExZDVk
MjM1MmZlOTM1NWEzZmRlZWIzZTViZTA0YmEyODI0Y2RmNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxF
Q1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eV9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eV9oCisK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRh
YmxlQXJyYXk7CitjbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisK
K2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBUeXBl
ZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPiwg
cHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKworICAg
IHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXIqKTsKKworICAgIHZvaWQgcG9wdWxhdGVDb3B5T2ZQb2ludGVyTG9ja1Blcm1pc3Npb25z
KEhhc2hNYXA8U3RyaW5nLCBib29sPiYpOworCisgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZVBv
aW50ZXJMb2NrUG9saWN5KGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luKiwgYm9vbCk7CisgICAgdm9p
ZCBwcm92aWRlckRpZFJlbW92ZVBvaW50ZXJMb2NrUG9saWNpZXMoSW1tdXRhYmxlQXJyYXkqIG9y
aWdpbnMpOworCisgICAgdXNpbmcgQVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0
OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOworCisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1l
bnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKworICAg
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIG1fcHJvdmlkZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBPSU5URVJfTE9DSworCisjZW5kaWYgLy8g
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMzZjMDg0ZTI2NGMw
ODRmY2FiZmQ2MjlhOWNjNTIzYTRlZmE5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXIuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlci5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUg
IkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6YWRkUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UHJveHkqIG1hbmFnZXIpCit7CisgICAgaWYgKG1fY2xpZW50LmFkZFBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXIpCisgICAgICAgIG1fY2xpZW50LmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIodG9BUEkobWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdl
YlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpyZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSogbWFuYWdlcikK
K3sKKyAgICBpZiAobV9jbGllbnQucmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcikK
KyAgICAgICAgbV9jbGllbnQucmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcih0b0FQ
SShtYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnBvaW50ZXJM
b2NrUGVybWlzc2lvbnMoKQoreworICAgIGlmIChtX2NsaWVudC5wb2ludGVyTG9ja1Blcm1pc3Np
b25zKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LnBvaW50ZXJMb2Nr
UGVybWlzc2lvbnMobV9jbGllbnQuY2xpZW50SW5mbykpKTsKKworICAgIHJldHVybiBJbW11dGFi
bGVEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWVhNGY1NDRkN2M3NjU3NDA2ZTY2MTZlNmY0
OWU3ZGM5ZmZhZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvblByb3ZpZGVyX2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNs
dWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OworY2xh
c3MgV2ViU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUHJveHk7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIDogcHVi
bGljIEFQSUNsaWVudDxXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLCBrV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgdm9p
ZCBhZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eSopOworICAgIHZvaWQgcmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcihXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkqKTsKKyAgICBQYXNzUmVm
UHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCisKKyNlbmRp
ZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyUHJveHlRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFjZWEzZDQ5OTY3OGVj
ZDczNmNjNTk1YTgzYTU4MmRkODA5OTU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eVF0
LmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0
cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHkuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJXZWJDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworI2lmIEhB
VkUoUVRRVUlDSykKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxcXVp
Y2t3ZWJ2aWV3X3BfcC5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyNpZiBIQVZFKFFUUVVJQ0spCisgICAgaWYgKG1fd2Vi
VmlldykKKyAgICAgICAgZW1pdCBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5wb2ludGVyTG9j
a1JlcXVlc3RlZCgpOworI2VuZGlmCisKKyAgICBtX2lzUG9pbnRlckxvY2tlZCA9IHRydWU7Cisg
ICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6RGlkQWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIG1faXNQb2ludGVyTG9ja2VkID0gZmFsc2U7Cisg
ICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWRM
b3NlUG9pbnRlckxvY2soKQoreworI2lmIEhBVkUoUVRRVUlDSykKKyAgICBpZiAobV93ZWJWaWV3
KQorICAgICAgICBlbWl0IG1fd2ViVmlldy0+ZXhwZXJpbWVudGFsKCktPnBvaW50ZXJVbmxvY2tS
ZXF1ZXN0ZWQoKTsKKyNlbmRpZgorCisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKKyAg
ICBpZiAgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGRjOTgyNWFlNjc0ZWU2Nzk4ZDc2OWJhMzNhMzM2ZmIwOTE3YmUwYTEuLjBlOGU1MWU0MzNh
MGIxYjRiMTA2NjY5MzIwYWEwZTM0MjI3YTBlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTQ3LDEwICs0NywxMSBAQAogI2luY2x1ZGUgIldlYkljb25EYXRh
YmFzZS5oIgogI2luY2x1ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJNZW1vcnlT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCi0jaW5j
bHVkZSAiV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
LmgiCi0jaW5jbHVkZSAiV2ViTWVtb3J5U2FtcGxlci5oIgorI2luY2x1ZGUgIldlYlBsdWdpblNp
dGVEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKQEAgLTE3OSw2ICsxODAsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIFVTRShT
T1VQKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5PigpOworI2VuZGlmCiAKICAgICBjb250ZXh0
cygpLmFwcGVuZCh0aGlzKTsKIApAQCAtNTQ0LDYgKzU0OCwxMCBAQCBXZWJQcm9jZXNzUHJveHkq
IFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lv
bnMocGFyYW1ldGVycy5wb2ludGVyTG9ja1Blcm1pc3Npb25zKTsKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcyA9
IG1fdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGFmMjk4YjhkOTg0OTI5ZGY0YjA5ZDNlYzRhYWQ5OGJmMDE2
MjRlNmQuLjg1MjkxYzYyMWI0NDZmZDFjYjJmOWEzNWRlY2YzM2UyZDQ3MDk2MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03Miw2ICs3Miw4IEBACiAj
aW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUG9w
dXBNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtMjM5LDYgKzI0
MSw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQs
IFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFy
ZFVzZXJBZ2VudCgpKQogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cih0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIodGhp
cykKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcih0aGlzKQorI2VuZGlmCiAgICAgLCBtX2VzdGltYXRlZFByb2dyZXNz
KDApCiAgICAgLCBtX2lzSW5XaW5kb3cobV9wYWdlQ2xpZW50LT5pc1ZpZXdJbldpbmRvdygpKQog
ICAgICwgbV9pc1Zpc2libGUobV9wYWdlQ2xpZW50LT5pc1ZpZXdWaXNpYmxlKCkpCkBAIC0zMzEs
NiArMzM2LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNs
aWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAg
bV9wb2ludGVyTG9ja01hbmFnZXIgPSBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6Y3JlYXRl
KHRoaXMpOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJhdGlvbiA9
IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CiAjZW5kaWYKQEAgLTQ4Myw3ICs0OTEs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorICAgIG1fcG9pbnRlckxvY2tNYW5hZ2VyID0gV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHk6OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgogICAgIGluaXRpYWxpemVXZWJQYWdlKCk7CiAK
ICAgICBtX3BhZ2VDbGllbnQtPmRpZFJlbGF1bmNoUHJvY2VzcygpOwpAQCAtNTg3LDYgKzU5Nywx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgbV9ub3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aW52YWxpZGF0ZVJlcXVlc3QoKTsKKyNlbmRpZgorCiAgICAgbV90b29sVGlwID0gU3RyaW5nKCk7
CiAKICAgICBtX21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxzZTsKQEAgLTMw
NTEsNiArMzA2NSwxMyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6
OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKK1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OnBvaW50ZXJMb2Nr
TWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tNYW5hZ2VyLmdldCgpOworfQor
I2VuZGlmCisKIC8vIEJhY2tGb3J3YXJkTGlzdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKQEAgLTM4NzYsNiArMzg5NywxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAKICAgICBtX25v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsK
IAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdCgpOworI2VuZGlmCisKICAgICBtX3Rvb2xU
aXAgPSBTdHJpbmcoKTsKIAogICAgIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9
IGZhbHNlOwpAQCAtNDA4MSw2ICs0MTA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluCiAg
ICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZyk7Cisg
ICAgUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBtX3BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3QoKTsKKworICAgIGlm
ICghbV91aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
KHRoaXMsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHJlcXVlc3QtPmRl
bnkoKTsKK30KKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKwogdm9pZCBXZWJQYWdlUHJveHk6OnNo
b3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIHRpdGxlLCBib2R5
LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDlmM2ViZmJhZjNk
MWNjYmIxODc2NjhhNzEzZGFmNjNjZjY5MTRlYi4uYmNiYjZlZDZjM2RjMjZmYjA0ZjcyNmRjM2Q5
MzhhN2JjYmFiNzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgpAQCAt
MTQ2LDYgKzE0Nyw3IEBAIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2
ZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBh
Z2VHcm91cDsKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CkBA
IC0yNjMsNiArMjY1LDEwIEBAIHB1YmxpYzoKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
KiBmdWxsU2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KiBwb2ludGVyTG9ja01hbmFnZXIoKTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBpbml0aWFsaXpl
Q29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQqKTsKICNlbmRp
ZgpAQCAtODc5LDcgKzg4NSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcpOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrUGVybWlz
c2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZyk7CisjZW5kaWYKKwogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgp
OwpAQCAtMTA4OCw2ICsxMDk4LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk+IG1fZnVsbFNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5PiBt
X3BvaW50ZXJMb2NrTWFuYWdlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAg
ICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IG1fdmlicmF0aW9uOwogI2VuZGlmCkBAIC0xMTE2
LDYgKzExMzAsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogICAgIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjsKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBt
X25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorICAgIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9w
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKKyNlbmRpZiAvLyBQT0lOVEVSX0xP
Q0sKIAogICAgIGRvdWJsZSBtX2VzdGltYXRlZFByb2dyZXNzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0YmFkNTMyNTc1
NzFkYjRkOGU2ZTI1N2QxMDhkYzE0ZTdhNGI2ZTA0Li4zM2JiMDBiNWEwMTMzNjRkYjBjYWY2MDM1
OGEwMzdiM2I4OTBhMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyMSw2ICsyMjEsMTAgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIFdURjo6U3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCiAgICAgU2hvd05vdGlmaWNh
dGlvbihXVEY6OlN0cmluZyB0aXRsZSwgV1RGOjpTdHJpbmcgYm9keSwgV1RGOjpTdHJpbmcgaWNv
blVSTCwgV1RGOjpTdHJpbmcgdGFnLCBXVEY6OlN0cmluZyBsYW5nLCBXVEY6OlN0cmluZyBkaXIs
IFdURjo6U3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQog
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBSZXF1ZXN0UG9pbnRlckxvY2tQZXJtaXNz
aW9uKFdURjo6U3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCisjZW5kaWYKKwogICAgICMgU3BlbGxp
bmcgYW5kIGdyYW1tYXIgbWVzc2FnZXMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKSAg
CiAgICAgQ2hlY2tUZXh0T2ZQYXJhZ3JhcGgoV1RGOjpTdHJpbmcgdGV4dCwgdWludDY0X3QgY2hl
Y2tpbmdUeXBlcykgLT4gKFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3Vs
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAppbmRleCBhM2RjYzRj
ZTQ5YTM0OWZkZDEzZjdlNmFlMTc0MzM5Yjg0MzkwNWJkLi4wNzk4MzE2Yjg4ZmQ0YmZkYjk2NjFm
MTYxNDJkODY3NTUyMGZjMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYk51bWJlci5oIgpAQCAtMzUx
LDYgKzM1MiwxNSBAQCBib29sIFdlYlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZwogICAgIHJldHVybiB0cnVlOwog
fQogCitib29sIFdlYlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpCit7CisgICAg
aWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0
b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJldHVy
biB0cnVlOworfQorCiBmbG9hdCBXZWJVSUNsaWVudDo6aGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5oZWFk
ZXJIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCmluZGV4IDQ3YTFm
YTY4NWMyYzU4MzQyMWRlMDg1ZDExYWU3MjMxYWRjZjFkMjEuLjFmMTU4ZjYxZDA4NmVjOTE5MmM4
ZTUxNmJkYTkwYjUxNmNmZDU3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJXaGVl
bEV2ZW50OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclByb3h5OwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0xMDIs
NiArMTAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eSopOwogICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViU2VjdXJp
dHlPcmlnaW4qLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqKTsKICAgICBib29s
IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqKTsK
KyAgICBib29sIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QoV2Vi
UGFnZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0Kik7CiAKICAgICAvLyBQcmludGluZy4KICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViUGFn
ZVByb3h5KiwgV2ViRnJhbWVQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXREaWFsb2dSdW5uZXIuaAppbmRleCBiNzAwNDQwNzY4MzRlMjllM2JhNTkzZjc5YzUwMzAzODlk
ZjU5OTU2Li5hM2IwNGExY2NhZGZjZWNhNWYzZTRiMjU1OWM3ZTBlZGU5N2I1ZjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaApAQCAtNTAsNyArNTAs
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0Rm9yUHJveHlBdXRoZW50aWNhdGlvbihjb25zdCBR
U3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgUVN0cmluZyYgcHJlZmlsbGVk
VXNlcm5hbWUpOwogICAgIGJvb2wgaW5pdEZvckZpbGVQaWNrZXIoY29uc3QgUVN0cmluZ0xpc3Qm
IHNlbGVjdGVkRmlsZXMsIGJvb2wgYWxsb3dNdWx0aXBsZSk7CiAgICAgYm9vbCBpbml0Rm9yRGF0
YWJhc2VRdW90YURpYWxvZyhjb25zdCBRU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFFTdHJp
bmcmIGRpc3BsYXlOYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBxdWludDY0IGN1cnJlbnRRdW90
YSwgcXVpbnQ2NCBjdXJyZW50T3JpZ2luVXNhZ2UsIHF1aW50NjQgY3VycmVudERhdGFiYXNlVXNh
Z2UsIHF1aW50NjQgZXhwZWN0ZWRVc2FnZSk7Ci0KICAgICB2b2lkIHJ1bigpOwogCiAgICAgUVF1
aWNrSXRlbSogZGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9kaWFsb2cuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCmluZGV4
IGFmODg0MjNjNmRhMGVkNGQ5YWM1M2VlODNjYTA2YzQwNzM4YmQ4NzguLmIyM2U1MjZkNWU3OTg3
NzlhYjY2NDc1ODYyYzRjNDlmMjliMmQ5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcApAQCAtNDksNiArNDksNyBAQCBRdFdlYlBh
Z2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dl
YlZpZXcqIHdlYlZpZXcpCiAgICAgdWlDbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhID0gZXhj
ZWVkZWREYXRhYmFzZVF1b3RhOwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0OwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0ID0gcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgdWlD
bGllbnQuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCA9IHBvbGlj
eUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CiAKQEAgLTE3Myw1ICsxNzQsMTMgQEAgdm9pZCBR
dFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V0tQYWdlUmVmIHBhZ2UsIFcKICAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5w
ZXJtaXNzaW9uUmVxdWVzdChyZXEpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKK3ZvaWQg
UXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Qo
V0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKIAorICAgIFFXZWJQZXJtaXNzaW9u
UmVxdWVzdCogcmVxID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUob3JpZ2luLCByZXF1
ZXN0KTsKKyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5wZXJtaXNzaW9uUmVx
dWVzdChyZXEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKaW5kZXggZThhYWE4MjZiN2RkNjBh
NjgxYmQ3NDhlZDMxNmJmMjZlMGRkOTA2OC4uODRhNDM5ZDE3MDk5MWE0MjMwMmU4OTI5MzJlNDNl
OTM0MTY1ZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWdu
ZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdS
ZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVk
IGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVm
LCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgdm9pZCBwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VS
ZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RS
ZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAKICAgICBRUXVpY2tXZWJW
aWV3KiBtX3dlYlZpZXc7CiAgICAgUVVybCBtX2xhc3RIb3ZlcmVkVVJMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQpp
bmRleCBjZjFkNTQ5ZGRhMjE4ZWU5YWYwZjQ1NjZlNDMyYTg2Y2FlYjg4ZjI1Li5iNjA5ZTE4ZmUw
MjMxYjAyZmZjMWE5OTFiODczYTliMTViMmIzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQpAQCAtMzksNiAr
MzksNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvcXQgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvTGF1bmNoZXIgXAog
ICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCisgICAgJCRTT1VSQ0Vf
RElSL1VJUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9Q
bHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQkU09V
UkNFX0RJUi9VSVByb2Nlc3MvcXQgXApAQCAtNTksNiArNjAsNyBAQCBJTkNMVURFUEFUSCArPSBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZSBcCisgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvUG9pbnRlckxv
Y2sgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUgXAogICAgICQk
U09VUkNFX0RJUi9XZWJQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2
NDQ0M2Y1NzdiYzcwZGJkYzg3YzZlMWYyNWJjNTBhZTAzYjY3OTk1Li4yOTEwMTIyZmIwYjAzNzVm
OGM2ZWU0ODU0Y2VlNzQzY2M0NzUxMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQ
b2ludGVyTG9ja01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIldlYlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgpAQCAtNDkxLDMg
KzQ5Miw1NiBAQCBib29sIFdLQnVuZGxlUGFnZUNhblNob3dNSU1FVHlwZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgbWltZVR5cGVSZQogewogICAgIHJldHVybiB0b0ltcGwo
cGFnZVJlZiktPmNhblNob3dNSU1FVHlwZSh0b1dURlN0cmluZyhtaW1lVHlwZVJlZikpOwogfQor
Cit2b2lkIFdLQnVuZGxlUGFnZVNldFBvaW50ZXJMb2NrQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCogd2tDbGllbnQpCit7CisjaWYg
ZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9MT0NLCisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVu
dCh3a0NsaWVudCk7CisjZW5kaWYKK30KKworYm9vbCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQ
b2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyNpZiBkZWZpbmVkKEVOQUJM
RV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9pbnRlckxvY2so
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQ
YWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sK
KyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sK
KyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRS
ZXF1ZXN0UG9pbnRlclVubG9jaygpOworI2VuZGlmCit9CisKK2Jvb2wgV0tCdW5kbGVQYWdlSXNQ
b2ludGVyTG9ja2VkKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHJldHVybiB0b0lt
cGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1BvaW50ZXJMb2NrZWQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlk
QWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmlu
ZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1w
bChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZEFjcXVpcmVQb2ludGVyTG9jaygp
OworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRl
ckxvY2tNYW5hZ2VyKCktPmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCit9CisK
K3ZvaWQgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5U
RVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZExv
c2VQb2ludGVyTG9jaygpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRl
eCA2N2UzYWJiNWVmZjA3MjI3Njc5ZDRiYWEwM2MyNTBiZDFlMjE4NzU1Li4xYmMwMTZjNjA1ODhh
OWZhOGNhOGU1YWE2NTllMzBlMTZjMmE4ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
QEAgLTM5MSw2ICszOTEsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50OwogCiBlbnVtIHsga1dLQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnRDdXJyZW50VmVyc2lvbiA9IDEgfTsKIAordHlwZWRlZiBib29s
ICgqV0tCdW5kbGVQYWdlU3VwcG9ydHNQb2ludGVyTG9jaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlUmVxdWVzdFBvaW50ZXJMb2NrKShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZXF1ZXN0UG9pbnRl
clVubG9jaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworCitzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9p
bnRlckxvY2tDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lk
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudEluZm87CisKKyAgICAvLyBWZXJzaW9uIDA6CisgICAgV0tCdW5kbGVQYWdlU3VwcG9y
dHNQb2ludGVyTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0
c1BvaW50ZXJMb2NrOworICAgIFdLQnVuZGxlUGFnZVJlcXVlc3RQb2ludGVyTG9jayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrOworICAgIFdL
QnVuZGxlUGFnZVJlcXVlc3RQb2ludGVyVW5sb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2s7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tCdW5k
bGVQYWdlUG9pbnRlckxvY2tDbGllbnQgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ7CisK
K2VudW0geyBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAg
fTsKKwogLy8gTWVzc2FnZVRyYWNlIGNsaWVudAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlc2NyaXB0aW9uLCBXS1N0cmluZ1JlZiBzdWNjZXNz
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApAQCAtNDE5LDYgKzQzNiw3IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVQYWdlUG9sCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIGNsaWVudCk7CiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KiBjbGllbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9pbnRlckxvY2tDbGllbnQoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50KiBjbGllbnQpOwogCiBX
S19FWFBPUlQgV0tCdW5kbGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxl
UGFnZUdldE1haW5GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CkBAIC00NTcsNiArNDc1LDEz
IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLTGF5CiAKIFdLX0VYUE9SVCBXS0J1bmRsZUluc3BlY3Rv
clJlZiBXS0J1bmRsZVBhZ2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitX
S19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQ
b2ludGVyVW5sb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCBib29sIFdLQnVu
ZGxlUGFnZUlzUG9pbnRlckxvY2tlZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURpZExv
c2VQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDNjNDAwYzFhZTM3OGU0ZDE4
ZTEzYzg5NjI0OTU4ZDM1NGM4NTU5ZDAuLmM1ZmZhMmE2ZWVlOGJmMjY1ZWY0ZGMzZmU5NWY4ODU0
MjY2N2VlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxheWVy
VHJlZUhvc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBAIC02NDQsNiArNjQ1LDI2IEBA
IFBhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZVdlYkRhdGFGcm9tVWlu
dDhBcnJheShKU0NvbnRleHRSZWYgY29uCiAgICAgcmV0dXJuIFdlYkRhdGE6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYXJyYXlEYXRhLT5iYXNlQWRkcmVzcygpKSwgYXJyYXlE
YXRhLT5ieXRlTGVuZ3RoKCkpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQb2ludGVy
TG9ja1Blcm1pc3Npb24oV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IGJvb2wgYWxsb3dlZCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHBhZ2UtPnBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnNldFBlcm1pc3Npb25MZXZlbEZv
clRlc3Rpbmcob3JpZ2luU3RyaW5nLCBhbGxvd2VkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShvcmlnaW5TdHJpbmcpOworICAgIFVOVVNFRF9QQVJB
TShhbGxvd2VkKTsKKyNlbmRpZgorfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxQ
b2ludGVyTG9ja1Blcm1pc3Npb25zKFdlYlBhZ2UqIHBhZ2UpCit7CisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyAgICBwYWdlLT5wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
LT5yZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOworI2VuZGlmCit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5
Y2xlc1Rocm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCiB7CiAgICAg
cGFnZS0+Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM3ZDQxYzJkMjIxOGNjNTdjODc5MDM1YzQwMmVlZjQ0
OWUyNjE3MmIuLjFmMzFmMmJhYjNhMzBkMmY5YzdlNmFkOTk2ZjI5ZDk4NDg1OGNmOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7CiAgICAgdWludDY0X3Qg
d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICBQYXNzUmVm
UHRyPFdlYkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tQZXJtaXNzaW9uKFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2b2lkIHJlbW92ZUFsbFBvaW50ZXJMb2NrUGVybWlz
c2lvbnMoV2ViUGFnZSopOwogCiAgICAgLy8gVXNlckNvbnRlbnQgQVBJCiAgICAgdm9pZCBhZGRV
c2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCos
IGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkq
IHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlw
dEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMWJmZjljZDJhZDgxYTIyODg1MzIyY2VkMTljYzljYmJkYjhkM2I5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5jcHAKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIK
KyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxv
Y2tDbGllbnQ6OnN1cHBvcnRzUG9pbnRlckxvY2soV2ViUGFnZSAqcGFnZSkKK3sKKyAgICBpZiAo
bV9jbGllbnQucmVxdWVzdFBvaW50ZXJMb2NrKQorICAgICAgICByZXR1cm4gbV9jbGllbnQuc3Vw
cG9ydHNQb2ludGVyTG9jayh0b0FQSShwYWdlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9j
ayhXZWJQYWdlICpwYWdlKQoreworICAgIGlmIChtX2NsaWVudC5yZXF1ZXN0UG9pbnRlckxvY2sp
CisgICAgICAgIHJldHVybiBtX2NsaWVudC5yZXF1ZXN0UG9pbnRlckxvY2sodG9BUEkocGFnZSkp
OworICAgIHJldHVybiBwYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9p
bnRlckxvY2soKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVu
dDo6cmVxdWVzdFBvaW50ZXJVbmxvY2soV2ViUGFnZSAqcGFnZSkKK3sKKyAgICBpZiAobV9jbGll
bnQucmVxdWVzdFBvaW50ZXJVbmxvY2spCisgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQb2ludGVy
VW5sb2NrKHRvQVBJKHBhZ2UpKTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2UtPnBvaW50ZXJMb2Nr
TWFuYWdlcigpLT5zdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMxNGUyM2YxNDMyMzkxNDkwOGQxMzVjYmUxNGI3OGU4MzYwMjdkMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZVBhZ2VQ
b2ludGVyTG9ja0NsaWVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2Nr
Q2xpZW50X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJBUElDbGll
bnQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVs
ZW1lbnQ7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQgOiBw
dWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LCBrV0tCdW5kbGVQ
YWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIGJvb2wg
c3VwcG9ydHNQb2ludGVyTG9jayhXZWJQYWdlKik7CisgICAgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soV2ViUGFnZSopOworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soV2ViUGFnZSopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYTRlOWE4YTZmODYzNTVkODA2MTFjNmU4OTAwY2RkNzJjZDY1MjQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExH
IEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlci5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcj4gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFnZSkpOworfQorCitQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitib29sIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gY2Fs
bGJhY2spCit7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE9ubHkgb25lIHJlcXVlc3QgY2FuIGJlIHByb2Nlc3NlZCBmb3IgdGhlIHdlYnBhZ2Ugc2Ft
ZSB0aW1lCisgICAgQVNTRVJUKG1fc2VjdXJpdHlPcmlnaW4pOworICAgIGlmIChtX3NlY3VyaXR5
T3JpZ2luKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NlY3VyaXR5T3JpZ2luID0g
b3JpZ2luOworICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICByZXR1cm4gbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQb2ludGVyTG9ja1Blcm1pc3Npb24o
b3JpZ2luLT50b1N0cmluZygpKSk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoU2VjdXJpdHlPcmlnaW4qKQoreworICAgIG1fc2Vj
dXJpdHlPcmlnaW4uY2xlYXIoKTsKKyAgICBtX2NhbGxiYWNrLmNsZWFyKCk7Cit9CisKK1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb24gUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OnBlcm1pc3Npb25MZXZlbChTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4pCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+cG9saWN5Rm9yT3JpZ2luKHNlY3Vy
aXR5T3JpZ2luKTsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6c2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgYm9vbCBhbGxvd2VkKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+ZGlkVXBkYXRlUG9pbnRlckxvY2tE
ZWNpc2lvbihvcmlnaW5TdHJpbmcsIGFsbG93ZWQpOworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQor
eworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcj4oKS0+cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCk7Cit9CisK
K3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVQb2lu
dGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgaWYgKG1fc2Vj
dXJpdHlPcmlnaW4pIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxlbWVudDxX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPigpLT5kaWRVcGRhdGVQb2ludGVyTG9ja0Rl
Y2lzaW9uKG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCksIGFsbG93ZWQpOworICAgICAgICBp
ZiAobV9jYWxsYmFjaykKKyAgICAgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KGFsbG93
ZWQpOworICAgIH0KKworICAgIG1fc2VjdXJpdHlPcmlnaW4uY2xlYXIoKTsKKyAgICBtX2NhbGxi
YWNrLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ4NGZmNDcyYjRhYjI3YmU5NGRjNDg5NWUx
MDRhYjNlZjFkZTI2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKyNkZWZpbmUgUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBQb2ludGVyTG9j
a1Blcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrUGVybWlz
c2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UG9pbnRlckxvY2tQZXJtaXNz
aW9uQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChib29sIHBl
cm1pc3Npb24pID0gMDsKK307CisKK2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIGJvb2wgc3RhcnRS
ZXF1ZXN0KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjaz4pOworICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiopOworCisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVy
bWlzc2lvbiBwZXJtaXNzaW9uTGV2ZWwoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKworICAg
IC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuCisgICAgdm9pZCBzZXRQZXJtaXNzaW9uTGV2
ZWxGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZvaWQgcmVtb3ZlQWxsUGVy
bWlzc2lvbnNGb3JUZXN0aW5nKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2ludGVyTG9ja1Bl
cm1pc3Npb25EZWNpc2lvbihib29sKTsKKworcHJpdmF0ZToKKyAgICBQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlKik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0cjxQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBXZWJQYWdlKiBtX3BhZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisK
KyNlbmRpZiAvLyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIzMWZlMjhmZGNiOTBjNTc3NDg5OWJl
ZTZmN2E4MWNkMjJkYjNkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEz
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVyTG9j
a0NvbnRyb2xsZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlcj4gV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlBvaW50ZXJMb2NrTWFuYWdlcihwYWdlKSk7Cit9CisKK1dlYlBvaW50ZXJMb2NrTWFu
YWdlcjo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2Uo
cGFnZSkKKyAgICAsIG1fcG9pbnRlckxvY2tlZChmYWxzZSkKK3sKK30KKworV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyKCkKK3sKK30KKworYm9vbCBXZWJQb2lu
dGVyTG9ja01hbmFnZXI6OnN1cHBvcnRzUG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2Up
CisgICAgICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQo
KS5zdXBwb3J0c1BvaW50ZXJMb2NrKG1fcGFnZS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpyZXF1ZXN0UG9pbnRlckxvY2soKQorewor
ICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlUG9p
bnRlckxvY2tDbGllbnQoKS5yZXF1ZXN0UG9pbnRlckxvY2sobV9wYWdlLmdldCgpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpyZXF1ZXN0UG9p
bnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KCkucmVxdWVzdFBvaW50ZXJVbmxvY2sobV9wYWdlLmdl
dCgpKTsKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmlzUG9pbnRlckxvY2tlZCgp
Cit7CisgICAgcmV0dXJuIG1fcGFnZSAmJiBtX3BhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJMb2Nr
Q29udHJvbGxlcigpLT5lbGVtZW50KCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZEFjcXVpcmVQb2lu
dGVyTG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZExvc2VQb2ludGVyTG9jaygp
Cit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVy
TG9ja0NvbnRyb2xsZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9CisKK2Jvb2wgV2ViUG9p
bnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1f
cGFnZSkKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHk6OlJlcXVlc3RQb2ludGVyTG9jaygpKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2ludGVyVW5s
b2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpSZXF1ZXN0UG9pbnRlclVubG9jaygpKTsKK30K
Kwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIGRpZFJlY2VpdmVXZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworfQorCitXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpzZWN1cml0eU9yaWdpbigpCit7CisgICAgaWYgKG1fcGFnZSkgeworICAgICAg
ICBXZWJDb3JlOjpFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5w
b2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+dGFyZ2V0KCk7CisgICAgICAgIGlmICh0YXJnZXRFbGVt
ZW50KQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldEVsZW1lbnQtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZDYzYjhiNjdiZjA2NDNlMWVlYzY4MzFhYjdhNDNhMWI2NGJj
MjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJP
TklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrTWFuYWdl
cl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIE1lc3NhZ2VEZWNvZGVyOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViUG9p
bnRlckxvY2tNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
PiBjcmVhdGUoV2ViUGFnZSopOworICAgIHZpcnR1YWwgfldlYlBvaW50ZXJMb2NrTWFuYWdlcigp
OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIGJvb2wgc3VwcG9ydHNQb2ludGVyTG9jaygp
OworCisgICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCk7CisgICAgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKTsKKworICAgIHZvaWQgZGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworCisgICAgYm9vbCBzdGFydFJlcXVl
c3RQb2ludGVyTG9jaygpOworICAgIHZvaWQgc3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jaygpOwor
CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCk7CisKK3Byb3Rl
Y3RlZDoKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIoV2ViUGFnZSopOworCisgICAgdm9pZCBk
aWRSZWNlaXZlV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIFJlZlB0cjxXZWJQYWdlPiBtX3Bh
Z2U7CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2lu
dGVyTG9ja01hbmFnZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5MDU1MmMwYjE5ZmJmODg4YTIzMDM1MmVhMjMwY2Y1MjQ4ZWE4
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisj
CisjIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUExH
IEVMRUNUUk9OSUNTUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyMKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCittZXNzYWdlcyAtPiBXZWJQ
b2ludGVyTG9ja01hbmFnZXIgTGVnYWN5UmVjZWl2ZXIgeworICAgIERpZEFjcXVpcmVQb2ludGVy
TG9jaygpCisgICAgRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKKyAgICBEaWRMb3NlUG9pbnRl
ckxvY2soKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
Q2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNWYwYzM1N2FkOWQzNDgwZTlhNzA3ZWRiZjBjYzMx
ODM1YmZhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsx
LDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaCIK
KworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01h
bmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uQ2FsbGJhY2s+IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpj
cmVhdGUoV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sobWFuYWdlcikpOworfQor
CitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjazo6V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uQ2FsbGJhY2soV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIDogbV9tYW5h
Z2VyKG1hbmFnZXIpCit7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJh
Y2s6OmhhbmRsZUV2ZW50KGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAoYWxsb3dlZCkKKyAgICAg
ICAgbV9tYW5hZ2VyLT5yZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bWFuYWdlci0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTZhNWUzZDQwMGY0
NzhmN2RmZGVjYjc5NmE0NjVkNmRmYjNhMDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxs
YmFjay5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2tfaAorI2RlZmlu
ZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFja19oCisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb2ludGVyTG9ja01hbmFnZXI7CisKK2Ns
YXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFBvaW50ZXJMb2Nr
UGVybWlzc2lvbkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKFdlYlBvaW50ZXJMb2NrTWFuYWdl
ciopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChib29sKSBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayhXZWJQb2ludGVyTG9j
a01hbmFnZXIqKTsKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIqIG1fbWFuYWdlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykK
KworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNDQ5
ZGY1MGFhYzlhNDk4MDllZmFhZTMwZWQyNzg5NTk5NTkyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVD
VFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGNoYXIq
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAg
ICByZXR1cm4gIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIiOworfQorCitXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KFdlYlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKwor
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6fldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwID0gcGFyYW1ldGVycy5wb2ludGVyTG9ja1Blcm1p
c3Npb25zOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OmRpZFVw
ZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wg
YWxsb3dlZCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwLnNldChvcmlnaW5TdHJpbmcsIGFsbG93
ZWQpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OmRpZFJlbW92
ZVBvaW50ZXJMb2NrRGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdz
KQoreworICAgIHNpemVfdCBjb3VudCA9IG9yaWdpblN0cmluZ3Muc2l6ZSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgbV9wZXJtaXNzaW9uc01hcC5y
ZW1vdmUob3JpZ2luU3RyaW5nc1tpXSk7Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXI6OlBlcm1pc3Npb24gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cG9saWN5
Rm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luICpvcmlnaW4pIGNvbnN0Cit7CisgICAg
aWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uTm90QWxsb3dlZDsKKworICAg
IEFTU0VSVCghb3JpZ2luLT5pc1VuaXF1ZSgpKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBib29s
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Blcm1pc3Npb25zTWFwLmZpbmQob3JpZ2luLT50b1Jh
d1N0cmluZygpKTsKKyAgICBpZiAoaXQgIT0gbV9wZXJtaXNzaW9uc01hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGl0LT52YWx1ZSA/IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBl
cm1pc3Npb25BbGxvd2VkIDogV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlz
c2lvbkRlbmllZDsKKyAgICByZXR1cm4gUGVybWlzc2lvbk5vdEFsbG93ZWQ7Cit9CisKK3ZvaWQg
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JU
ZXN0aW5nKCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9j
ay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U5YzhlYWU3
Zjg1Y2JmNzQxMWM4NTk4OTY0NjA0ZDUzM2E2NGQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcg
RWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklD
UyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisjZGVm
aW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaAorCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik7CitwdWJsaWM6CisgICAgZW51bSBQZXJt
aXNzaW9uIHsKKyAgICAgICAgUGVybWlzc2lvbkFsbG93ZWQsCisgICAgICAgIFBlcm1pc3Npb25O
b3RBbGxvd2VkLAorICAgICAgICBQZXJtaXNzaW9uRGVuaWVkCisgICAgfTsKKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgZXhwbGljaXQgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAgdmlydHVhbCB+V2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRVcGRhdGVQb2ludGVy
TG9ja0RlY2lzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwor
ICAgIFBlcm1pc3Npb24gcG9saWN5Rm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKikg
Y29uc3Q7CisKKyAgICB2b2lkIHJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZygpOworCitw
cml2YXRlOgorICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIE9WRVJSSURFOwor
CisgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIE9WRVJSSURFOworCisgICAgdm9pZCBkaWRSZW1vdmVQb2ludGVyTG9ja0RlY2lzaW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7CisKKyAgICBXZWJQcm9jZXNzKiBt
X3Byb2Nlc3M7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fcGVybWlzc2lvbnNNYXA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZjVjM2Y0OTg2N2FlMGYwYjg0ZGE5Y2MyMjkyNzhhNzlmMzBmYTMxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9X
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAg
QEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisjCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorbWVzc2FnZXMg
LT4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciB7CisgICAgRGlkVXBkYXRlUG9pbnRl
ckxvY2tEZWNpc2lvbihXVEY6OlN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7Cisg
ICAgRGlkUmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMoVmVjdG9yPFdURjo6U3RyaW5nPiBvcmln
aW5TdHJpbmdzKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGZhZDNh
MTZmMDA1YjQxNDRlOWM4MzE0ZDA4NTFmMmZiNWIzOGZlZTEuLmMyZmM2NjVmZjdhNmQ5MjI5MTRk
NjZlOGFlY2M3ODMyNGI1YzdjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTQyLDYgKzQzLDggQEAK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9p
bnRlckxvY2tNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNzgzLDYgKzc4NiwzOSBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFu
Z2UoY29uc3QgVmlld3BvcnRBcmd1bWVudAogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jaygpCit7Cisg
ICAgaWYgKCFtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zdXBwb3J0c1BvaW50ZXJMb2Nr
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiA9IG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnNlY3VyaXR5
T3JpZ2luKCk7CisgICAgc3dpdGNoIChtX3BhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKCktPnBlcm1pc3Npb25MZXZlbChzZWN1cml0eU9yaWdpbikpIHsKKyAgICBjYXNl
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25BbGxvd2VkOgorICAg
ICAgICByZXR1cm4gbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+cmVxdWVzdFBvaW50ZXJM
b2NrKCk7CisgICAgY2FzZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNz
aW9uTm90QWxsb3dlZDogeworICAgICAgICBSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
Q2FsbGJhY2s+IGNhbGxiYWNrID0gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmNy
ZWF0ZShtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpKTsKKyAgICAgICAgcmV0dXJuIG1fcGFn
ZS0+cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0KHNl
Y3VyaXR5T3JpZ2luLCBjYWxsYmFjayk7CisgICAgfQorICAgIGNhc2UgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBtX3Bh
Z2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCiti
b29sIFdlYkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisjZW5kaWYK
Kwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJl
Y3QoY29uc3QgSW50UmVjdCYgc2Nyb2xsZXJUaHVtYikKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Tm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChz
Y3JvbGxlclRodW1iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAyNzI5NGIyNDQzYTc2MDhj
MDllNmM2NDZiMWQzYmU2NTFlYzE2ZWViLi5lOGNhMGQ0N2VhZDZlZWIwNmUwMDQzYmNlOGY2YTBj
NDE4NTMyODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwMyw2ICsyMDMsMTIgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6
OkVsZW1lbnQqKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICBib29sIHJlcXVlc3RQb2ludGVyTG9jaygpIE9WRVJSSURFOworICAgIHZvaWQgcmVxdWVz
dFBvaW50ZXJVbmxvY2soKSBPVkVSUklERTsKKyAgICBib29sIGlzUG9pbnRlckxvY2tlZCgpIE9W
RVJSSURFOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIG1h
a2VGaXJzdFJlc3BvbmRlcigpIE9WRVJSSURFOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTkwZjk5YzNhYWU2YWJiMDU2OTU4
NGJmZDlhNGJmN2FjMGQ2ZDVkMy4uZTM2ZWI1MmJhZTQ1ZDllN2ZhYzFiYzc3MmNmMTUyZmIzZTIy
YTk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAi
UGx1Z2luUHJveHkuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
QEAgLTc2LDYgKzc3LDggQEAKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBsdWdJbkNsaWVudC5oIgor
I2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJM
b2NrTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTEx
MSw2ICsxMTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1
bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlckxvY2tDb250cm9sbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JhbmdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgpAQCAtNDA2LDYgKzQxMCw5IEBAIFdl
YlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCB0aGlzKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsIHRoaXMpOworI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgd2ViUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC00MzcsNyArNDQ0LDkgQEAgV2Vi
UGFnZTo6fldlYlBhZ2UoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICNlbmRpZgotCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisjZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAgICAgd2Vi
UGFnZUNvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKQEAgLTUxNyw2ICs1MjYsMTMgQEAgdm9p
ZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dChXS0J1bmRsZVBhZ2VEaWFnbm8KICAgICBtX2xvZ0RpYWdub3N0aWNNZXNzYWdlQ2xpZW50Lmlu
aXRpYWxpemUoY2xpZW50KTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lkIFdl
YlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KFdLQnVuZGxl
UGFnZVBvaW50ZXJMb2NrQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9wb2ludGVyTG9ja0NsaWVu
dC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogUGFzc1JlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJG
cmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBQbHVn
aW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFN0cmluZyYgbmV3TUlNRVR5cGUpCiB7CkBAIC04
MTMsNiArODI5LDkgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSAwOwogI2VuZGlmCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICBtX3BvaW50ZXJMb2NrTWFuYWdlciA9IDA7CisjZW5kaWYKIAog
ICAgIGlmIChtX2FjdGl2ZVBvcHVwTWVudSkgewogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+
ZGlzY29ubmVjdEZyb21QYWdlKCk7CkBAIC0xNTQ4LDYgKzE1NjcsMjcgQEAgc3RhdGljIGJvb2wg
aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdl
KiBwYWdlLCBib28KIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQg
PSBwbGF0Zm9ybShtb3VzZUV2ZW50KTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAg
aWYgKHBhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1BvaW50ZXJMb2NrZWQoKSkgeworICAg
ICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAgICAgICBzd2l0Y2ggKG1vdXNlRXZlbnQu
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TW91c2VEb3duOgorICAgICAg
ICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TW91c2VVcDoKKyAgICAgICAg
ICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgICAg
ICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIHBhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVu
dFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIHN3aXRj
aCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZDogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjQ4OSw2
ICsyNTI5LDIyIEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjpmdWxsU2NyZWVuTWFu
YWdlcigpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitXZWJQb2ludGVy
TG9ja01hbmFnZXIqIFdlYlBhZ2U6OnBvaW50ZXJMb2NrTWFuYWdlcigpCit7CisgICAgaWYgKCFt
X3BvaW50ZXJMb2NrTWFuYWdlcikKKyAgICAgICAgbV9wb2ludGVyTG9ja01hbmFnZXIgPSBXZWJQ
b2ludGVyTG9ja01hbmFnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9wb2ludGVyTG9j
a01hbmFnZXIuZ2V0KCk7Cit9CisKK1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KiBXZWJQYWdlOjpwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCit7CisgICAg
aWYgKCFtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQorICAgICAgICBtX3Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9wb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5nZXQoKTsKK30KKyNlbmRpZgorCiBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcigpCiB7CiAgICAgaWYgKG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKQpAQCAtMjgwNiw2ICsyODYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwK
ICAgICBub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+ZGlkUmVjZWl2ZU5v
dGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbihub3RpZmljYXRpb25JRCwgYWxsb3dlZCk7CiB9
CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9p
bnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvd2VkKQoreworICAgIHBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1p
c3Npb25EZWNpc2lvbihhbGxvd2VkKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwpAQCAtMzA1NSw2ICszMTE4LDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnCiAgICAg
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgcG9pbnRlckxvY2tNYW5hZ2VyKCktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKICAgICBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IGVlOThkMjg0Zjg1NmVkYmRjZWU1NmU1NDEyZTQ4MGU0Mjc5NjhjZjMuLjMzZjMx
NGJlYmM3NmNiNDQ4N2QyMTk1ZDE2MDVmMjRjY2QzN2MwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGll
bnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgpAQCAtMTMzLDYgKzEzNCw3IEBAIGNsYXNzIElu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOwogY2xhc3MgUGFnZU92ZXJsYXk7CiBjbGFzcyBQbHVnaW5WaWV3Owor
Y2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiBjbGFzcyBTZXNzaW9u
U3RhdGU7CiBjbGFzcyBXZWJDb2xvckNob29zZXI7CiBjbGFzcyBXZWJDb250ZXh0TWVudTsKQEAg
LTE0OCw2ICsxNTAsNyBAQCBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0
aW9uQ2xpZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CiBjbGFzcyBXZWJQ
YWdlR3JvdXBQcm94eTsKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjsKIGNsYXNzIFdlYlBv
cHVwTWVudTsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsK
QEAgLTIwNSw2ICsyMDgsMTEgQEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKiBm
dWxsU2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlciogcG9pbnRlckxvY2tNYW5hZ2VyKCk7CisgICAgUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIHBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCk7CisjZW5kaWYKKwogICAgIC8vIC0tIENhbGxlZCBieSB0aGUgRHJhd2lu
Z0FyZWEuCiAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGdlbmVyaWNpemUgdGhlc2UgaW50byBhIERy
YXdpbmdBcmVhIGNsaWVudCBpbnRlcmZhY2UuIFdvdWxkIHRoYXQgYmUgYmVuZWZpY2lhbD8KICAg
ICB2b2lkIGRyYXdSZWN0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKQEAgLTI2MSw2ICsyNjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQqKTsKICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQqKTsK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVu
ZGxlUG9pbnRlckxvY2tDbGllbnQoV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQqKTsKKyNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQmIGluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKSB7IHJl
dHVybiBtX2NvbnRleHRNZW51Q2xpZW50OyB9CkBAIC0yNzUsNiArMjg2LDkgQEAgcHVibGljOgog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50JiBpbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKSB7IHJldHVybiBtX2Z1
bGxTY3JlZW5DbGllbnQ7IH0KICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAg
SW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQmIGluamVjdGVkQnVuZGxlUG9pbnRl
ckxvY2tDbGllbnQoKSB7IHJldHVybiBtX3BvaW50ZXJMb2NrQ2xpZW50OyB9CisjZW5kaWYKIAog
ICAgIHZvaWQgc2V0VW5kZXJsYXlQYWdlKFBhc3NSZWZQdHI8V2ViUGFnZT4gdW5kZXJsYXlQYWdl
KSB7IG1fdW5kZXJsYXlQYWdlID0gdW5kZXJsYXlQYWdlOyB9CiAKQEAgLTgwNiw2ICs4MjAsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25E
ZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKTsKIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCBkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNz
aW9uRGVjaXNpb24oYm9vbCBhbGxvd2VkKTsKKyNlbmRpZgorCiAgICAgdm9pZCBhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFu
Z2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwogI2lmIFVTRShBUFBLSVQpCkBA
IC05MzgsNiArOTU2LDkgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50IG1fZnVsbFNjcmVlbkNsaWVudDsKICNlbmRpZgogICAgIEluamVjdGVkQnVuZGxl
UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50IG1fbG9nRGlhZ25vc3RpY01lc3NhZ2VDbGllbnQ7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVy
TG9ja0NsaWVudCBtX3BvaW50ZXJMb2NrQ2xpZW50OworI2VuZGlmCiAKICAgICBGaW5kQ29udHJv
bGxlciBtX2ZpbmRDb250cm9sbGVyOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRG
T1JNKFFUKQpAQCAtOTUzLDYgKzk3NCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IG1fZnVsbFNjcmVlbk1h
bmFnZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFJlZlB0cjxXZWJQ
b2ludGVyTG9ja01hbmFnZXI+IG1fcG9pbnRlckxvY2tNYW5hZ2VyOworICAgIFJlZlB0cjxQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gbV9wb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZl
UG9wdXBNZW51OwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIFJlZlB0cjxXZWJDb250
ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzlmZDhjNGI2NTBlN2ZjZWJi
Yjc4YjU1NWMxYWY0NzIxMjA5NzdjZi4uOGMyM2YzNTU4N2I0OWVhNzRjMGYyNWMwYzIzZGE0MTNh
NjMwMDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxNCw2ICsyMTQsMTAgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBOb3RpZmljYXRpb24KICAgICBEaWRSZWNlaXZl
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBi
b29sIGFsbG93ZWQpCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIERpZFJlY2VpdmVQ
b2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFsbG93ZWQpCisjZW5kaWYKKwogICAg
IFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAK
ICAgICAjIFByaW50aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMjE4MTIyOTkxMmZjN2M4ZmMzMDkxMTY3NTY3MDFiMTIxZmIwNjFkMS4uOWY0NWQ0OGJl
N2ExMzBmNzhiNWY4NWZkYTU5OTg0ZjBiZjJiZmU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00OSw2ICs0OSw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCIKKyNl
bmRpZgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CkBAIC0yMDcsNiArMjEwLDkgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCiAgICAgYWRkU3VwcGxlbWVudDxDdXN0b21Qcm90b2NvbE1hbmFn
ZXI+KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGFkZFN1cHBsZW1l
bnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKTsKKyNlbmRpZgogfQogCiB2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Zjg3NDk5OWNhMGM2NDhhNmM4YTY3MmM0NDJhNmJl
ZjZjZmZjYWExLi5kMzRmMjhlZDFmNThhNzNmMTBiNDJmOTYzMjliOTU1OWYwMjVmNTNmIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjYgQEAKKzIwMTMtMDYtMTkgIFN0YW5pc2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3VsaWtA
bGdlLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2NrIElt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTc3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBhZGQgcG9pbnRlciBsb2NrIHBlcm1pc3Npb24gc3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVu
bmVyCisgICAgICAgIGFkZCBwb2ludGVyIGxvY2sgc3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVubmVy
CisgICAgICAgIHByb3ZpZGUgdXNhZ2Ugc2FtcGxlIGluIE1pbmlCcm93c2VyIChub3QgY2xpcCBh
bmQgbm90IGhpZGUgY3Vyc29yIG5vdykKKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlC
cm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6
bm90aWZ5KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWw6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpzdXBwb3J0c1BvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAg
IChJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaWRMb3NlUG9pbnRlckxvY2spOgor
ICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50
ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpo
YXNQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6Omhhc1BvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6aGFzUG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVh
dGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVz
ZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoVGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6Cisg
ICAgICAgIChXVFI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAo
V1RSOjpyZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6
cG9pbnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcik6CisgICAg
ICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwcm92aWRlcik6Cisg
ICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjphZGRQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAg
ICAgICAoV1RSOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cG9pbnRlckxvY2tQ
ZXJtaXNzaW9ucyk6CisgICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyOjpyZXNldCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcik6CisgICAgICAgICogcW1ha2UvbWtzcGVjcy9m
ZWF0dXJlcy9mZWF0dXJlcy5wcmk6CisKIDIwMTMtMDQtMjQgIFNlb2tqdSBLd29uICA8c2Vva2p1
Lmt3b25AZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBjaGVja2luZyBjaHJvbWl1bSBmcm9t
IHJ1bi13ZWJraXQtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlC
cm93c2VyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJB
cHBsaWNhdGlvbi5jcHAKaW5kZXggNmQ1YzZhNjMwMmM3N2ZhM2RmNDAwYjk3NWEzZDZjMjZhM2Vj
YTBlNi4uNDIxODhiZjRkYjk4MGI2NjIxZTM0ZWM2MWU5NjI3YzZmMTAyMTY3MCAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTE2Nywx
MiArMTY3LDIwIEBAIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFPYmplY3Qq
IHRhcmdldCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFFFdmVudDo6TW91c2VNb3ZlOgogICAgICAgICAgICAgaWYgKCFtb3VzZUV2ZW50LT5idXR0b25z
KCkpIHsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICAgICAgICAgIGlmIChtX2hv
bGRpbmdDb250cm9sICYmIG1fdG91Y2hQb2ludHMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBRR3VpQXBwbGljYXRpb246
Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBzd2FsbG93IHRoZSBldmVudCBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIGl0LAogICAgICAg
ICAgICAgICAgIC8vIHNpbmNlIHdlIGF2b2lkIHNlbmRpbmcgdGhlIG1vdXNlIHJlbGVhc2UgZXZl
bnRzIGFuZCBpZiB0aGUKICAgICAgICAgICAgICAgICAvLyBGbGlja2FibGUgaXMgdGhlIG1vdXNl
IGdyYWJiZXIgaXQgd291bGQgcmVjZWl2ZSB0aGUgZXZlbnQKICAgICAgICAgICAgICAgICAvLyBh
bmQgd291bGQgbW92ZSB0aGUgY29udGVudC4KICAgICAgICAgICAgICAgICBldmVudC0+YWNjZXB0
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHRvdWNoVHlwZSA9IFFFdmVudDo6VG91Y2hVcGRhdGU7CiAgICAgICAgICAg
ICB0b3VjaFBvaW50LnNldElkKG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggYjRiNWJjMDkyNjhjYmIzY2YzNDlj
MDhhMDZjN2MyYTk1ZGNjZWE2NS4uYWJjZDhhYzM0MTE1OTU3ZTBhNjE3NjNjMTQxMGUzNzllYmNl
MDc0MyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cu
cW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAt
NTY0LDYgKzU2NCwyMCBAQCBSZWN0YW5nbGUgewogICAgICAgICAgICAgV2luZG93LnNob3dOb3Jt
YWwoKTsKICAgICAgICAgICAgIG5hdmlnYXRpb25CYXIudmlzaWJsZSA9IHRydWU7CiAgICAgICAg
IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLm9uUGVybWlzc2lvblJlcXVlc3RlZCA6IHsKKyAgICAg
ICAgICAgIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IFBlcm1pc3Npb25SZXF1ZXN0LlBvaW50ZXJM
b2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLmFsbG93KQorICAgICAgICAg
ICAgICAgICAgICBwZXJtaXNzaW9uLmFsbG93ID0gdHJ1ZQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5vblBvaW50ZXJMb2NrUmVxdWVzdGVkIDogeworICAg
ICAgICB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5vblBvaW50ZXJVbmxvY2tSZXF1ZXN0ZWQgOiB7
CisgICAgICAgIH0KKyAgICAgICAgS2V5cy5vbkVzY2FwZVByZXNzZWQ6IHsKKyAgICAgICAgICAg
IGlmICh3ZWJWaWV3LmV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkKQorICAgICAgICAgICAgICAg
ZXhwZXJpbWVudGFsLnVubG9ja1BvaW50ZXIoKQorICAgICAgICB9CiAgICAgfQogCiAgICAgU2Ny
b2xsSW5kaWNhdG9yIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDhiMWMxMTMyNjY3YTIzZjA1MzJiMzY3
ZTI2ODRiNTk1YTVkNjQ2OGYuLmNiY2I4NjRmZTgyZDc1Yjg5MDgxMzdjMDRlM2QyNTA1YWIyMmMz
ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMzUsNiArMzUsOCBAQCBpbXBvcnQgc2lnbmFsCiBpbXBv
cnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiAKKyMgZnJvbSBwdWRiIGltcG9ydCBzZXRfdHJhY2U7
IHNldF90cmFjZSgpCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFn
ZXIKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgY29uZmlndXJhdGlvbl9vcHRpb25zLCBwbGF0
Zm9ybV9vcHRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA5YzY0MmU4NWQwZTI1
M2NhNTBmNTU1ZDYwZGQ1ZTUxZGY3NzJlODBiLi41NWNmOWVhOTYwMWQ4MTg5OTYzNTFhYWZmNDBh
ZGQwMDI2YTA3ODUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTE4NSw1ICsxODUs
MTEgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0SGFuZGxlc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlcyhpbiBib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldEF1dGhlbnRp
Y2F0aW9uVXNlcm5hbWUoaW4gRE9NU3RyaW5nIHVzZXJuYW1lKTsKICAgICB2b2lkIHNldEF1dGhl
bnRpY2F0aW9uUGFzc3dvcmQoaW4gRE9NU3RyaW5nIHBhc3N3b3JkKTsKLX07CiAKKyAgICAvLyBQ
b2ludGVyTG9jaworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
OworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyAgICB2
b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAyMzNmZThhNDNjYjc5ZTViMGU5Yjg3NzhmM2UxNTVlNTgy
MDgyYTIyLi5iYjY2Yzg3OTVmZGE2NjQwNGFhZjkyZDdmMzExOTA5MDIyMjUzODA5IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC00MDgsNiArNDA4LDE3IEBAIEluamVjdGVkQnVuZGxlUGFn
ZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIH07CiAgICAg
V0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChtX3BhZ2UsICZmdWxsU2NyZWVuQ2xpZW50
KTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXS0J1bmRsZVBhZ2VQ
b2ludGVyTG9ja0NsaWVudCBwb2ludGVyTG9ja0NsaWVudCA9IHsKKyAgICAgICAga1dLQnVuZGxl
UGFnZVBvaW50ZXJMb2NrQ2xpZW50Q3VycmVudFZlcnNpb24sCisgICAgICAgIHRoaXMsCisgICAg
ICAgIHN1cHBvcnRzUG9pbnRlckxvY2ssCisgICAgICAgIHJlcXVlc3RQb2ludGVyTG9jaywKKyAg
ICAgICAgMCwgLy8gcmVxdWVzdFBvaW50ZXJVbmxvY2ssCisgICAgfTsKKyAgICBXS0J1bmRsZVBh
Z2VTZXRQb2ludGVyTG9ja0NsaWVudChtX3BhZ2UsICZwb2ludGVyTG9ja0NsaWVudCk7CisjZW5k
aWYKIH0KIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjp+SW5qZWN0ZWRCdW5kbGVQYWdlKCkKQEAgLTE3
NzAsNiArMTc4MSwzMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6Y2xvc2VGdWxsU2NyZWVu
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnN1cHBvcnRzUG9pbnRlckxvY2soV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCit7CisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50
ZXN0UnVubmVyKCktPmhhc1BvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkpIHsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2V0UG9pbnRlckxv
Y2tVc3VhbEJlaGF2aW9yKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXF1ZXN0UG9pbnRlckxv
Y2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCit7CisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS50ZXN0UnVubmVyKCktPmhhc1BvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkp
IHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2V0UG9p
bnRlckxvY2tVc3VhbEJlaGF2aW9yKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IAor
CisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPmhhc1BvaW50
ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpKSB7CisgICAgICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNldFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gV0tCdW5kbGVQYWdl
U3RhcnRSZXF1ZXN0UG9pbnRlckxvY2socGFnZSk7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wg
Y29tcGFyZUJ5VGFyZ2V0TmFtZShXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTEs
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtMikKIHsKICAgICByZXR1cm4gdG9T
VEQoYWRvcHRXSyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0xKSkp
IDwgdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0
ZW0yKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5kZXggMzE3Mjk0ZDZmM2MyNGI2YmM3YWRlNzY5
MTY2MDBmNDgwY2I0N2RmYi4uNTM5MjAwODA1OWMyOWQ0ZWZhODdmOGZmNjA0MTY1MmJmYTFjMjll
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0xNDAsNiArMTQwLDEyIEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgY2xvc2VGdWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgLy8gUG9pbnRlciBMb2NrIGNsaWVudAor
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmKTsKKyAg
ICBzdGF0aWMgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmKTsKKyNlbmRp
ZgorCiAgICAgLy8gRWRpdG9yIGNsaWVudAogICAgIHN0YXRpYyBib29sIHNob3VsZEJlZ2luRWRp
dGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNob3VsZEVuZEVkaXRpbmcoV0tCdW5kbGVQ
YWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDJjYzhiNDk5ZDYwZDViZTdiZDA3ZTk3NTIwNWVjMGJmMTNlZTM5ZjIuLmE5
NDRlZjMwY2U1Y2MzNWNkOWI4ZWM3NmMzODVjNjE2MzU0ZTY2OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtOTQs
NiArOTQsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1fY3VzdG9tRnVsbFNj
cmVlbkJlaGF2aW9yKGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldEVuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24oYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiIikpKQorICAgICwgbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzKFBv
aW50ZXJMb2NrVXN1YWxCZWhhdmlvcikKIHsKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIH0K
QEAgLTgwMSw0ICs4MDIsMTkgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRoZW50aWNhdGlvblBh
c3N3b3JkKEpTU3RyaW5nUmVmIHBhc3N3b3JkKQogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmRpZExvc2VQb2ludGVyTG9jaygp
Cit7CisgICAgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2so
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIFdLQnVuZGxlUGFnZURp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jayhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5w
YWdlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZjI0OWFlNjA5MGYwM2Q0
OGM0NjZhMWQwY2Q2NmI4NDBhM2NhYmRhZC4uY2MwNzMxMDcwOTkwNjkxZmFlNDYxNDViOTA1N2Fh
Mzk4ZTA0NDIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI3MCw2ICsyNzAsMTggQEAgcHVibGljOgogICAgIHZvaWQg
cXVldWVMb2FkaW5nU2NyaXB0KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1ZU5v
bkxvYWRpbmdTY3JpcHQoSlNTdHJpbmdSZWYgc2NyaXB0KTsKIAorICAgIC8vIEN1c3RvbSBQb2lu
dGVyTG9jayBiZWhhdmlvcgorICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9p
ZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpOworCisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IoKSB7IG1fcG9p
bnRlckxvY2tSZXNwb25zZVN0YXR1cyA9IFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcjsgfQorICAg
IGJvb2wgaGFzUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9wb2lu
dGVyTG9ja1Jlc3BvbnNlU3RhdHVzID09IFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcjsgfQorICAg
IHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKSB7IG1fcG9pbnRlckxv
Y2tSZXNwb25zZVN0YXR1cyA9IFBvaW50ZXJMb2NrUmVzcG9uc2VGYWlsOyB9CisgICAgYm9vbCBo
YXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
bnRlckxvY2tSZXNwb25zZVN0YXR1cyA9PSBQb2ludGVyTG9ja1Jlc3BvbnNlRmFpbDsgfQorICAg
IHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkgeyBtX3BvaW50
ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPSBQb2ludGVyTG9ja1Jlc3BvbnNlQXN5bmM7IH0KKyAgICBi
b29sIGhhc1BvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRlckxvY2tSZXNwb25zZVN0YXR1cyA9PSBQb2ludGVyTG9ja1Jlc3BvbnNlQXN5
bmM7IH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVySW50ZXJ2YWw7CiAKQEAgLTMxOSw2ICszMzEsMTQgQEAgcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAg
UGxhdGZvcm1UaW1lclJlZiBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOworCisgICAgZW51bSBQ
b2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzIHsKKyAgICAgICAgUG9pbnRlckxvY2tVc3VhbEJlaGF2
aW9yLAorICAgICAgICBQb2ludGVyTG9ja1Jlc3BvbnNlRmFpbCwKKyAgICAgICAgUG9pbnRlckxv
Y2tSZXNwb25zZUFzeW5jCisgICAgfTsKKworICAgIFBvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMg
bV9wb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1RhcmdldC5wcmkKaW5kZXggMzk4MDBhYjhkY2ZmM2NkNDRlYzI5MTY2ZDM3
MWJjZGUyZDQ0MGE2My4uMWNiYTNkMTY0NDkwMTJkZmZmOTU0YmQyNWYxZTk4MzE5MTA5MjNjMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQpAQCAtMTUsNiArMTUsNyBAQCBIRUFERVJTICs9
IFwKICAgICBUZXN0Q29udHJvbGxlci5oIFwKICAgICBUZXN0SW52b2NhdGlvbi5oIFwKICAgICBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIFwKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlci5oIFwKICAgICBXb3JrUXVldWVNYW5hZ2VyLmgKIAogU09VUkNFUyArPSBcCkBAIC0y
Nyw2ICsyOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFRlc3RDb250cm9sbGVyLmNwcCBcCiAgICAg
VGVzdEludm9jYXRpb24uY3BwIFwKICAgICBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgXAor
ICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcCBcCiAgICAgV29ya1F1ZXVl
TWFuYWdlci5jcHAKIAogREVTVERJUiA9ICQke1JPT1RfQlVJTERfRElSfS9iaW4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNGU2MzMyZDRhZmM3ZGFiMWEw
NGIyZmRiYTcxZGQxYmU3ZDVhZjgwYi4uNzk3NDBhMzUyZDZiOGY5YmVlNjA1YjgyZDgxMjdhOTcz
MmVlMmNmMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI0NCw2ICsyNDYsNyBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFn
ZSwgV0tVUkxSZXF1ZXN0UmVmLCBXSwogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAg
ICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3
UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50KTsKIApAQCAtMzc5LDYgKzM4MiwxMCBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAg
ICAgV0tOb3RpZmljYXRpb25Qcm92aWRlciBub3RpZmljYXRpb25LaXQgPSBtX3dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLnByb3ZpZGVyKCk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIobm90aWZpY2F0aW9uTWFuYWdlciwgJm5vdGlmaWNhdGlvbktpdCk7CiAKKyAgICBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
ciA9IFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIHBvaW50ZXJMb2NrUGVy
bWlzc2lvbktpdCA9IG1fd2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIucHJvdmlkZXIo
KTsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcihwb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyLCAmcG9pbnRlckxvY2tQZXJtaXNzaW9uS2l0KTsKKwogICAg
IGlmICh0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpCiAgICAgICAgIFdLQ29udGV4dFNldEFkZGl0aW9u
YWxQbHVnaW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBsdWdpbkRpcmVjdG9yeSgp
KTsKIApAQCAtNDM3LDYgKzQ0NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZp
ZXdXaXRoT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gc2hv
d0NvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgogICAgICAgICB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVu
dChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQpOwogCkBAIC02MDYsNiArNjE0
LDkgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygp
CiAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IGZhbHNlOwogICAgIG1faXNHZW9s
b2NhdGlvblBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7CiAKKyAgICAvLyBSZXNldCBQb2ludGVy
TG9jayBwZXJtaXNzaW9ucy4KKyAgICBtX3dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
LnJlc2V0KCk7CisKICAgICAvLyBSZXNldCBDdXN0b20gUG9saWN5IERlbGVnYXRlLgogICAgIHNl
dEN1c3RvbVBvbGljeURlbGVnYXRlKGZhbHNlLCBmYWxzZSk7CiAKQEAgLTExOTQsNiArMTIwNSwx
NiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLUwogICAgIFdLTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RBbGxvdyhyZXF1ZXN0KTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRl
UG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYgcGFnZSwgV0tT
ZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJl
ZiByZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCku
ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChwYWdlLCBvcmlnaW4s
IHJlcXVlc3QpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwg
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7CisgICAgV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdCk7Cit9CisKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXS1BhZ2VSZWYsIFdLUGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFdLRGljdGlvbmFyeVJlZiwgY29uc3Qgdm9pZCopCiB7
CiAgICAgcHJpbnRmKCJNSVNTSU5HIFBMVUdJTiBCVVRUT04gUFJFU1NFRFxuIik7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZGVlMjY4MzQ2ZGY5YzI4ZDczY2Vi
ZTM5YTgwMzQyMDVkY2EzZDRiNy4uMTMyZTc1N2QwZGY2NmVjNTk4Zjg0YTliYzNhMzM5ZTFmMzBi
Y2QxZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBUZXN0Q29udHJvbGxlcl9oCiAKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlTWFuYWdlci5oIgogI2luY2x1ZGUgPEdlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpAQCAt
MTM3LDYgKzEzOCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1Bh
Z2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RSZWYpOwogCisgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYsIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZik7CisKICAgICBzdGF0
aWMgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV0tQYWdlUmVmLCBXS1BsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYsIGNvbnN0IHZvaWQqKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTE3MCw2ICsxNzQsOCBAQCBwcml2YXRlOgogCiAgICAg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKIAorICAg
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIG1fd2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXI7CisKICAgICBPd25QdHI8UGxhdGZvcm1XZWJWaWV3PiBtX21haW5XZWJWaWV3
OwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV9jb250ZXh0OwogICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VHcm91cDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTc4YTc1ZjEzZjk4NGQwYmQwZGFhMjE5NzljYjYwZDZjYzgwNTk5YgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVD
VFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS011dGFibGVB
cnJheS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgdm9pZCBhZGRQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0
PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5hZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKG1hbmFnZXIpOworfQor
CitzdGF0aWMgdm9pZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHN0YXRpY19jYXN0PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5yZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyKG1hbmFnZXIpOworfQorCitzdGF0aWMgV0tEaWN0aW9uYXJ5UmVmIHBvaW50ZXJM
b2NrUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKTsKK30KKworV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyKCkKK3sKK30KKworV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cHJvdmlkZXIoKQoreworICAgIFdLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXIgcG9pbnRlckxvY2tQcm92aWRlciA9IHsKKyAgICAgICAga1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVyc2lvbiwKKyAgICAgICAgdGhpcywK
KyAgICAgICAgV1RSOjphZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLAorICAgICAgICBX
VFI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsCisgICAgICAgIFdUUjo6cG9p
bnRlckxvY2tQZXJtaXNzaW9ucywKKyAgICB9OworICAgIHJldHVybiBwb2ludGVyTG9ja1Byb3Zp
ZGVyOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjphZGRQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJl
ZiBtYW5hZ2VyKQoreworICAgIEFTU0VSVCghbV9wb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KTsKKyAgICBtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIgPSBtYW5hZ2VyOworfQorCit2
b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpyZW1vdmVQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2Vy
KQoreworICAgIEFTU0VSVChtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOworICAgIEFT
U0VSVChtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuZ2V0KCkgPT0gbWFuYWdlcik7Cisg
ICAgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyID0gMDsKK30KKworV0tEaWN0aW9uYXJ5
UmVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Blcm1pc3Np
b25zKCkKK3sKKyAgICAvLyBGSVhNRSA6IEl0IHNob3VsZCBiZSByZWFsIGNhY2hlIGZvciBwZXJt
aXNzaW9ucworICAgIHJldHVybiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7Cit9CisKK3Zv
aWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnJlc2V0KCkKK3sKKyAgICAvLyBG
SVhNRSA6IHJlc2V0IHJlYWwgY2FjaGUKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIyYTkxZGQ0OTI5YzZjMjZlMWJlOWMxZWFjZTdiYzczMDg1
NDc0YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklD
UyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwor
bmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
IHsKK3B1YmxpYzoKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcigpOworICAg
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgcHJvdmlkZXIoKTsKKworICAgIHZvaWQg
YWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJSZWYpOworICAgIHZvaWQgcmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYpOworICAgIFdLRGljdGlvbmFyeVJlZiBw
b2ludGVyTG9ja1Blcm1pc3Npb25zKCk7CisKKyAgICB2b2lkIHJlc2V0KCk7Citwcml2YXRlOgor
ICAgIFdLUmV0YWluUHRyPFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZj4gbV9wb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVj
cy9mZWF0dXJlcy9mZWF0dXJlcy5wcmkgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByaQppbmRleCBkZmUwNjNjMjg4OTk1YWE1YWY0ODIxODI0Mjc2NTA1ZjJlNmZmZjVk
Li41NWEyMzNkYTYwZDczYjVlYTdjNzdhMDg0YjVkYzA1YmFiZGYyMDQ4IDEwMDY0NAotLS0gYS9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQorKysgYi9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQpAQCAtMTI2LDMgKzEyNiw1IEBAIEZFQVRV
UkVfREVGQVVMVFMgPSBcCiAgICAgRU5BQkxFX1dPUktFUlM9MSBcCiAgICAgRU5BQkxFX1hIUl9U
SU1FT1VUPTEgXAogICAgIEVOQUJMRV9YU0xUPTAgXAorICAgIEVOQUJMRV9QT0lOVEVSX0xPQ0s9
MCBcCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBiOWZmYzlkODk2ZmU5YTY3NmI5MGIyMWFmZTg4MDczM2VkOGQ5ZmY3Li4w
MzhjZGY4ZDdjMGEyOTA2ODMwMWVhYzAyYTY5OTMxOGJlNWQ0ZGQ4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMDYtMTkgIFN0YW5pc2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3VsaWtA
bGdlLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2NrIElt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTc3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHRlc3QgaXMgcGVyZm9ybWVkIHN1Y2Nlc3NmdWxseSwgYnV0IGFmdGVyIHRoYXQg
Zmlyc3QgcnVuIG9mIGFsbCB0ZXN0cyBjb21wbGV0ZSB3aXRoOiAKKyAgICAgICAgZmFpbGVkIHRp
bWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZDoKKyAgICAgICAgcG9p
bnRlci1sb2NrL2J1ZzkwMzkxLW1vdmUtdGhlbi13aW5kb3ctb3Blbi1jcmFzaC5odG1sCisKKyAg
ICAgICAgT25lIHRlc3QgZmFpbCwgbm8gZG91YmxlY2xpY2sgc3VwcG9ydCBub3c6CisgICAgICAg
IHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCisKKyAgICAgICAgQWxsIG90
aGVyIHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMTMtMDQtMjUgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVn
ZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4gQWRkZWQgcGxhdGZv
cm0gc3BlY2lmaWMgZXhwZWN0ZWQgZmlsZXMgYWZ0ZXIgcjE0ODk4Ny4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjNTEwZmFlNTY1
OTYxZTQwMTc5OWIyN2JmZWNjYWQ2MzI2MWQwMGI5Li5hZTA4MjExM2FhZGE1MTY0MTYxZDc4NmM1
YjZiNWNlNDhmM2Y3YjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC03NTMsMyArNzUzLDEwIEBAIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxjaGVjay1hc3luYy5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcXVldWUu
aHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXNlcXVlbmNlbnVtLmh0bWwKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWRlc2NyaXB0aW9uLmh0bWwKKworcG9pbnRlci1s
b2NrLyBbIFBhc3MgXQorIyBbUXRdW1dLMl0gVGhlIHRlc3QgaXMgcGVyZm9ybWVkIHN1Y2Nlc3Nm
dWxseSwgYnV0IGFmdGVyIHRoYXQgYWxsIHRlc3RzIGNvbXBsZXRlIHdpdGg6IGZhaWxlZCB0aW1l
ZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQuCitwb2ludGVyLWxvY2sv
YnVnOTAzOTEtbW92ZS10aGVuLXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwgWyBTa2lwIF0KKyMgW1F0
XVtXSzJdIE5vIGRvdWJsZWNsaWNrIHByb2Nlc3Npbmcgbm93Citwb2ludGVyLWxvY2svbW91c2Ut
ZXZlbnQtZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgXQoraHR0cC90ZXN0cy9wb2ludGVyLWxvY2sv
IFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205075</attachid>
            <date>2013-06-20 05:31:40 -0700</date>
            <delta_ts>2013-06-21 08:09:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117789-20130620162946.patch</filename>
            <type>text/plain</type>
            <size>198687</size>
            <attacher name="Stanislav Pikulik">stanislav.pikulik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFkMmRlYjA4ZDFkMDIz
MGYyNWVjZGZkZDA4NTg5N2QyYTU1NzAwNy4uY2FmZDEzZDFkMzY1ODFkMTRhNDRkYmFlN2RmNDMw
NjBhMmQwYTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTIwICBTdGFu
aXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRhcmdldCBtZXRob2QgdG8gZ2V0IHNlY3VyaXR5IG9yaWdpbiBv
ZiBkb2N1bWVudCB0byB3aGljaCB0aGUgZWxlbWVudCBiZWxvbmdzLCAKKyAgICAgICAgYmVmb3Jl
IHBvaW50ZXIgbG9jayB3aWxsIGJlIHJlcXVlc3RlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMjAgIEdyemVn
b3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgYmFj
a2dyb3VuZC1jb2xvciBhbmQgdGV4dC1kZWNvcmF0aW9uIGFyZSBub3QgcHJlc2VydmVkIHdoZW4g
bWVyZ2luZyBwYXJhZ3JhcGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGZlN2M0MzY2NjY3MTAzYjAxZjZjYTIx
ODQxZmM2OTlmNGU2YjY1My4uMzU0OWZmMWNlNWIyOWFhMWMyZmViODVkNGZmNGJhYWNmYWYwYTRj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOSBAQAorMjAxMy0wNi0yMCAgU3RhbmlzbGF2IFBp
a3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBwb2ludGVyIGxvY2sgcGVybWlzc2lv
biByZXF1ZXN0IHByb2Nlc3NpbmcKKyAgICAgICAgYWRkIHBvaW50ZXIgbG9jayByZXF1ZXN0cyBw
cm9jZXNzaW5nCisgICAgICAgIGFkZCBxbWwgQVBJCisgICAgICAgIGFkZCBxbWwgdGVzdHMgZm9y
IHBvaW50ZXIgbG9jaworCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRz
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmg6CisgICAgICAgICogU2hh
cmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxh
dGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3kpOgorICAgICAgICAoV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGljaWVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCk6CisgICAgICAgIChXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3REZW55KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cG9pbnRlckxvY2tlZCk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dW5sb2NrUG9pbnRlcik6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwb2ludGVyTG9ja2VkKToKKyAgICAgICAgKFFRdWlja1dl
YlZpZXdFeHBlcmltZW50YWw6OnVubG9ja1BvaW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Np
b25yZXF1ZXN0LmNwcDoKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU6OlFX
ZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1
ZXN0OjpjcmVhdGUpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpRV2ViUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpzZXRBbGxvdyk6
CisgICAgICAgIChRV2ViUGVybWlzc2lvblJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9wb2ludGVybG9j
ay5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
Y29tbW9uL3BvaW50ZXJsb2NrMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmFsbG93KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
aWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tN
YW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6On5XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpzZXRXZWJW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmlzUG9p
bnRlckxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5
OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3h5OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmluaXRpYWxpemVQcm92
aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eTo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cG9wdWxhdGVDb3B5T2ZQb2ludGVy
TG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZFJlbW92ZVBvaW50ZXJMb2NrUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyOjphZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlcjo6cG9pbnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAgICAgICog
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5OjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZExvc2VQb2lu
dGVyTG9jayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cG9pbnRlckxvY2tNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlckxvY2tQZXJtaXNz
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJQYWdlVUlDbGllbnQ6OlF0V2ViUGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBvaW50ZXJM
b2NrQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJMb2Nr
KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlSXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZURpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWROb3RBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2Nr
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tQZXJt
aXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFBvaW50
ZXJMb2NrUGVybWlzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpzdXBwb3J0c1BvaW50
ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tD
bGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9j
a0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cGVy
bWlzc2lvbkxldmVsKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OnNldFBlcm1pc3Npb25MZXZlbEZvclRlc3RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlz
c2lvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJt
aXNzaW9uQ2FsbGJhY2s6On5Qb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OldlYlBvaW50ZXJMb2NrTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6fldlYlBvaW50ZXJM
b2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3Vw
cG9ydHNQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdl
cjo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tN
YW5hZ2VyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50
ZXJMb2NrTWFuYWdlcjo6aXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9p
bnRlckxvY2tNYW5hZ2VyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2lu
dGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFu
YWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a01hbmFnZXI6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25D
YWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uQ2FsbGJhY2s6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OldlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyOjp+V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
OjpkaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6ZGlkUmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpwb2xp
Y3lGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlz
c2lvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Oldl
YlByb2Nlc3MpOgorCiAyMDEzLTA2LTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRXhwb3NlIHBsdWctaW5zIENGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nIGluIHRo
ZSBXS1BsdWdpbkluZm9ybWF0aW9uIGRpY3Rpb25hcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGIzNWZiNjgx
YWNmMTljZDc2ZDAyZTYxNDhmYjY3OGVhZGRhNzk0YjYuLjZiZWUxMDIwZjc2NjM4ZGZjNzhmNTI0
ZjQ5YmU2ZWNlNmM3YmYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtOTQxLDYgKzk0MSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBcCiAgICAgcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBcCiAgICAgcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5jcHAgXAorICAgIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9Q
cmludENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBcCkBAIC0yMDk3LDYgKzIwOTgsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBwYWdlL1BhZ2VUaHJvdHRsZXIuaCBcCiAgICAgcGFnZS9QYWdlVmlzaWJp
bGl0eVN0YXRlLmggXAogICAgIHBhZ2UvUGx1Z0luQ2xpZW50LmggXAorICAgIHBhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmggXAogICAgIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBcCiAg
ICAgcGFnZS9QcmludENvbnRleHQuaCBcCiAgICAgcGFnZS9TY3JlZW4uaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKaW5kZXggOTc0Yjk4ZGE1ZjRl
YTMzYTFkZTM0ZWJkY2NmZjk5MGU2ZmIxMzliMi4uODA2YmI4YTc2NzdkNmJhMDI0MmE2NjI2ZmU2
NDI1ZWM4MGI2MGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9j
a0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmNwcApAQCAtNjgsMTEgKzY4LDE1IEBAIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVy
OjpyZXF1ZXN0UG9pbnRlckxvY2soRWxlbWVudCogdGFyZ2V0KQogICAgICAgICB9CiAgICAgICAg
IGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2VFdmVudCwg
dGFyZ2V0KTsKICAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OwotICAgIH0gZWxzZSBpZiAobV9w
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKLSAgICAgICAg
bV9sb2NrUGVuZGluZyA9IHRydWU7Ci0gICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKICAgICB9
IGVsc2UgewotICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJs
b2NrZXJyb3JFdmVudCwgdGFyZ2V0KTsKKyAgICAgICAgbV90YXJnZXQgPSB0YXJnZXQ7CisgICAg
ICAgIGlmIChtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5yZXF1ZXN0UG9pbnRlckxvY2soKSkg
eworICAgICAgICAgICAgbV9sb2NrUGVuZGluZyA9IHRydWU7CisgICAgICAgICAgICBtX2VsZW1l
bnQgPSB0YXJnZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3RhcmdldCA9IDA7
CisgICAgICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2Nr
ZXJyb3JFdmVudCwgdGFyZ2V0KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTEwLDEwICsx
MTQsMTYgQEAgRWxlbWVudCogUG9pbnRlckxvY2tDb250cm9sbGVyOjplbGVtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gbV9lbGVtZW50LmdldCgpOwogfQogCitFbGVtZW50KiBQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwor
fQorCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkK
IHsKICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdl
RXZlbnQsIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgbV9sb2NrUGVuZGluZyA9IGZhbHNlOworICAg
IG1fdGFyZ2V0ID0gMDsKIH0KIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZE5vdEFj
cXVpcmVQb2ludGVyTG9jaygpCkBAIC0xNDUsNiArMTU1LDcgQEAgdm9pZCBQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmNsZWFyRWxlbWVudCgpCiB7CiAgICAgbV9sb2NrUGVuZGluZyA9IGZhbHNlOwog
ICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV90YXJnZXQgPSAwOwogfQogCiB2b2lkIFBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6ZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRWxl
bWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxv
Y2tDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5oCmluZGV4IGM4MjA3NTRhZTFhNGVjYzUzZDExNmE4ZDQyMWRiNGY2NmM0NGUzNzQuLmRlYTQx
MTRkYmQyM2IyZWQ3ZTczZjRlYmRiOGUxZTk1YzNhYzkxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkb2N1bWVudERldGFjaGVkKERvY3VtZW50Kik7CiAgICAgYm9vbCBsb2NrUGVuZGlu
ZygpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdDsKKyAgICBFbGVtZW50KiB0
YXJnZXQoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CiAgICAg
dm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKQEAgLTY1LDYgKzY2LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fbG9ja1BlbmRpbmc7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVu
dDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnRPZlJlbW92ZWRFbGVtZW50V2hpbGVX
YWl0aW5nRm9yVW5sb2NrOworICAgIFJlZlB0cjxFbGVtZW50PiBtX3RhcmdldDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLnByaSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBkYzE3
ZmFhYWMwYjljY2ZmODI4YjRiY2Q3NjE0YmJhYTYzZjFkZDljLi5hYmUxZGVkNTAwOTJiNDk2Njgw
MWNmY2U1Mjk0YTVjYWZlMWJkMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC00
OCw2ICs0OCw3IEBAIFZQQVRIID0gXAogICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8gXAogICAg
IFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zIFwKKyAg
ICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrIFwKICAgICBXZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUg
XAogICAgIFdlYlByb2Nlc3MvU3RvcmFnZSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dCBcCkBAIC01OSw2ICs2MCw3IEBAIFZQQVRIID0gXAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMg
XAogICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucyBc
CisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrIFwKICAgICBVSVByb2Nlc3MvU3RvcmFnZSBcCiAg
ICAgU2hhcmVkIFwKICAgICBTaGFyZWQvQXV0aGVudGljYXRpb24gXApAQCAtMTAwLDYgKzEwMiw5
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2VyLm1l
c3NhZ2VzLmluIFwKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluIFwKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gXAogICAgIERy
YXdpbmdBcmVhLm1lc3NhZ2VzLmluIFwKICAgICBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IGVhOGUyZjFiYTc0MWE3NWEyNDIw
ZDkxZDMyMDkzNjAyMzM3NGE0ZmIuLjQ5OTcwZmJjMmQwOTgzNTIxMGZiZmFlYTE2MjNhMWQ2MGQz
YTk5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNCw2ICsxMzQs
OSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnZVJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZUdyb3VwKiBXS1BhZ2VHcm91cFJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiBXS1BsdWdpblNp
dGVEYXRhTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5j
ZXMqIFdLUHJlZmVyZW5jZXNSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIqIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdCogV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmOwordHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciogV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJv
dGVjdGlvblNwYWNlKiBXS1Byb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCmluZGV4IDlhZjdjNzZlM2JkMjg0ZWNmZjk5MGQ5YzMz
ZWMyNjg4NjJlOTUxM2YuLjk1ZjhjOTE0MmJkZjIyNzdjYmEzMmI0M2YzMTEyY2Y0MjBmNjlkYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudD46OmludGVyZmFjZVNpemVzQnlWZXJzCiAgICAgb2Zmc2V0b2YoV0tCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudCwgYmVnYW5FbnRlckZ1bGxTY3JlZW4pLAogICAgIHNpemVvZihXS0J1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KQogfTsKLSAgICAKKwogY29uc3Qgc2l6ZV90IEFQSUNs
aWVudFRyYWl0czxXS1BhZ2VDb250ZXh0TWVudUNsaWVudD46OmludGVyZmFjZVNpemVzQnlWZXJz
aW9uW10gPSB7CiAgICAgb2Zmc2V0b2YoV0tQYWdlQ29udGV4dE1lbnVDbGllbnQsIGNvbnRleHRN
ZW51RGlzbWlzc2VkKSwKICAgICBvZmZzZXRvZihXS1BhZ2VDb250ZXh0TWVudUNsaWVudCwgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KSwKQEAgLTcyLDYgKzcyLDcgQEAgY29uc3Qgc2l6
ZV90IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VMb2FkZXJDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5
VmVyc2lvbltdID0gewogY29uc3Qgc2l6ZV90IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVu
dD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7CiAgICAgb2Zmc2V0b2YoV0tQYWdlVUlD
bGllbnQsIGNyZWF0ZU5ld1BhZ2UpLAogICAgIG9mZnNldG9mKFdLUGFnZVVJQ2xpZW50LCBzaG93
Q29sb3JQaWNrZXIpLAorICAgIG9mZnNldG9mKFdLUGFnZVVJQ2xpZW50LCBkZWNpZGVQb2xpY3lG
b3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KSwKICAgICBzaXplb2YoV0tQYWdlVUlDbGll
bnQpCiB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVu
dFRyYWl0cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCmluZGV4
IDRhNjZhNGVlODAyOGU5ZDdkNzRlMTQzYjYzY2NlMDFiOTQzOTc4NjcuLjE0MzgwZmIxMTIyY2Qz
NDIwZTFhNTQzNjFkMDM1ZjFmMTM4M2ViOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xp
ZW50VHJhaXRzLmgKQEAgLTY4LDcgKzY4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50
VHJhaXRzPFdLUGFnZUxvYWRlckNsaWVudD4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJ
Q2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50PiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBp
bnRlcmZhY2VTaXplc0J5VmVyc2lvblszXTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVy
ZmFjZVNpemVzQnlWZXJzaW9uWzRdOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50
VHJhaXRzPFdLQnVuZGxlUGFnZUZvcm1DbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aAppbmRleCA0YmUzOTlhNzEzYmY5MmJjN2I5ODIwNmM3ZWIxMTI5ODQwN2M1ZThmLi5iOTY0OWQ0
NzJiZWI2MWQxY2NjOTIwMGE1ZGY3YzM0YTJlNTY1NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCkBAIC0xMDYsNiArMTA2LDggQEAgcHVibGljOgogICAgICAgICBUeXBlUGFnZSwKICAg
ICAgICAgVHlwZVBhZ2VHcm91cCwKICAgICAgICAgVHlwZVBsdWdpblNpdGVEYXRhTWFuYWdlciwK
KyAgICAgICAgVHlwZVBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QsCisgICAgICAgIFR5cGVQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLAogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCiAg
ICAgICAgIFR5cGVUZXh0Q2hlY2tlciwKICAgICAgICAgVHlwZVZpYnJhdGlvbiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggODFhZjdlYjI3MDJl
NjQwNjIxZTI4Y2JhNzUwOGE2ODM2Y2U0MzZmNi4uOWYxZTU3YmY3MzFlZTU4ZTNmMmU0OGNhNGZk
NTk3MzMyOTZkNGViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVy
c2lvbi5jcHAKQEAgLTgzLDYgKzgzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9nbG9iYWxQb3Np
dGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9
IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAg
ICAgIG1fbW92ZW1lbnREZWx0YSA9IFdlYkNvcmU6OkludFBvaW50KHdlYkV2ZW50LmRlbHRhWCgp
LCB3ZWJFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKKwogICAgICAgICBtX21vZGlmaWVyRmxhZ3Mg
PSAwOwogICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgICAgIG1fbW9k
aWZpZXJGbGFncyB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNTZmMTQ0
ZDZkYTRiMjU3M2M5ZGZlNTYwNmFjMzQyOTMyMDgxOTQ2Zi4uMDFmNGM2YjNlZWMzZGFlMjA0MTYw
YjdlMjgxYmIxOWU4ODY5MmViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTA2LDYgKzEwNiwxMCBAQCB2
b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgbm90aWZpY2F0aW9uUGVybWlz
c2lvbnM7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgZW5jb2RlciA8
PCBwb2ludGVyTG9ja1Blcm1pc3Npb25zOworI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGVuY29kZXIgPDwgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBkMjE5M2M3NDY3Njc4OGVmMmRlNmVhNzkxYWY3OTNmNzQ4NmYxZWIwLi4wMmE1YmJk
Y2UxNjQyZjRiMjIwOTcyMjdhMzc2OGMwYTM0MzI0Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEyOCw2ICsx
MjgsMTAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIEhhc2hN
YXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gcG9pbnRlckxv
Y2tQZXJtaXNzaW9uczsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBib29sIHVzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZmU2MzM2
YTEwMTU2M2YxYmUxNmQ1YjBkODE3MzQ4ZDU3ZTU1ZDQzNy4uZmQwMjIwMGUyN2FlYjFjYzUyZWM4
NDg4ODJmMGM0YzEwNGM3ZTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xODgsNiArMTg4LDkgQEAgSEVB
REVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BsdWdp
blNpdGVEYXRhTWFuYWdlci5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oIFwKQEAgLTI3OSw2ICsyODIsMTEgQEAgSEVB
REVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKICAg
ICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QuaCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmggXAogICAgIFVJUHJvY2Vzcy9X
ZWJQb2xpY3lDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmggXAogICAg
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBcCkBAIC0zMTYsNiArMzI0LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggXAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xp
Y3lDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuaCBcCkBAIC0zMzksNiArMzQ4LDEwIEBAIEhFQURFUlMgKz0gXAog
ICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIFwKICAgICBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50
ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAorICAgIFdlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmggXAorICAgIFdlYlByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaCBcCisgICAg
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgg
XAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQmF0dGVyeUNsaWVudC5oIFwKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIFwKICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5oIFwKQEAgLTU0OSw2ICs1NjIs
OCBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCkBAIC01
ODksNiArNjA0LDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1dlYlBs
dWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdp
blByb2Nlc3NQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5J
bmZvU3RvcmVVbml4LmNwcCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3QuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eVF0LmNwcCBcCisgICAgVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmNwcCBcCisgICAg
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94
eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25Qcm92aWRlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBc
CiAgICAgVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcCBcCiAgICAgVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIFwKQEAgLTY4OSw2ICs3MTAsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUZvcm1DbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgXAorICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGlj
eUNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgXApAQCAtNzE1LDYgKzczNywxMCBA
QCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKICAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBc
CisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tN
YW5hZ2VyLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjay5jcHAgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwIFwKICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwIFwKICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA2NGM4
ZDFhYmZiMTAwYzhlOTYyNTU3NzkxMTliYTdiNGUxNmViOWIzLi45NjE2ZjExYjY2MjIyY2I3OWMz
NzRkNTk3ZTQwNjI3Mjc5MDhiOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
K2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTsKQEAgLTkwLDYgKzkxLDggQEAgY2xhc3MgV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjsKK2NsYXNzIFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTsKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyOwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3Bh
Y2U7CiBjbGFzcyBXZWJSZW5kZXJMYXllcjsKQEAgLTEzNiw2ICsxMzksOSBAQCBXS19BRERfQVBJ
X01BUFBJTkcoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVmLCBXZWJQYWdl
R3JvdXApCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYsIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlcikKK1dLX0FERF9BUElfTUFQUElORyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJSZWYsIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSkKK1dLX0FERF9B
UElfTUFQUElORyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYsIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3QpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlclJlZiwgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS1JlbmRlckxheWVyUmVmLCBXZWJSZW5kZXJMYXllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTYyOWE1NjI3
Mzk4ZWY2NjM1ZmMzYjQwZmU4ZDUzZWJiYWZiNDQ2YS4uZGQ4ZTUzOWMyYWNjZmE4MTEwNmM1ZmUx
NTBjNWVkMjY4NTRkYWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyUHJveHkuaCIKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIldl
YkRhdGFiYXNlTWFuYWdlclByb3h5LmgiCkBAIC0yNjAsNiArMjYxLDE1IEBAIFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxl
bWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCkpOwogfQogCitXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5PigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7
CisjZW5kaWYKK30KKwogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UGx1
Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oCmluZGV4IDNjZTczMWU3OGYwZmNkODBiOGE5YWQ3ZTRmYTA1ZDE1NWM5MzAwZTAu
LmRlNDQ4Y2E5NTlkYmI4ZjY0Mjc1N2ZlZTU5MDc0ZTQwNGQ0YTZjZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTE5NSw3ICsxOTUsOCBAQCBXS19F
WFBPUlQgV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TmV0d29ya0luZm9NYW5h
Z2VyKFdLQ29udGV4dFJlZiBjbwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBX
S0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdL
X0VYUE9SVCBXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQbHVnaW5TaXRl
RGF0YU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0
UmVmIGNvbnRleHQpOwotICAgIAorV0tfRVhQT1JUIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclJlZiBXS0NvbnRleHRHZXRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKKwogdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1
bmN0aW9uKShXS0RpY3Rpb25hcnlSZWYgc3RhdGlzdGljcywgV0tFcnJvclJlZiBlcnJvciwgdm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3Rp
Y3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tDb250ZXh0
R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdGF0aXN0
aWNzT3B0aW9ucyBzdGF0aXN0aWNzTWFzaywgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRl
eHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oCmluZGV4IDE3NjU3OGZlZTk1MmQ1ZmU2YTE3NDVhNzM5Y2NjMDgyNTAw
ZjQzOGIuLjhhMWYzZWY5M2JmMjdmNTRkZWViMDA5MzllMDJhMWQ1M2M5ZDFkOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrKShXS1BhZwogdHlwZWRlZiB2b2lkICgqV0tQYWdlU2hvd0NvbG9yUGlja2Vy
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VIaWRlQ29sb3JQaWNrZXJDYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdl
VW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBX
S0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0RpY3Rpb25hcnksIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwZXJtaXNzaW9uUmVx
dWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIC8vIERlcHJlY2F0ZWQgICAgCiB0eXBl
ZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTI4MiwxMCArMjgzLDEzIEBAIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudCB7CiAgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7CiAgICAgV0tQYWdl
SGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoaWRlQ29sb3JQaWNrZXI7CiAgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lG
b3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBv
bGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q7CiB9OwogdHlwZWRlZiBzdHJ1Y3Qg
V0tQYWdlVUlDbGllbnQgV0tQYWdlVUlDbGllbnQ7CiAKLWVudW0geyBrV0tQYWdlVUlDbGllbnRD
dXJyZW50VmVyc2lvbiA9IDIgfTsKK2VudW0geyBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lv
biA9IDMgfTsKIAogLy8gRmluZCBjbGllbnQuCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaW5k
U3RyaW5nQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdHJpbmcsIHVuc2ln
bmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTgyYjRiNGZlODA3ZWE4NjNkNDkwZDNjMjE4
YzE2YWY0NTNmYjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKworV0tUeXBlSUQgV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyR2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIHJldHVybiB0b0FQSShXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUHJveHk6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gQVBJT2JqZWN0OjpUeXBlTnVs
bDsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclNldFBy
b3ZpZGVyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25z
dCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKQoreworI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5pbml0aWFsaXplUHJv
dmlkZXIod2tQcm92aWRlcik7CisjZW5kaWYKK30KKwordm9pZCBXS1BvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5KFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgYm9vbCBhbGxvd2VkKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9J
bXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5KHRvSW1w
bChvcmlnaW4pLCBhbGxvd2VkKTsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyhXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBvcmlnaW5z
KQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5w
cm92aWRlckRpZFJlbW92ZVBvaW50ZXJMb2NrUG9saWNpZXModG9JbXBsKG9yaWdpbnMpKTsKKyNl
bmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNzE4YjQ5
NTVlMDk5ZGQ4NmRkZTY2NDUzN2U5ZmNjMDRiZDQ5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJv
bmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaAorI2RlZmluZSBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaAorCisjaW5jbHVkZSAiV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlci5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlE
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIHZv
aWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpOworV0tfRVhQT1JUIHZvaWQgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVQb2ludGVyTG9ja1BvbGljeShXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CitXS19FWFBPUlQgdm9pZCBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZVBvaW50ZXJMb2NrUG9saWNpZXMoV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgb3Jp
Z2lucyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTZlODFkNzNhMTE5OTdlYTQ1N2NjMDcwYzg4YjRmODdmYzMyNzhiZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50
ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05J
Q1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyX2gKKyNkZWZpbmUgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLUG9pbnRlckxvY2tQZXJtaXNzaW9u
QWRkTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrKShXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJSZWYgbWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdl
ckNhbGxiYWNrKShXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLRGljdGlvbmFyeVJlZiAoKldLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJQZXJtaXNzaW9uc0NhbGxiYWNrKShjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKworc3RydWN0IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgewor
ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25BZGROb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2sgICAgICAgICAg
ICBhZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOworICAgIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2sgcmVtb3ZlUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyUGVybWlzc2lvbnNDYWxsYmFjayAgICAgICAgICAgICAgIHBvaW50ZXJMb2NrUGVybWlz
c2lvbnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ciBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOworCitlbnVtIHsga1dLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVyc2lvbiA9IDAgfTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBk
NDk3ZmZiYzhhZTJiNjQyZjZiNzdiYWU0NWFhYTMzYjNjM2ZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNT
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitXS1R5cGVJRCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKQorewor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcmV0dXJuIHRvQVBJKFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gQVBJT2JqZWN0OjpU
eXBlTnVsbDsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dEFsbG93KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0KQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcmV0dXJuIHRv
SW1wbChwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KS0+YWxsb3coKTsKKyNlbmRpZgorfQor
Cit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpCit7CisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9JbXBsKHBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3QpLT5kZW55KCk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NTE4NmQ2NzAyMjA5ODFjM2Q3Y2EwODE4ZjMyOGMwY2M2NjUzNGJk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9O
SUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0X2gKKyNkZWZpbmUgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKKwor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RBbGxvdyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk7CitXS19FWFBPUlQgdm9pZCBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3REZW55KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBw
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8vIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRl
eCAxMjEzZmQ5YjIwMTg3Yjk5NTkzZjQ1MDFmYzJkOTE2ZDU3YTI2NjFhLi44YTQ0ODBjZTJkZDEx
OTY5NjUzMzNjMjdjZjZjNmExYWY1NzNmYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTQ1LDYgKzQ1LDkgQEAKICNpbmNs
dWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXAuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5LmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5o
IgogI2luY2x1ZGUgInFnbG9iYWwuaCIKICNpbmNsdWRlICJxcXVpY2tuZXR3b3JrcmVwbHlfcC5o
IgpAQCAtMzM1LDYgKzMzOCwxMCBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFs
aXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYQogICAgIHdlYlBh
Z2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhxX3B0cik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgd2ViUGFnZVByb3h5LT5wb2ludGVyTG9j
a01hbmFnZXIoKS0+c2V0V2ViVmlldyhxX3B0cik7CisjZW5kaWYKKwogICAgIHBhZ2VFdmVudEhh
bmRsZXIucmVzZXQobmV3IFF0V2ViUGFnZUV2ZW50SGFuZGxlcih3ZWJQYWdlLmdldCgpLCBwYWdl
Vmlldy5kYXRhKCksIHFfcHRyKSk7CiAKICAgICB7CkBAIC01MjcsNiArNTM0LDE4IEBAIGJvb2wg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0CiAgICAg
cmV0dXJuIHdlYlBhZ2VQcm94eS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKIH0KIAor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjpwb2lu
dGVyTG9ja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5wb2ludGVyTG9j
a01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OnVubG9ja1BvaW50ZXIoKQoreworICAgIHdlYlBhZ2VQcm94eS0+cG9pbnRlckxvY2tN
YW5hZ2VyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworfQorI2VuZGlmCisKIHZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmxvYWRQcm9ncmVzc0RpZENoYW5nZShpbnQgbG9hZFByb2dyZXNzKQog
ewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKQEAgLTEwNzEsMTIgKzEwOTAsMzEgQEAgYm9vbCBR
UXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdAog
ICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKICAgICByZXR1cm4gZC0+dHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCk7CiB9CisKIHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0VHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgZW5hYmxlKQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3
KTsKICAgICBkLT5zZXRUcmFuc3BhcmVudEJhY2tncm91bmQoZW5hYmxlKTsKIH0KIAorYm9vbCBR
UXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwb2ludGVyTG9ja2VkKCkgY29uc3QKK3sKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICBy
ZXR1cm4gZC0+cG9pbnRlckxvY2tlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1bmxvY2tQb2ludGVyKCkK
K3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKKyAg
ICBkLT51bmxvY2tQb2ludGVyKCk7CisjZW5kaWYKK30KKwogYm9vbCBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsOjp1c2VEZWZhdWx0Q29udGVudEl0ZW1TaXplKCkgY29uc3QKIHsKICAgICBRX0Qo
Y29uc3QgUVF1aWNrV2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA0Njg1MTVmY2ZmYTgxOTQ5MWIwYmRlZTM1MzY1
NmUzODEwYTA4MDA5Li5mZjY1ZmJhMGVkN2RlZTYzYjZmZTdhNDgzNjkxODQ4ODIwODVjZDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKQEAgLTI1Niw3ICsyNTYsNyBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogCiAgICAgUV9QUk9QRVJUWShib29sIHRy
YW5zcGFyZW50QmFja2dyb3VuZCBXUklURSBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQgUkVBRCB0
cmFuc3BhcmVudEJhY2tncm91bmQpCiAgICAgUV9QUk9QRVJUWShib29sIHVzZURlZmF1bHRDb250
ZW50SXRlbVNpemUgV1JJVEUgc2V0VXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZSBSRUFEIHVzZURl
ZmF1bHRDb250ZW50SXRlbVNpemUpCi0KKyAgICBRX1BST1BFUlRZKGJvb2wgcG9pbnRlckxvY2tl
ZCBSRUFEIHBvaW50ZXJMb2NrZWQpCiAgICAgUV9QUk9QRVJUWShpbnQgcHJlZmVycmVkTWluaW11
bUNvbnRlbnRzV2lkdGggV1JJVEUgc2V0UHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGggUkVB
RCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCBOT1RJRlkgcHJlZmVycmVkTWluaW11bUNv
bnRlbnRzV2lkdGhDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoaW50IGRldmljZVdpZHRoIFdSSVRF
IHNldERldmljZVdpZHRoIFJFQUQgZGV2aWNlV2lkdGggTk9USUZZIGRldmljZVdpZHRoQ2hhbmdl
ZCkKICAgICBRX1BST1BFUlRZKGludCBkZXZpY2VIZWlnaHQgV1JJVEUgc2V0RGV2aWNlSGVpZ2h0
IFJFQUQgZGV2aWNlSGVpZ2h0IE5PVElGWSBkZXZpY2VIZWlnaHRDaGFuZ2VkKQpAQCAtMjczLDcg
KzI3Myw2IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwg
OiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBmaWxlUGlj
a2VyIFJFQUQgZmlsZVBpY2tlciBXUklURSBzZXRGaWxlUGlja2VyIE5PVElGWSBmaWxlUGlja2Vy
Q2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFs
b2cgUkVBRCBkYXRhYmFzZVF1b3RhRGlhbG9nIFdSSVRFIHNldERhdGFiYXNlUXVvdGFEaWFsb2cg
Tk9USUZZIGRhdGFiYXNlUXVvdGFEaWFsb2dDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVFtbENv
bXBvbmVudCogY29sb3JDaG9vc2VyIFJFQUQgY29sb3JDaG9vc2VyIFdSSVRFIHNldENvbG9yQ2hv
b3NlciBOT1RJRlkgY29sb3JDaG9vc2VyQ2hhbmdlZCkKLQogICAgIFFfUFJPUEVSVFkoUVdlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQog
ICAgIFFfUFJPUEVSVFkoUVdlYktpdFRlc3QqIHRlc3QgUkVBRCB0ZXN0IENPTlNUQU5UIEZJTkFM
KQogICAgIFFfUFJPUEVSVFkoUVFtbExpc3RQcm9wZXJ0eTxRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0
ZT4gdXJsU2NoZW1lRGVsZWdhdGVzIFJFQUQgc2NoZW1lRGVsZWdhdGVzKQpAQCAtMzQ1LDYgKzM0
NCw4IEBAIHB1YmxpYzoKICAgICBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpOwogCisgICAgYm9vbCBwb2lu
dGVyTG9ja2VkKCkgY29uc3Q7CisKICAgICBib29sIHVzZURlZmF1bHRDb250ZW50SXRlbVNpemUo
KSBjb25zdDsKICAgICB2b2lkIHNldFVzZURlZmF1bHRDb250ZW50SXRlbVNpemUoYm9vbCBlbmFi
bGUpOwogCkBAIC0zNjMsNiArMzY0LDcgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBwb3N0
TWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHQoY29u
c3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1ZSYgdmFsdWUgPSBRSlNWYWx1ZSgpKTsK
ICAgICB2b2lkIGZpbmRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgRmluZEZsYWdzIG9wdGlv
bnMgPSAwKTsKKyAgICB2b2lkIHVubG9ja1BvaW50ZXIoKTsKIAogUV9TSUdOQUxTOgogICAgIHZv
aWQgbG9hZFZpc3VhbGx5Q29tbWl0dGVkKCk7CkBAIC0zODgsNiArMzkwLDggQEAgUV9TSUdOQUxT
OgogICAgIHZvaWQgcHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGhDaGFuZ2VkKCk7CiAgICAg
dm9pZCByZW1vdGVJbnNwZWN0b3JVcmxDaGFuZ2VkKCk7CiAgICAgdm9pZCB0ZXh0Rm91bmQoaW50
IG1hdGNoQ291bnQpOworICAgIHZvaWQgcG9pbnRlckxvY2tSZXF1ZXN0ZWQoKTsKKyAgICB2b2lk
IHBvaW50ZXJVbmxvY2tSZXF1ZXN0ZWQoKTsKIAogcHJpdmF0ZToKICAgICBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsKFFRdWlja1dlYlZpZXcqIHdlYlZpZXcsIFFRdWlja1dlYlZpZXdQcml2YXRl
KiB3ZWJWaWV3UHJpdmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5kZXggNDM0ZjQxMTI5ODdiNGUwMGE1NzRmNGYxNTdj
MWVmOGUxNjRhNzFlYS4uZjRlMDZhNDQ3MTM5NWRkNjFmZjFjYTBmODIzMDU3ZmM0OWIxYzdhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaApAQCAtMTIzLDYgKzEyMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVVc2Vy
U2NyaXB0cygpOwogICAgIHZvaWQgdXBkYXRlU2NoZW1lRGVsZWdhdGVzKCk7CiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIGJvb2wgcG9pbnRlckxvY2tlZCgpIGNvbnN0OworICAgIHZv
aWQgdW5sb2NrUG9pbnRlcigpOworI2VuZGlmCisKICAgICBRUG9pbnRGIGNvbnRlbnRQb3MoKSBj
b25zdDsKICAgICB2b2lkIHNldENvbnRlbnRQb3MoY29uc3QgUVBvaW50RiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVx
dWVzdC5jcHAKaW5kZXggNDU2OTdhMjJiNjYyYzI2OWUyM2I3NDlmNTlmOGZkMjI5ZjlhYmYzMi4u
NjVhZDc2NGM5NjYyYTk1OGM2NTNiNDgwNWYyN2VjMTEyY2E2YWFiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0
LmNwcApAQCAtMjcsMTAgKzI3LDExIEBACiAKIGNsYXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFBy
aXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewogcHVibGljOgotICAgIFFXZWJQZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0
VHlwZSByZXFUeXBlID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbikKKyAgICBR
V2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlP
cmlnaW4sIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwLCBXS05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIG5vdGlmeSA9IDAsIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1
ZXN0VHlwZSByZXFUeXBlID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbikKICAg
ICAgICAgOiBvcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICwgZ2VvbG9jYXRpb25SZXF1
ZXN0KGdlbykKICAgICAgICAgLCBub3RpZmljYXRpb25SZXF1ZXN0KG5vdGlmeSkKKyAgICAgICAg
LCBwb2ludGVyTG9ja1JlcXVlc3QocG9pbnRlcikKICAgICAgICAgLCB0eXBlKHJlcVR5cGUpCiAg
ICAgICAgICwgYWxsb3coZmFsc2UpCiAgICAgewpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgV0tSZXRhaW5QdHI8V0tTZWN1cml0eU9yaWdpblJlZj4gb3JpZ2luOwogICAgIFdLUmV0YWlu
UHRyPFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZj4gZ2VvbG9jYXRpb25SZXF1ZXN0
OwogICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IG5v
dGlmaWNhdGlvblJlcXVlc3Q7CisgICAgV0tSZXRhaW5QdHI8V0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0UmVmPiBwb2ludGVyTG9ja1JlcXVlc3Q7CiAgICAgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlOwogICAgIFF0V2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlJ
bmZvOwogICAgIGJvb2wgYWxsb3c7CkBAIC02MiwxNiArNjQsMjIgQEAgUVdlYlBlcm1pc3Npb25S
ZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVm
IG9yaWdpbiwKIAogUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6
OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFJlZiByZXF1ZXN0KQogewotICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25S
ZXF1ZXN0KG9yaWdpbiwgMCwgcmVxdWVzdCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpOb3RpZmlj
YXRpb24pOworICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwg
cmVxdWVzdCwgMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpOb3RpZmljYXRpb24pOworfQorCitR
V2ViUGVybWlzc2lvblJlcXVlc3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYg
cmVxdWVzdCkKK3sKKyAgICByZXR1cm4gbmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdChvcmlnaW4s
IDAsIDAsIHJlcXVlc3QsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UG9pbnRlckxvY2spOwogfQog
CiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlFXZWJQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5
T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBv
aW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgUVdl
YlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFPYmplY3QqIHBhcmVudCkKICAgICA6IFFPYmpl
Y3QocGFyZW50KQotICAgICwgZChuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShzZWN1
cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHR5cGUpKQorICAgICwgZChuZXcgUVdlYlBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZShzZWN1cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHBvaW50ZXIsIHR5
cGUpKQogewogfQogCkBAIC0xMDIsNiArMTEwLDE0IEBAIHZvaWQgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0OjpzZXRBbGxvdyhib29sIGFjY2VwdGVkKQogICAgICAgICAgICAgV0tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdERlbnkoZC0+bm90aWZpY2F0aW9uUmVxdWVzdC5nZXQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBvaW50ZXJMb2NrOiB7CisgICAgICAgIGlmIChh
Y2NlcHRlZCkKKyAgICAgICAgICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KGQtPnBvaW50ZXJMb2NrUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdERlbnkoZC0+cG9pbnRlckxvY2tSZXF1ZXN0
LmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMTE4LDQgKzEzNCwzIEBAIFF0V2ViU2Vj
dXJpdHlPcmlnaW4qIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIHJldHVybiAmKGQtPnNlY3VyaXR5SW5mbyk7CiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaAppbmRl
eCAwMDAyNTJiZGJlMWFiOGM1OGFhYTI5NzdhNzk5M2Q1ZDM5MDY0OWE0Li5jNTQ4NTE4ZjdhNDEx
MTM2ZDFiMWJlNWNhYzc0MWY2YzU1YzIwM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8UXRDb3JlL3FzaGFyZWRkYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1
cml0eU9yaWdpbi5oPgogCiBjbGFzcyBRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOwpAQCAt
NDEsMTEgKzQyLDEzIEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dCA6IHB1YmxpYyBRT2JqZWN0IHsKIHB1YmxpYzoKICAgICBlbnVtIFJlcXVlc3RUeXBlIHsKICAg
ICAgICAgR2VvbG9jYXRpb24sCi0gICAgICAgIE5vdGlmaWNhdGlvbgorICAgICAgICBOb3RpZmlj
YXRpb24sCisgICAgICAgIFBvaW50ZXJMb2NrCiAgICAgfTsKIAogICAgIHN0YXRpYyBRV2ViUGVy
bWlzc2lvblJlcXVlc3QqIGNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RSZWYpOwogICAgIHN0YXRpYyBRV2ViUGVybWlzc2lvblJlcXVlc3Qq
IGNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKKyAgICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1
cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmKTsKICAgICB2
aXJ0dWFsIH5RV2ViUGVybWlzc2lvblJlcXVlc3QoKTsKIAogICAgIFJlcXVlc3RUeXBlIHR5cGUo
KSBjb25zdDsKQEAgLTYwLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBRV2ViUGVybWlzc2lvblJl
cXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFJlZiBub3RpZnkgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXIgPSAwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlID0gR2VvbG9jYXRp
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2JqZWN0KiBwYXJlbnQgPSAwKTsKIApA
QCAtNjcsNSArNzEsNCBAQCBwcml2YXRlOgogICAgIFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50
ZXI8UVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZT4gZDsKIH07CiAKLQogI2VuZGlmIC8vIHF3
ZWJwZXJtaXNzaW9ucmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJsb2NrLnFtbCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
cG9pbnRlcmxvY2sucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZjdiZTFkYjcxZjI1M2MxOTI1MDRiZjQzNGVm
NzQxZThiNGUzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJsb2NrLnFtbApAQCAtMCww
ICsxLDExNSBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0
IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAxLjAKKworV2ViVmll
dyB7CisgICAgaWQ6IHdlYlZpZXcKKyAgICB3aWR0aDogMjAwCisgICAgaGVpZ2h0OiAyMDAKKwor
ICAgIHByb3BlcnR5IGJvb2wgZXhwZWN0ZWRQZXJtaXNzaW9uOiBmYWxzZQorCisgICAgU2lnbmFs
U3B5IHsKKyAgICAgICAgaWQ6IHBlcm1pc3Npb25TcHkKKyAgICAgICAgdGFyZ2V0OiBleHBlcmlt
ZW50YWwKKyAgICAgICAgc2lnbmFsTmFtZTogInBlcm1pc3Npb25SZXF1ZXN0ZWQiCisgICAgfQor
CisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHBvaW50ZXJMb2NrU3B5CisgICAgICAgIHRh
cmdldDogZXhwZXJpbWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJwb2ludGVyTG9ja1JlcXVl
c3RlZCIKKyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogcG9pbnRlclVubG9j
a1NweQorICAgICAgICB0YXJnZXQ6IGV4cGVyaW1lbnRhbAorICAgICAgICBzaWduYWxOYW1lOiAi
cG9pbnRlclVubG9ja1JlcXVlc3RlZCIKKyAgICB9CisKKyAgICBleHBlcmltZW50YWwub25QZXJt
aXNzaW9uUmVxdWVzdGVkOiB7CisgICAgICAgIC8vIE11c3QgYmUgZmFsc2UgYnkgZGVmYXVsdAor
ICAgICAgICBpZiAoIXBlcm1pc3Npb24uYWxsb3cpIHsKKyAgICAgICAgICAgcGVybWlzc2lvbi5h
bGxvdyA9IHRydWUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgY29uc29sZS5sb2coIkZh
aWw6IHBlcm1pc3Npb24gbXVzdCBiZSBzZXQgdG8gZmFsc2UiKQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHBlcm1pc3Npb24udHlwZSA9PSBQZXJtaXNzaW9uUmVxdWVzdC5Qb2ludGVyTG9jaykg
eworICAgICAgICAgICAgY29uc29sZS5sb2coIlBlcm1pc3Npb24gaXMgUG9pbnRlckxvY2siKQor
ICAgICAgICB9CisgICAgfQorCisgICAgZXhwZXJpbWVudGFsLm9uUG9pbnRlckxvY2tSZXF1ZXN0
ZWQ6IHsKKyAgICAgICAgY29uc29sZS5sb2coIlBvaW50ZXJMb2NrIGlzIHJlcXVlc3RlZCIpCisg
ICAgfQorCisgICAgZXhwZXJpbWVudGFsLm9uUG9pbnRlclVubG9ja1JlcXVlc3RlZDogeworICAg
ICAgICBjb25zb2xlLmxvZygiUG9pbnRlciBVbmxvY2sgaXMgcmVxdWVzdGVkIikKKyAgICB9CisK
KyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3UG9pbnRlckxvY2sgUmVxdWVz
dCIKKworICAgICAgICAvLyBEZWxheWVkIHdpbmRvd1Nob3duIHRvIHdvcmthcm91bmQgcHJvYmxl
bXMgd2l0aCBRdDUgaW4gZGVidWcgbW9kZS4KKyAgICAgICAgd2hlbjogZmFsc2UKKyAgICAgICAg
VGltZXIgeworICAgICAgICAgICAgcnVubmluZzogcGFyZW50LndpbmRvd1Nob3duCisgICAgICAg
ICAgICByZXBlYXQ6IGZhbHNlCisgICAgICAgICAgICBpbnRlcnZhbDogMQorICAgICAgICAgICAg
b25UcmlnZ2VyZWQ6IHBhcmVudC53aGVuID0gdHJ1ZQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gaW5pdCgpIHsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcG9pbnRl
ckxvY2tSZXF1ZXN0V2l0aEZvcmNlZEV4aXQoKSB7CisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5
LmNsZWFyKCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFyKCkKKworICAgICAgICAg
ICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3BvaW50ZXJsb2NrMS5o
dG1sIikKKyAgICAgICAgICAgIHBlcm1pc3Npb25TcHkud2FpdCgpCisgICAgICAgICAgICBwb2lu
dGVyTG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlzc2lvblNweS5jb3Vu
dCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlckxvY2tTcHkuY291bnQsIDEpCisgICAg
ICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCB0cnVlKQorCisgICAg
ICAgICAgICBwb2ludGVyVW5sb2NrU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIGV4cGVyaW1lbnRh
bC51bmxvY2tQb2ludGVyKCkKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHkud2FpdCgpCisg
ICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJVbmxvY2tTcHkuY291bnQsIDEpCisgICAgICAgICAg
ICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCBmYWxzZSkKKworICAgICAgICAg
ICAgLy8gT25seSB0aGUgUG9pbnRlckxvY2tSZXF1ZXN0ZWQgbm90aWZpY2F0aW9uIGlzIGV4cGVj
dGVkLgorICAgICAgICAgICAgLy8gQSBwZXJtaXNzaW9uIG11c3QgYmVlbiBjYWNoZWQKKyAgICAg
ICAgICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0g
UXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbCIpCisgICAgICAgICAg
ICBwb2ludGVyTG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlckxvY2tT
cHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9j
a2VkLCB0cnVlKQorCisgICAgICAgICAgICBwb2ludGVyVW5sb2NrU3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGV4cGVyaW1lbnRhbC51bmxvY2tQb2ludGVyKCkKKyAgICAgICAgICAgIHBvaW50ZXJV
bmxvY2tTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJVbmxvY2tTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCBm
YWxzZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcG9pbnRlckxvY2tSZXF1
ZXN0V2l0aFNlbGZFeGl0KCkgeworICAgICAgICAgICAgcGVybWlzc2lvblNweS5jbGVhcigpCisg
ICAgICAgICAgICBwb2ludGVyTG9ja1NweS5jbGVhcigpCisgICAgICAgICAgICBwb2ludGVyVW5s
b2NrU3B5LmNsZWFyKCkKKworICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVy
bCgiLi4vY29tbW9uL3BvaW50ZXJsb2NrMi5odG1sIikKKyAgICAgICAgICAgIHBlcm1pc3Npb25T
cHkud2FpdCgpCisgICAgICAgICAgICBwb2ludGVyTG9ja1NweS53YWl0KCkKKyAgICAgICAgICAg
IHBvaW50ZXJVbmxvY2tTcHkud2FpdCgpCisKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlzc2lv
blNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlckxvY2tTcHkuY291bnQs
IDEpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJVbmxvY2tTcHkuY291bnQsIDEpCisgICAg
ICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCBmYWxzZSkKKyAgICAg
ICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2sxLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjJmYTZjN2U4NzZlMDZmZDQ1Mzc3MWQzODU5MGJkZDIzYzQxNDc1OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1s
PgorPGhlYWQ+CisgIDx0aXRsZT5Qb2ludGVyIExvY2sgUmVxdWVzdCB0ZXN0IChuZWVkcyBmb3Jj
ZWQgdW5sb2NrKTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRh
cmdldCI+PC9kaXY+Cis8L2Rpdj4KKyAgPHNjcmlwdD4KKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgdGFyZ2V0ZGl2LndlYmtpdFJlcXVlc3RQ
b2ludGVyTG9jaygpOworICA8L3NjcmlwdD4KKyAgUG9pbnRlciBMb2NrIFJlcXVlc3QgVGVzdCAo
bmVlZHMgZm9yY2VkIHVubG9jaykKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJs
b2NrMi5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE4ODkwYTVjZDg0MWIwOWVj
MWJlMWRmNTYzNTRlNjk3YWIwOTk0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMi5odG1s
CkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5Qb2ludGVyIExvY2sg
UmVxdWVzdCB0ZXN0ICh1bmxvY2tzIHNlbGYpPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRp
dj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorICA8c2NyaXB0PgorICAgIGRv
Y3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGlmIChkb2N1bWVudC53ZWJraXRQb2ludGVyTG9ja0VsZW1lbnQgPT0gdGFyZ2V0ZGl2KQorICAg
ICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdFBvaW50ZXJMb2NrKCk7CisgICAgfTsKKyAgICB0
YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgdGFyZ2V0
ZGl2LndlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOworICA8L3NjcmlwdD4KKyAgUG9pbnRlciBM
b2NrIFJlcXVlc3QgVGVzdCAodW5sb2NrcyBzZWxmKQorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MmE0Y2U4NWQ0
Njk3ZGM1MWNmZmJhMjc5MWFkMjU1Yjc0Nzc0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVj
dHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5ICptYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChtYW5hZ2VyKSk7Cit9CisKK1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QoUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbWFuYWdlcikKKyAgICA6IG1fbWFuYWdl
cihtYW5hZ2VyKQoreworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmFs
bG93KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
YW5hZ2VyLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24odHJ1ZSk7Cisg
ICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
OjpkZW55KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tYW5hZ2VyLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oZmFsc2Up
OworICAgIG1fbWFuYWdlciA9IDA7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDU3MzA3NzY3OWQz
N2M0YjQ5YTcwNzRlNTQ2ZDYwMTAwZjAzODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25p
Y3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OworCitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFR5
cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0PiBjcmVhdGUoUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSop
OworCisgICAgdm9pZCBhbGxvdygpOworICAgIHZvaWQgZGVueSgpOworCisgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Kik7CisKKyAgICBQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtX21hbmFnZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBPSU5URVJfTE9DSworCisjZW5kaWYgLy8g
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAwNWNj
MTFjZGRmNGE5NTMyMDQ0NmM4MGUzYjY0ZjE1NzM5ODkwMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
TEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKworI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCIK
KyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV9wYWdl
KHBhZ2UpCit7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZVJlcXVlc3QoKQoreworICAgIGlmIChtX3BlbmRpbmdSZXF1ZXN0KSB7
CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3QtPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9wZW5k
aW5nUmVxdWVzdC5jbGVhcigpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0PiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpjcmVhdGVSZXF1ZXN0KCkKK3sKKyAgICBSZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdD4gcmVxdWVzdCA9IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlz
KTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXR1cm4gcmVxdWVzdC5y
ZWxlYXNlKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3cp
Cit7CisgICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX3BlbmRpbmdSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVy
bWlzc2lvbkRlY2lzaW9uKGFsbG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYzJkMTM4ZTNkMzk3Y2I2NTUwMDExMmFkY2YwYzM2MjliM2VhZWY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBM
RyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAorI2RlZmluZSBQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisK
KyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Kik7CisKKyAgICB2b2lkIGlu
dmFsaWRhdGVSZXF1ZXN0KCk7CisKKyAgICBQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVBvaW50ZXJM
b2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3cpOworCitwcml2YXRlOgorICAgIFJlZlB0
cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBtX3BlbmRpbmdSZXF1ZXN0OworICAgIFdl
YlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBQT0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmE0MWJiMzE0ODU4ZTJjZWU2MTc2ZWJmNjlkZjRhZTZmYTk5NjZkYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eT4gV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJv
eHkqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb2ludGVyTG9ja01hbmFn
ZXJQcm94eShwYWdlKSk7Cit9CisKK1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFn
ZSkKKyAgICAsIG1fd2ViVmlldygwKQorICAgICwgbV9pc1BvaW50ZXJMb2NrZWQoZmFsc2UpCit7
CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgdGhpcyk7Cit9CisKK1dlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5Ojp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lk
IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpzZXRXZWJWaWV3KFBsYXRmb3JtV2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworfQorCitib29sIFdlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5Ojppc1BvaW50ZXJMb2NrZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2lzUG9pbnRlckxvY2tlZDsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94
eTo6cmVxdWVzdFBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlICYmIG1fcGFnZS0+aXNW
YWxpZCgpKQorICAgICAgICBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKK30KKwordm9pZCBXZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQoreworICAgIGlm
IChtX3BhZ2UgJiYgbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgICAgIGRpZExvc2VQb2ludGVyTG9j
aygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wODUwNzg5YWVkNGMxMGU1YWM5NWY0NjEwMjhmYTdkZWNhNDM5NzY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNU
Uk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eV9oCisjZGVm
aW5lIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBRUXVpY2tXZWJW
aWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiBRUXVpY2tXZWJWaWV3IFBsYXRm
b3JtV2ViVmlldzsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5PiwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdl
UHJveHkqKTsKKyAgICB2aXJ0dWFsIH5XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSgpOworCisg
ICAgdm9pZCBzZXRXZWJWaWV3KFBsYXRmb3JtV2ViVmlldyopOworCisgICAgYm9vbCBpc1BvaW50
ZXJMb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAg
IHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRl
ckxvY2soKTsKKworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCByZXF1
ZXN0UG9pbnRlclVubG9jaygpOworCitwcm90ZWN0ZWQ6CisKKyAgICBleHBsaWNpdCBXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqKTsKKworICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOworICAgIFBsYXRmb3JtV2ViVmlldyogbV93ZWJWaWV3OworICAgIGJvb2wgbV9pc1Bv
aW50ZXJMb2NrZWQ7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJS
SURFOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlfaAorCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZjEwZmQ5YjMwNTg1OGQ3NjA3MDUyMzIxNDRjMmU2YjkwYTU3YjhmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMKKyMgQ29w
eXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCittZXNzYWdlcyAtPiBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSB7Cisg
ICAgUmVxdWVzdFBvaW50ZXJMb2NrKCkKKyAgICBSZXF1ZXN0UG9pbnRlclVubG9jaygpCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9X
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzljY2U3NDAwYjk2YmNmYTc2ZjM5YTNlZmRmMDQ2ODdmYzlhZWUw
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9j
ay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXku
aCIKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2lu
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGNoYXIqIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5IjsKK30KKworUGFzc1JlZlB0cjxXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkoY29udGV4dCkpOwor
fQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQorICAgIDogV2ViQ29u
dGV4dFN1cHBsZW1lbnQoY29udGV4dCkKK3sKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyUHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblByb3ZpZGVyICpwcm92aWRlcikKK3sKKyAgICBtX3Byb3ZpZGVyLmluaXRpYWxp
emUocHJvdmlkZXIpOworICAgIG1fcHJvdmlkZXIuYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcih0aGlzKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJv
eHk6OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIG1fcHJvdmlkZXIucmVtb3ZlUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcih0aGlzKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQorewor
ICAgIG1fcHJvdmlkZXIucmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcih0aGlzKTsK
K30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnJlZldlYkNv
bnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCit2b2lkIFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cG9wdWxhdGVDb3B5T2ZQb2ludGVyTG9ja1Blcm1p
c3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYgcGVybWlzc2lvbnMpCit7CisgICAgUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IGtub3duUGVybWlzc2lvbnMgPSBtX3Byb3ZpZGVyLnBvaW50
ZXJMb2NrUGVybWlzc2lvbnMoKTsKKworICAgIGlmICgha25vd25QZXJtaXNzaW9ucykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcGVybWlzc2lvbnMuY2xlYXIoKTsKKyAgICBSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IGtub3duT3JpZ2lucyA9IGtub3duUGVybWlzc2lvbnMtPmtleXMoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtub3duT3JpZ2lucy0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgV2ViU3RyaW5nKiBvcmlnaW4gPSBrbm93bk9yaWdpbnMtPmF0PFdlYlN0cmluZz4oaSk7Cisg
ICAgICAgIHBlcm1pc3Npb25zLnNldChvcmlnaW4tPnN0cmluZygpLCBrbm93blBlcm1pc3Npb25z
LT5nZXQ8V2ViQm9vbGVhbj4ob3JpZ2luLT5zdHJpbmcoKSktPnZhbHVlKCkpOworICAgIH0KK30K
Kwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
VXBkYXRlUG9pbnRlckxvY2tQb2xpY3koY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Ym9vbCBhbGxvd2VkKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcjo6RGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihvcmlnaW4t
PnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyhJbW11
dGFibGVBcnJheSogb3JpZ2lucykKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7CisgICAgaWYgKCFzaXpl
KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5TdHJpbmdzOwor
ICAgIG9yaWdpblN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBvcmlnaW5TdHJpbmdzLmFw
cGVuZChvcmlnaW5zLT5hdDxXZWJTZWN1cml0eU9yaWdpbj4oaSktPnRvU3RyaW5nKCkpOworCisg
ICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXI6OkRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKG9yaWdpblN0
cmluZ3MpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFkNWQyMzUyZmU5MzU1YTNmZGVlYjNlNWJlMDRi
YTI4MjRjZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVu
dC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIFdlYkNvbnRl
eHQ7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlw
ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOworCisgICAgdm9pZCBpbml0aWFsaXplUHJvdmlkZXIo
Y29uc3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciopOworCisgICAgdm9pZCBwb3B1
bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMoSGFzaE1hcDxTdHJpbmcsIGJvb2w+Jik7
CisKKyAgICB2b2lkIHByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3koY29uc3QgV2Vi
U2VjdXJpdHlPcmlnaW4qLCBib29sKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRl
ckxvY2tQb2xpY2llcyhJbW11dGFibGVBcnJheSogb3JpZ2lucyk7CisKKyAgICB1c2luZyBBUElP
YmplY3Q6OnJlZjsKKyAgICB1c2luZyBBUElPYmplY3Q6OmRlcmVmOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eShXZWJDb250ZXh0
Kik7CisKKyAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9z
ZShXZWJQcm9jZXNzUHJveHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
UHJvdmlkZXIgbV9wcm92aWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUE9JTlRFUl9MT0NLCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODAzNmMwODRlMjY0YzA4NGZjYWJmZDYyOWE5Y2M1MjNhNGVmYTk2
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9j
ay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
TEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgiCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgor
I2luY2x1ZGUgIk11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldl
YlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjphZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSogbWFuYWdlcikKK3sKKyAgICBp
ZiAobV9jbGllbnQuYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9j
bGllbnQuYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlclByb3h5KiBtYW5hZ2VyKQoreworICAgIGlmIChtX2NsaWVudC5yZW1v
dmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX2NsaWVudC5yZW1vdmVQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cG9pbnRlckxvY2tQZXJtaXNzaW9ucygpCit7CisgICAg
aWYgKG1fY2xpZW50LnBvaW50ZXJMb2NrUGVybWlzc2lvbnMpCisgICAgICAgIHJldHVybiBhZG9w
dFJlZih0b0ltcGwobV9jbGllbnQucG9pbnRlckxvY2tQZXJtaXNzaW9ucyhtX2NsaWVudC5jbGll
bnRJbmZvKSkpOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZSgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xP
Q0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg5ZWE0ZjU0NGQ3Yzc2NTc0MDZlNjYxNmU2ZjQ5ZTdkYzlmZmFlZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
TEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaAorCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1
ZGUgIldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2Ns
YXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTsKKworY2xhc3MgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIsIGtXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyQ3Vy
cmVudFZlcnNpb24+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZFBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Kik7CisgICAgdm9p
ZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm94eSopOworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4g
cG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2lu
dGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eVF0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYWNlYTNkNDk5Njc4ZWNkNzM2Y2M1OTVhODNhNTgyZGQ4MDk5NTkx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExH
IEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQb2lu
dGVyTG9ja01hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisjaWYgSEFWRShRVFFVSUNLKQorI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQorewor
I2lmIEhBVkUoUVRRVUlDSykKKyAgICBpZiAobV93ZWJWaWV3KQorICAgICAgICBlbWl0IG1fd2Vi
Vmlldy0+ZXhwZXJpbWVudGFsKCktPnBvaW50ZXJMb2NrUmVxdWVzdGVkKCk7CisjZW5kaWYKKwor
ICAgIG1faXNQb2ludGVyTG9ja2VkID0gdHJ1ZTsKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpE
aWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7Cisg
ICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpE
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQg
V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisjaWYg
SEFWRShRVFFVSUNLKQorICAgIGlmIChtX3dlYlZpZXcpCisgICAgICAgIGVtaXQgbV93ZWJWaWV3
LT5leHBlcmltZW50YWwoKS0+cG9pbnRlclVubG9ja1JlcXVlc3RlZCgpOworI2VuZGlmCisKKyAg
ICBtX2lzUG9pbnRlckxvY2tlZCA9IGZhbHNlOworICAgIGlmICAobV9wYWdlKQorICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpE
aWRMb3NlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMzFlZDI5OTNiOGFjNzE2MmRhYjA1
NTUyOTdhYmI3YWMzY2UzOGQxYi4uODcwOTAxY2U3NmNjMGE4Mjc1MzRhOTYzNGM1OGUzMjM5ZDVk
OTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNDcsMTAg
KzQ3LDExIEBACiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViTWVtb3J5U2FtcGxl
ci5oIgorI2luY2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgIldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE4MCw2ICsxODEsOSBAQCBXZWJDb250
ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYg
aW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgYWRkU3VwcGxl
bWVudDxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4oKTsKICNlbmRpZgorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgYWRkU3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHk+KCk7CisjZW5kaWYKIAogICAgIGNvbnRleHRzKCkuYXBwZW5kKHRoaXMpOwog
CkBAIC01NDcsNiArNTUxLDEwIEBAIFdlYlByb2Nlc3NQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRl
TmV3V2ViUHJvY2VzcygpCiAgICAgc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk+KCktPnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9uUGVybWlzc2lvbnMocGFyYW1ldGVycy5u
b3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgc3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+
KCktPnBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyhwYXJhbWV0ZXJzLnBvaW50
ZXJMb2NrUGVybWlzc2lvbnMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzID0gbV91c2VzTmV0d29ya1Byb2Nl
c3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNGQyMjFkNDE3NjRlODZiZjAzNDY2NWYzNzBmOWYzOTk3ZDNmYTQ4YS4uOGY2MjE2NmZhNDE0
MmFhOTg1NTIwOWQ5OWRjNzE0MWQwYzY5MWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc0LDYgKzc0LDggQEAKICNpbmNsdWRlICJXZWJQYWdlR3Jv
dXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5o
IgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQb3B1cEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC0yNDEsNiArMjQzLDkgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNsaWVudCwgUGFzc1JlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IHAKICAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJkVXNlckFnZW50KCkpCiAgICAg
LCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKHRoaXMpCiAgICAgLCBtX25v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcih0aGlzKQorI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisgICAgLCBtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKHRo
aXMpCisjZW5kaWYKICAgICAsIG1fZXN0aW1hdGVkUHJvZ3Jlc3MoMCkKICAgICAsIG1faXNJbldp
bmRvdyhtX3BhZ2VDbGllbnQtPmlzVmlld0luV2luZG93KCkpCiAgICAgLCBtX2lzVmlzaWJsZSht
X3BhZ2VDbGllbnQtPmlzVmlld1Zpc2libGUoKSkKQEAgLTMzNSw2ICszNDAsOSBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gcAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxT
Y3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwog
I2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBtX3BvaW50ZXJMb2NrTWFuYWdl
ciA9IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7CisjZW5kaWYKICNp
ZiBFTkFCTEUoVklCUkFUSU9OKQogICAgIG1fdmlicmF0aW9uID0gV2ViVmlicmF0aW9uUHJveHk6
OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgpAQCAtNDg3LDcgKzQ5NSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
ICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGUodGhpcyk7CiAjZW5kaWYKLQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgbV9wb2lu
dGVyTG9ja01hbmFnZXIgPSBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMp
OworI2VuZGlmCiAgICAgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAogICAgIG1fcGFnZUNsaWVudC0+
ZGlkUmVsYXVuY2hQcm9jZXNzKCk7CkBAIC0zMDQxLDYgKzMwNTEsMTMgQEAgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94
eSogV2ViUGFnZVByb3h5Ojpwb2ludGVyTG9ja01hbmFnZXIoKQoreworICAgIHJldHVybiBtX3Bv
aW50ZXJMb2NrTWFuYWdlci5nZXQoKTsKK30KKyNlbmRpZgorCiAvLyBCYWNrRm9yd2FyZExpc3QK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbSh1aW50NjRfdCBpdGVtSUQp
CkBAIC0zODkwLDYgKzM5MDcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRl
clByb2Nlc3NFeGl0ZWQoKQogCiAgICAgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVl
c3QoKTsKKyNlbmRpZgorCiAgICAgbV90b29sVGlwID0gU3RyaW5nKCk7CiAKICAgICBtX21haW5G
cmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxzZTsKQEAgLTQwOTksNiArNDEyMCwxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24odWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbgogICAgICAgICByZXF1ZXN0LT5kZW55KCk7CiB9CiAK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2lu
dGVyTG9ja1Blcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCit7CisgICAgUmVm
UHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpOworICAgIFJlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0PiByZXF1ZXN0ID0gbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcmVhdGVSZXF1ZXN0KCk7CisKKyAgICBpZiAoIW1fdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9y
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3Qu
Z2V0KCkpKQorICAgICAgICByZXF1ZXN0LT5kZW55KCk7Cit9CisjZW5kaWYgLy8gUE9JTlRFUl9M
T0NLCisKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBT
dHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewogICAgIG1f
cHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4oKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9y
aWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDRkYjYyZTkxYTIyYTgzMTYyYTYyMWM1MWM0ZDI3ZGYwNmRhOWM1NDAu
LmFmOGE3OTZhOWUxMzNiNGVlNDQ4ZDIxODBlNDg2YmQyMmZjNGZmOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJM
YXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKQEAgLTE0Niw2ICsxNDcsNyBAQCBjbGFzcyBXZWJLZXli
b2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CitjbGFzcyBXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlVSTFJlcXVl
c3Q7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMjY0LDYgKzI2NiwxMCBAQCBwdWJsaWM6CiAg
ICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogZnVsbFNjcmVlbk1hbmFnZXIoKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXJQ
cm94eSogcG9pbnRlckxvY2tNYW5hZ2VyKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50Kik7CiAjZW5kaWYKQEAgLTg4MCw2ICs4ODYsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRf
dCBub3RpZmljYXRpb25JRCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQg
cmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZyk7
CisjZW5kaWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpAQCAtMTA4OCw2ICsxMDk4LDEwIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IG1fZnVsbFNjcmVlbk1hbmFn
ZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUmVmUHRyPFdlYlBv
aW50ZXJMb2NrTWFuYWdlclByb3h5PiBtX3BvaW50ZXJMb2NrTWFuYWdlcjsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IG1fdmli
cmF0aW9uOwogI2VuZGlmCkBAIC0xMTE5LDYgKzExMzMsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyOwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9nZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICAgICBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjsKKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKIAogICAgIGRvdWJsZSBtX2VzdGltYXRlZFByb2dy
ZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA4YzFkZTkwOGNjZDY4YzlmNTJkYzAwMGVhOTYxYzUxM2UyNzUxMmMzLi4z
MTcxNmRiYWEyMTViNDFhMDUzMzYwYzlmODE4N2I4YmZjYzhhNTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyNCw2ICsy
MjQsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDbGVhck5vdGlmaWNhdGlv
bnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpCiAgICAgRGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgUmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihXVEY6OlN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyKQorI2VuZGlmCisKICAgICAjIFNwZWxsaW5nIGFuZCBncmFtbWFyIG1lc3NhZ2Vz
CiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgIAogICAgIENoZWNrVGV4dE9mUGFyYWdy
YXBoKFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpIC0+IChWZWN0b3I8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5jcHAKaW5kZXggYmZhNGQ4ZTQzZTdlYjRmZjY3NTNhY2IzZWJmYzdj
MzgxZmIyNDExYy4uOTJjMTVmYWM1ZDAwYzFjNTY4YjZmYjFjYzczYmY2M2NiY2I5MjczMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKKyNp
bmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViTnVtYmVyLmgiCkBAIC0zNjUsNiArMzY2LDE1IEBAIGJvb2wgV2ViVUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSogcGFnCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViVUlDbGllbnQ6OmRlY2lk
ZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdl
LCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
KiBwZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZv
clBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Qo
dG9BUEkocGFnZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKHBlcm1pc3Npb25SZXF1ZXN0KSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGZsb2F0IFdlYlVJQ2xp
ZW50OjpoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmhlYWRlckhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlVJQ2xpZW50LmgKaW5kZXggOTgxM2Y1NzU0YzgxM2JmMTY5YzZiM2M5MjhiOGU1YWE1
ZmJhNDNiNy4uMjUxYWQ5ZTA2ZWQxMTE4NzA3YmIyZTFmMmVkNWI5YzZjOTg4YmNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
SW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFz
cyBOYXRpdmVXZWJXaGVlbEV2ZW50OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q7CitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgV2ViQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgcnVuT3BlblBhbmVs
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwg
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopOwogICAgIGJvb2wgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVBy
b3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkqKTsKICAgICBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QqKTsKKyAgICBib29sIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0Kik7CiAKICAgICAvLyBQcmludGluZy4KICAgICBmbG9hdCBoZWFk
ZXJIZWlnaHQoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaAppbmRleCBiNzAwNDQwNzY4MzRlMjllM2Jh
NTkzZjc5YzUwMzAzODlkZjU5OTU2Li5hM2IwNGExY2NhZGZjZWNhNWYzZTRiMjU1OWM3ZTBlZGU5
N2I1ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dS
dW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIu
aApAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0Rm9yUHJveHlBdXRoZW50
aWNhdGlvbihjb25zdCBRU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgUVN0
cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUpOwogICAgIGJvb2wgaW5pdEZvckZpbGVQaWNrZXIoY29u
c3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZXMsIGJvb2wgYWxsb3dNdWx0aXBsZSk7CiAgICAg
Ym9vbCBpbml0Rm9yRGF0YWJhc2VRdW90YURpYWxvZyhjb25zdCBRU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIGNvbnN0IFFTdHJpbmcmIGRpc3BsYXlOYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBxdWlu
dDY0IGN1cnJlbnRRdW90YSwgcXVpbnQ2NCBjdXJyZW50T3JpZ2luVXNhZ2UsIHF1aW50NjQgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHF1aW50NjQgZXhwZWN0ZWRVc2FnZSk7Ci0KICAgICB2b2lkIHJ1
bigpOwogCiAgICAgUVF1aWNrSXRlbSogZGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9kaWFsb2cu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlD
bGllbnQuY3BwCmluZGV4IGFmODg0MjNjNmRhMGVkNGQ5YWM1M2VlODNjYTA2YzQwNzM4YmQ4Nzgu
LmIyM2U1MjZkNWU3OTg3NzlhYjY2NDc1ODYyYzRjNDlmMjliMmQ5ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcApAQCAtNDksNiAr
NDksNyBAQCBRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgdWlDbGllbnQuZXhjZWVkZWREYXRh
YmFzZVF1b3RhID0gZXhjZWVkZWREYXRhYmFzZVF1b3RhOwogICAgIHVpQ2xpZW50LmRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CisgICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCA9IHBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CiAKQEAgLTE3Myw1ICsx
NzQsMTMgQEAgdm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICB0b1F0V2ViUGFnZVVJQ2xpZW50
KGNsaWVudEluZm8pLT5wZXJtaXNzaW9uUmVxdWVzdChyZXEpOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvclBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
LCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKIAorICAg
IFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogcmVxID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVh
dGUob3JpZ2luLCByZXF1ZXN0KTsKKyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8p
LT5wZXJtaXNzaW9uUmVxdWVzdChyZXEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKaW5kZXgg
ZThhYWE4MjZiN2RkNjBhNjgxYmQ3NDhlZDMxNmJmMjZlMGRkOTA2OC4uODRhNDM5ZDE3MDk5MWE0
MjMwMmU4OTI5MzJlNDNlOTM0MTY1ZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXS1BhZ2VS
ZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVmIGRhdGFiYXNl
TmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50
UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVk
VXNhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBwb2xpY3lG
b3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAK
ICAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgUVVybCBtX2xhc3RIb3ZlcmVkVVJM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnByaQppbmRleCBhMWRhMDQ1MWFjNWFmOGYxZjIzZDE3ZDQzYzA1ZGFlOTE5OTY2
ZDhmLi5lZDkzZjFiODRkNzMyYTY3MTFjZWZmOTkwN2Y0ZDcyZmI0OWM4OTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
LnByaQpAQCAtMzksNiArMzksNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElS
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nl
c3MvTGF1bmNoZXIgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBc
CisgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAgICAgJCRTT1VSQ0Vf
RElSL1VJUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL1N0b3Jh
Z2UgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvcXQgXApAQCAtNTksNiArNjAsNyBAQCBJ
TkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cyBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZSBcCisgICAgJCRTT1VSQ0VfRElSL1dlYlBy
b2Nlc3MvUG9pbnRlckxvY2sgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1Jlc291cmNl
Q2FjaGUgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQkU09V
UkNFX0RJUi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBkNDVlNDhlODhkYWMxNDdjMGFmYmVjYzc2NTFhMDQ2ZjIzODNhYzIwLi4w
YTQ3OWZkYWQyMDliNWM3YjVmNzRmMjllMTAwNGQ3ODM4OGUzZGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVl
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJM
YXllci5oIgogI2luY2x1ZGUgIldlYlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgpAQCAtNTE2LDMgKzUxNyw1NiBAQCB2b2lkIFdLQnVuZGxlUGFnZVN0b3BFeHRlbmRpbmdJ
bmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKFdLQnVuZGxlUGFnZVJlZiBwYQogewogICAg
IHRvSW1wbChwYWdlUmVmKS0+c3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb24odG9rZW4pOwogfQorCit2b2lkIFdLQnVuZGxlUGFnZVNldFBvaW50ZXJMb2NrQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCog
d2tDbGllbnQpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVf
UE9JTlRFUl9MT0NLCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5k
bGVQb2ludGVyTG9ja0NsaWVudCh3a0NsaWVudCk7CisjZW5kaWYKK30KKworYm9vbCBXS0J1bmRs
ZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sK
KyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sK
KyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRS
ZXF1ZXN0UG9pbnRlckxvY2soKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK3ZvaWQgV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jayhXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKK3sKKyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVO
QUJMRV9QT0lOVEVSX0xPQ0sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9j
a01hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jaygpOworI2VuZGlmCit9CisKK2Jv
b2wgV0tCdW5kbGVQYWdlSXNQb2ludGVyTG9ja2VkKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQor
eworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9D
SworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1Bv
aW50ZXJMb2NrZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3Zv
aWQgV0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5U
RVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZEFj
cXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmlu
ZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1w
bChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZE5vdEFjcXVpcmVQb2ludGVyTG9j
aygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxv
Y2tNYW5hZ2VyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworI2VuZGlmCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaAppbmRleCAxMDNmNDc4YTEyMzVjOGQ3NDljMjQ2ZDQwNmI4MDJhODllN2Y5
NTExLi5iMGQyNGQyNDBlNzZjNDU2MjJjMTc3OTVhMjU0YjY1MjVjY2ZhOTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQwMyw2ICs0MDMsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Owog
CiBlbnVtIHsga1dLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRDdXJyZW50VmVyc2lvbiA9IDEg
fTsKIAordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU3VwcG9ydHNQb2ludGVyTG9jaykoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpOwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlUmVxdWVzdFBv
aW50ZXJMb2NrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRs
ZVBhZ2VSZXF1ZXN0UG9pbnRlclVubG9jaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworCitzdHJ1
Y3QgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisKKyAgICAvLyBWZXJzaW9uIDA6CisgICAg
V0tCdW5kbGVQYWdlU3VwcG9ydHNQb2ludGVyTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdXBwb3J0c1BvaW50ZXJMb2NrOworICAgIFdLQnVuZGxlUGFnZVJlcXVlc3RQ
b2ludGVyTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBv
aW50ZXJMb2NrOworICAgIFdLQnVuZGxlUGFnZVJlcXVlc3RQb2ludGVyVW5sb2NrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2s7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQgV0tCdW5kbGVQYWdlUG9p
bnRlckxvY2tDbGllbnQ7CisKK2VudW0geyBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRD
dXJyZW50VmVyc2lvbiA9IDAgfTsKKwogLy8gTWVzc2FnZVRyYWNlIGNsaWVudAogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlc2NyaXB0aW9uLCBX
S1N0cmluZ1JlZiBzdWNjZXNzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApAQCAtNDMxLDYg
KzQ0OCw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9sCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlVUlDbGll
bnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiBj
bGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0RGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KiBjbGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9pbnRlckxv
Y2tDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xp
ZW50KiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQ
YWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS0J1bmRs
ZUZyYW1lUmVmIFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CkBAIC00NzIsNiArNDkwLDEzIEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUxpc3RlbkZv
ckxheW91dE1pbGVzdG9uZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLTGF5CiAKIFdLX0VYUE9S
VCBXS0J1bmRsZUluc3BlY3RvclJlZiBXS0J1bmRsZVBhZ2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQ
b2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dL
X0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUlzUG9pbnRlckxvY2tlZChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2so
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CisK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4
IDYzMGQ5NmFlYTI1YjY4ZjdiYzgyMDgyMDNlOWE5NjM5ZGVkYjAzMjguLjc4Zjc1MTY1MDVkNGNh
NDMzYzcwNzBiNDc0YTY2NjRhYmRhZmQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5o
IgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVu
ZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCkBA
IC02NTMsNiArNjU0LDI2IEBAIFBhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmNy
ZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29uCiAgICAgcmV0dXJuIFdl
YkRhdGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYXJyYXlEYXRhLT5iYXNl
QWRkcmVzcygpKSwgYXJyYXlEYXRhLT5ieXRlTGVuZ3RoKCkpOwogfQogCit2b2lkIEluamVjdGVk
QnVuZGxlOjpzZXRQb2ludGVyTG9ja1Blcm1pc3Npb24oV2ViUGFnZSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIHBhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnNl
dFBlcm1pc3Npb25MZXZlbEZvclRlc3Rpbmcob3JpZ2luU3RyaW5nLCBhbGxvd2VkKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShvcmlnaW5TdHJpbmcp
OworICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKKyNlbmRpZgorfQorCit2b2lkIEluamVjdGVk
QnVuZGxlOjpyZW1vdmVBbGxQb2ludGVyTG9ja1Blcm1pc3Npb25zKFdlYlBhZ2UqIHBhZ2UpCit7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBwYWdlLT5wb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpLT5yZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworI2VuZGlmCit9CisKIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29s
IGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM3ZDQxYzJkMjIxOGNj
NTdjODc5MDM1YzQwMmVlZjQ0OWUyNjE3MmIuLjFmMzFmMmJhYjNhMzBkMmY5YzdlNmFkOTk2ZjI5
ZDk4NDg1OGNmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdl
Kik7CiAgICAgdWludDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmKTsKICAgICBQYXNzUmVmUHRyPFdlYkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJh
eShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tQZXJt
aXNzaW9uKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2b2lkIHJlbW92ZUFs
bFBvaW50ZXJMb2NrUGVybWlzc2lvbnMoV2ViUGFnZSopOwogCiAgICAgLy8gVXNlckNvbnRlbnQg
QVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVy
bCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwg
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBv
aW50ZXJMb2NrQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWJmZjljZDJhZDgxYTIyODg1MzIyY2Vk
MTljYzljYmJkYjhkM2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5j
cHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJv
bmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgiCisKKyNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgSW5qZWN0ZWRC
dW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6OnN1cHBvcnRzUG9pbnRlckxvY2soV2ViUGFnZSAq
cGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQucmVxdWVzdFBvaW50ZXJMb2NrKQorICAgICAgICBy
ZXR1cm4gbV9jbGllbnQuc3VwcG9ydHNQb2ludGVyTG9jayh0b0FQSShwYWdlKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6
OnJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlICpwYWdlKQoreworICAgIGlmIChtX2NsaWVudC5y
ZXF1ZXN0UG9pbnRlckxvY2spCisgICAgICAgIHJldHVybiBtX2NsaWVudC5yZXF1ZXN0UG9pbnRl
ckxvY2sodG9BUEkocGFnZSkpOworICAgIHJldHVybiBwYWdlLT5wb2ludGVyTG9ja01hbmFnZXIo
KS0+c3RhcnRSZXF1ZXN0UG9pbnRlckxvY2soKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VQb2ludGVyTG9ja0NsaWVudDo6cmVxdWVzdFBvaW50ZXJVbmxvY2soV2ViUGFnZSAqcGFnZSkK
K3sKKyAgICBpZiAobV9jbGllbnQucmVxdWVzdFBvaW50ZXJVbmxvY2spCisgICAgICAgIG1fY2xp
ZW50LnJlcXVlc3RQb2ludGVyVW5sb2NrKHRvQVBJKHBhZ2UpKTsKKyAgICBlbHNlCisgICAgICAg
IHBhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9j
a0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGUyM2YxNDMyMzkxNDkwOGQxMzVjYmUxNGI3OGU4MzYw
MjdkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudF9oCisjZGVmaW5lIEluamVjdGVkQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisK
KyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlUG9p
bnRlckxvY2tDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVBvaW50ZXJMb2Nr
Q2xpZW50LCBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lvbj4gewor
cHVibGljOgorICAgIGJvb2wgc3VwcG9ydHNQb2ludGVyTG9jayhXZWJQYWdlKik7CisgICAgYm9v
bCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZSopOworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJV
bmxvY2soV2ViUGFnZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVQYWdlUG9p
bnRlckxvY2tDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
b2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTRlOWE4YTZmODYzNTVkODA2MTFjNmU4OTAw
Y2RkNzJjZDY1MjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3Ms
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYlBh
Z2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBv
aW50ZXJMb2NrTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0
cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFnZSkpOwor
fQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6UG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQor
eworfQorCitib29sIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJl
cXVlc3QoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE9ubHkgb25lIHJlcXVlc3QgY2FuIGJlIHByb2Nlc3NlZCBm
b3IgdGhlIHdlYnBhZ2Ugc2FtZSB0aW1lCisgICAgQVNTRVJUKG1fc2VjdXJpdHlPcmlnaW4pOwor
ICAgIGlmIChtX3NlY3VyaXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X3NlY3VyaXR5T3JpZ2luID0gb3JpZ2luOworICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICByZXR1cm4gbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQb2lu
dGVyTG9ja1Blcm1pc3Npb24ob3JpZ2luLT50b1N0cmluZygpKSk7Cit9CisKK3ZvaWQgUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoU2VjdXJpdHlPcmln
aW4qKQoreworICAgIG1fc2VjdXJpdHlPcmlnaW4uY2xlYXIoKTsKKyAgICBtX2NhbGxiYWNrLmNs
ZWFyKCk7Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb24g
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnBlcm1pc3Npb25MZXZlbChTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+cG9s
aWN5Rm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6c2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKQoreworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+ZGlk
VXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihvcmlnaW5TdHJpbmcsIGFsbG93ZWQpOworfQorCit2
b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNz
aW9uc0ZvclRlc3RpbmcoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+cmVtb3ZlQWxsUGVybWlzc2lvbnNG
b3JUZXN0aW5nKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFsbG93ZWQp
Cit7CisgICAgaWYgKG1fc2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuc3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPigpLT5kaWRV
cGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCksIGFs
bG93ZWQpOworICAgICAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgICAgIG1fY2FsbGJhY2st
PmhhbmRsZUV2ZW50KGFsbG93ZWQpOworICAgIH0KKworICAgIG1fc2VjdXJpdHlPcmlnaW4uY2xl
YXIoKTsKKyAgICBtX2NhbGxiYWNrLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ4NGZmNDcy
YjRhYjI3YmU5NGRjNDg5NWUxMDRhYjNlZjFkZTI2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
X2gKKyNkZWZpbmUgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOwor
CitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVk
PFBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChib29sIHBlcm1pc3Npb24pID0gMDsKK307CisKK2NsYXNzIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsK
KworICAgIGJvb2wgc3RhcnRSZXF1ZXN0KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgUGFzc1Jl
ZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4pOworICAgIHZvaWQgY2FuY2VsUmVx
dWVzdChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworCisgICAgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbiBwZXJtaXNzaW9uTGV2ZWwoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qKTsKKworICAgIC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuCisgICAgdm9p
ZCBzZXRQZXJtaXNzaW9uTGV2ZWxGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAg
IHZvaWQgcmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCk7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sKTsKKworcHJpdmF0ZToKKyAg
ICBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlKik7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0
cjxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBXZWJQYWdl
KiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIzMWZl
MjhmZGNiOTBjNTc3NDg5OWJlZTZmN2E4MWNkMjJkYjNkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
LmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVj
dHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFn
ZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFu
YWdlcj4gV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50ZXJMb2NrTWFuYWdlcihwYWdlKSk7Cit9CisK
K1dlYlBvaW50ZXJMb2NrTWFuYWdlcjo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBhZ2UqIHBh
Z2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fcG9pbnRlckxvY2tlZChmYWxzZSkKK3sK
K30KKworV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyKCkKK3sK
K30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN1cHBvcnRzUG9pbnRlckxvY2soKQor
eworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
UG9pbnRlckxvY2tDbGllbnQoKS5zdXBwb3J0c1BvaW50ZXJMb2NrKG1fcGFnZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpyZXF1ZXN0
UG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQoKS5yZXF1ZXN0UG9pbnRlckxvY2sobV9w
YWdlLmdldCgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tN
YW5hZ2VyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAg
ICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KCkucmVxdWVzdFBvaW50
ZXJVbmxvY2sobV9wYWdlLmdldCgpKTsKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXI6
OmlzUG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZSAmJiBtX3BhZ2UtPmNvcmVQ
YWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5lbGVtZW50KCk7Cit9CisKK3ZvaWQgV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICht
X3BhZ2UpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVy
KCktPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFu
YWdlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAg
ICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRp
ZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7
Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2ludGVyTG9j
aygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OlJlcXVlc3RQb2ludGVyTG9jaygpKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFy
dFJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpSZXF1ZXN0UG9p
bnRlclVubG9jaygpKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJlY2VpdmVXZWJQb2ludGVyTG9ja01hbmFn
ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCitXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzZWN1cml0eU9yaWdpbigpCit7CisgICAgaWYg
KG1fcGFnZSkgeworICAgICAgICBXZWJDb3JlOjpFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gbV9w
YWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+dGFyZ2V0KCk7CisgICAg
ICAgIGlmICh0YXJnZXRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldEVsZW1lbnQt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9j
ay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDYzYjhiNjdiZjA2NDNlMWVl
YzY4MzFhYjdhNDNhMWI2NGJjMjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaApAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlBvaW50ZXJMb2NrTWFuYWdlcl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrTWFuYWdlcl9oCisK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkhhc2guaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNz
IE1lc3NhZ2VEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UG9pbnRlckxvY2tNYW5hZ2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UG9pbnRlckxvY2tNYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHZpcnR1YWwgfldlYlBv
aW50ZXJMb2NrTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIGJvb2wgc3Vw
cG9ydHNQb2ludGVyTG9jaygpOworCisgICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAg
ICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgYm9vbCBpc1BvaW50ZXJMb2NrZWQo
KTsKKworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworCisg
ICAgYm9vbCBzdGFydFJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIHZvaWQgc3RhcnRSZXF1ZXN0
UG9pbnRlclVubG9jaygpOworCisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIoV2ViUGFn
ZSopOworCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIFJl
ZlB0cjxXZWJQYWdlPiBtX3BhZ2U7CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrZWQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisK
KyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja01hbmFnZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDU1MmMwYjE5ZmJmODg4YTIz
MDM1MmVhMjMwY2Y1MjQ4ZWE4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUExHIEVMRUNUUk9OSUNTUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CittZXNzYWdlcyAtPiBXZWJQb2ludGVyTG9ja01hbmFnZXIgTGVnYWN5UmVjZWl2ZXIgeworICAg
IERpZEFjcXVpcmVQb2ludGVyTG9jaygpCisgICAgRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkK
KyAgICBEaWRMb3NlUG9pbnRlckxvY2soKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNh
bGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNWYwYzM1N2FkOWQz
NDgwZTlhNzA3ZWRiZjBjYzMxODM1YmZhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxi
YWNrLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVs
ZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uQ2FsbGJhY2suaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRl
ICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NS
ZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s+IFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBtYW5hZ2VyKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJh
Y2sobWFuYWdlcikpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjazo6V2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2soV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBtYW5h
Z2VyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCit7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KGJvb2wgYWxsb3dlZCkKK3sKKyAgICBp
ZiAoYWxsb3dlZCkKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbWFuYWdlci0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9D
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMTZhNWUzZDQwMGY0NzhmN2RmZGVjYjc5NmE0NjVkNmRmYjNhMDRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNT
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
Q2FsbGJhY2tfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFja19oCisK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb2ludGVy
TG9ja01hbmFnZXI7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrIDog
cHVibGljIFBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKFdl
YlBvaW50ZXJMb2NrTWFuYWdlciopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChib29s
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxs
YmFjayhXZWJQb2ludGVyTG9ja01hbmFnZXIqKTsKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIq
IG1fbWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNh
bGxiYWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJmNDQ5ZGY1MGFhYzlhNDk4MDllZmFhZTMwZWQyNzg5NTk5NTkyMjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVM
RUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NvbnN0IGNoYXIqIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OnN1cHBs
ZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXIiOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3Mo
cHJvY2VzcykKK3sKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6fldlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwID0gcGFyYW1ldGVy
cy5wb2ludGVyTG9ja1Blcm1pc3Npb25zOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXI6OmRpZFVwZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24oY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwLnNldChv
cmlnaW5TdHJpbmcsIGFsbG93ZWQpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXI6OmRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcmlnaW5TdHJpbmdzKQoreworICAgIHNpemVfdCBjb3VudCA9IG9yaWdpblN0cmluZ3Mu
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAg
bV9wZXJtaXNzaW9uc01hcC5yZW1vdmUob3JpZ2luU3RyaW5nc1tpXSk7Cit9CisKK1dlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb24gV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcjo6cG9saWN5Rm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luICpvcmln
aW4pIGNvbnN0Cit7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9u
Tm90QWxsb3dlZDsKKworICAgIEFTU0VSVCghb3JpZ2luLT5pc1VuaXF1ZSgpKTsKKworICAgIEhh
c2hNYXA8U3RyaW5nLCBib29sPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Blcm1pc3Npb25zTWFw
LmZpbmQob3JpZ2luLT50b1Jhd1N0cmluZygpKTsKKyAgICBpZiAoaXQgIT0gbV9wZXJtaXNzaW9u
c01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZSA/IFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25BbGxvd2VkIDogV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcjo6UGVybWlzc2lvbkRlbmllZDsKKyAgICByZXR1cm4gUGVybWlzc2lvbk5vdEFs
bG93ZWQ7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwLmNsZWFy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2U5YzhlYWU3Zjg1Y2JmNzQxMWM4NTk4OTY0NjA0ZDUzM2E2NGQ2YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9O
SUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUHJvY2VzczsK
KworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9j
ZXNzU3VwcGxlbWVudCwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik7CitwdWJs
aWM6CisgICAgZW51bSBQZXJtaXNzaW9uIHsKKyAgICAgICAgUGVybWlzc2lvbkFsbG93ZWQsCisg
ICAgICAgIFBlcm1pc3Npb25Ob3RBbGxvd2VkLAorICAgICAgICBQZXJtaXNzaW9uRGVuaWVkCisg
ICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAg
ZXhwbGljaXQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQcm9jZXNzKik7Cisg
ICAgdmlydHVhbCB+V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcigpOworCisgICAgdm9p
ZCBkaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5n
LCBib29sIGFsbG93ZWQpOworICAgIFBlcm1pc3Npb24gcG9saWN5Rm9yT3JpZ2luKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CisKKyAgICB2b2lkIHJlbW92ZUFsbFBlcm1pc3Npb25z
Rm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50Cisg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpIE9WRVJSSURFOworCisgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOworCisgICAgdm9pZCBkaWRSZW1vdmVQb2lu
dGVyTG9ja0RlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7CisK
KyAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1f
cGVybWlzc2lvbnNNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRl
ckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjVjM2Y0OTg2N2FlMGYwYjg0ZGE5Y2My
MjkyNzhhNzlmMzBmYTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzAgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9u
aWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorbWVzc2FnZXMgLT4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciB7Cisg
ICAgRGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihXVEY6OlN0cmluZyBvcmlnaW5TdHJpbmcs
IGJvb2wgYWxsb3dlZCk7CisgICAgRGlkUmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMoVmVjdG9y
PFdURjo6U3RyaW5nPiBvcmlnaW5TdHJpbmdzKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDA5ODU4YWVmZjk3OTM1MWU0MzE1YzNkNzYxYTQ2OTkwMTY2NzZjODQuLmI2
NmI1YWYwNzljY2UxZjZhN2ZmMjlhNTdmY2U5MjIwMDk3ZmFiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlBh
Z2VCYW5uZXIuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oIgogI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00Myw2ICs0NCw4IEBACiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTgyNCw2ICs4MjcsMzkgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdl
KGNvbnN0IFZpZXdwb3J0QXJndW1lbnQKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2soKQoreworICAg
IGlmICghbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3VwcG9ydHNQb2ludGVyTG9jaygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4gPSBtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zZWN1cml0eU9y
aWdpbigpOworICAgIHN3aXRjaCAobV9wYWdlLT5wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigpLT5wZXJtaXNzaW9uTGV2ZWwoc2VjdXJpdHlPcmlnaW4pKSB7CisgICAgY2FzZSBX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9uQWxsb3dlZDoKKyAgICAg
ICAgcmV0dXJuIG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnJlcXVlc3RQb2ludGVyTG9j
aygpOworICAgIGNhc2UgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lv
bk5vdEFsbG93ZWQ6IHsKKyAgICAgICAgUmVmUHRyPFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNh
bGxiYWNrPiBjYWxsYmFjayA9IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVh
dGUobV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKSk7CisgICAgICAgIHJldHVybiBtX3BhZ2Ut
PnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnN0YXJ0UmVxdWVzdChzZWN1
cml0eU9yaWdpbiwgY2FsbGJhY2spOworICAgIH0KKyAgICBjYXNlIFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25EZW5pZWQ6CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgbV9wYWdl
LT5wb2ludGVyTG9ja01hbmFnZXIoKS0+cmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKK30KKworYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFn
ZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmlzUG9pbnRlckxvY2tlZCgpOworfQorI2VuZGlmCisK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0
KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Ok5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Ny
b2xsZXJUaHVtYikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNGYyOGJiMzc0NzJmYWMxYjhm
M2Q3YjgwZjk5ODNmYjIzN2VlNzg3Mi4uYmJiOTdjNGM5YTFkYTY1M2M2NDMxOWJmMjM2YzZjZmJm
YWU0NGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDgsNiArMjA4LDEyIEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpF
bGVtZW50KikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soKSBPVkVSUklERTsKKyAgICB2b2lkIHJlcXVlc3RQ
b2ludGVyVW5sb2NrKCkgT1ZFUlJJREU7CisgICAgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSBPVkVS
UklERTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKSBPVkVSUklERTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDY3ZTY4MmY1NjhhODQyNWNhNTM3OTkw
MWMzY2EzYWJhYTQ0MjY4MTQuLmQzY2I4YzJkZjYxNjhjZWVhZDE4MjdmMTQxNzE4NzMxNmIyMGUy
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1
ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJp
bnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCkBAIC03Nyw2ICs3OCw4IEBACiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQbHVnSW5D
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKyNpbmNsdWRlICJX
ZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCkBAIC0xMTIsNiArMTE1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KQEAgLTQwNyw2ICs0
MTEsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgdGhp
cyk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCB0aGlzKTsKKyNlbmRpZgogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNDQzLDcgKzQ1
MCw5IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAj
ZW5kaWYKLQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworI2VuZGlmCiAjaWZuZGVmIE5ERUJV
RwogICAgIHdlYlBhZ2VDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCkBAIC01MjgsNiArNTM3
LDEzIEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoV0tCdW5kbGVQYWdlRGlhZ25vCiAgICAgbV9sb2dEaWFnbm9zdGljTWVzc2Fn
ZUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQordm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVu
dChXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCogY2xpZW50KQoreworICAgIG1fcG9pbnRl
ckxvY2tDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQ
bHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwg
Y29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTdHJpbmcmIG5ld01JTUVUeXBl
KQogewpAQCAtODIwLDYgKzgzNiw5IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gMDsKICNlbmRpZgor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgbV9wb2ludGVyTG9ja01hbmFnZXIgPSAwOwor
I2VuZGlmCiAKICAgICBpZiAobV9hY3RpdmVQb3B1cE1lbnUpIHsKICAgICAgICAgbV9hY3RpdmVQ
b3B1cE1lbnUtPmRpc2Nvbm5lY3RGcm9tUGFnZSgpOwpAQCAtMTY0Nyw2ICsxNjY2LDI3IEBAIHN0
YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVu
dCwgV2ViUGFnZSogcGFnZSwgYm9vCiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1N
b3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIGlmIChwYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2Vk
KCkpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICAgICAgc3dpdGNoICht
b3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93
bjoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlVXA6
CisgICAgICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlOgor
ICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBwYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVy
TG9ja0NvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KHBsYXRmb3JtTW91c2VF
dmVudCwgZXZlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisK
ICAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6IHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
QEAgLTI1OTgsNiArMjYzOCwyMiBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlciogV2ViUGFnZTo6ZnVs
bFNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
V2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBXZWJQYWdlOjpwb2ludGVyTG9ja01hbmFnZXIoKQorewor
ICAgIGlmICghbV9wb2ludGVyTG9ja01hbmFnZXIpCisgICAgICAgIG1fcG9pbnRlckxvY2tNYW5h
Z2VyID0gV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1f
cG9pbnRlckxvY2tNYW5hZ2VyLmdldCgpOworfQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0TWFuYWdlciogV2ViUGFnZTo6cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KQoreworICAgIGlmICghbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAg
ICAgICAgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fcG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZWJQYWdlOjpub3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQogewogICAgIGlmIChtX25vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcikKQEAgLTI5MTUsNiArMjk3MSwxMyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQsCiAgICAgbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRp
ZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFs
bG93ZWQpOwogfQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK3ZvaWQgV2ViUGFnZTo6ZGlk
UmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAg
ICBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5kaWRSZWNlaXZlUG9pbnRl
ckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYWxsb3dlZCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQ
YWdlOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKQEAgLTMxNjcsNiArMzIzMCwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZwogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBvaW50ZXJMb2Nr
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHBvaW50ZXJMb2NrTWFu
YWdlcigpLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCA3YmRmMDY5Y2MwYjAwNjEzYjYxOGQxOGY4MGQ0MzBmMmVlNWM4
OTQxLi5lNmE5ZTZkOTE2OTBmZWVlYjMyNDIwZGVjODVkMTI1OTgzOWZjNWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvaW50
ZXJMb2NrQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIKQEAgLTEzNCw2ICsxMzUsNyBA
QCBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiBjbGFzcyBQYWdl
QmFubmVyOwogY2xhc3MgUGFnZU92ZXJsYXk7CiBjbGFzcyBQbHVnaW5WaWV3OworY2xhc3MgUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiBjbGFzcyBTZXNzaW9uU3RhdGU7CiBj
bGFzcyBXZWJDb2xvckNob29zZXI7CiBjbGFzcyBXZWJDb250ZXh0TWVudTsKQEAgLTE0OSw2ICsx
NTEsNyBAQCBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXBQ
cm94eTsKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjsKIGNsYXNzIFdlYlBvcHVwTWVudTsK
IGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKQEAgLTIwMiw2
ICsyMDUsMTEgQEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKiBmdWxsU2NyZWVu
TWFuYWdlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdlYlBv
aW50ZXJMb2NrTWFuYWdlciogcG9pbnRlckxvY2tNYW5hZ2VyKCk7CisgICAgUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCk7CisjZW5kaWYKKwogICAgIC8vIC0tIENhbGxlZCBieSB0aGUgRHJhd2luZ0FyZWEuCiAg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIGdlbmVyaWNpemUgdGhlc2UgaW50byBhIERyYXdpbmdBcmVh
IGNsaWVudCBpbnRlcmZhY2UuIFdvdWxkIHRoYXQgYmUgYmVuZWZpY2lhbD8KICAgICB2b2lkIGRy
YXdSZWN0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKQEAgLTI1OCw2ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQqKTsK
ICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQoV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQqKTsKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9pbnRl
ckxvY2tDbGllbnQoV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQqKTsKKyNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQmIGluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKSB7IHJldHVybiBtX2Nv
bnRleHRNZW51Q2xpZW50OyB9CkBAIC0yNzIsNiArMjgzLDkgQEAgcHVibGljOgogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
JiBpbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKSB7IHJldHVybiBtX2Z1bGxTY3JlZW5D
bGllbnQ7IH0KICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgSW5qZWN0ZWRC
dW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQmIGluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGll
bnQoKSB7IHJldHVybiBtX3BvaW50ZXJMb2NrQ2xpZW50OyB9CisjZW5kaWYKIAogICAgIHZvaWQg
c2V0VW5kZXJsYXlQYWdlKFBhc3NSZWZQdHI8V2ViUGFnZT4gdW5kZXJsYXlQYWdlKSB7IG1fdW5k
ZXJsYXlQYWdlID0gdW5kZXJsYXlQYWdlOyB9CiAKQEAgLTgxOSw2ICs4MzMsMTAgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKTsKIAorI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisgICAgdm9pZCBkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNp
b24oYm9vbCBhbGxvd2VkKTsKKyNlbmRpZgorCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGlu
Z1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwogI2lmIFVTRShBUFBLSVQpCkBAIC05NTAsNiAr
OTY4LDkgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
IG1fZnVsbFNjcmVlbkNsaWVudDsKICNlbmRpZgogICAgIEluamVjdGVkQnVuZGxlUGFnZURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50IG1fbG9nRGlhZ25vc3RpY01lc3NhZ2VDbGllbnQ7CisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKKyAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVu
dCBtX3BvaW50ZXJMb2NrQ2xpZW50OworI2VuZGlmCiAKICAgICBGaW5kQ29udHJvbGxlciBtX2Zp
bmRDb250cm9sbGVyOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKFFUKQpA
QCAtOTY1LDYgKzk4NiwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICBSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IG1fZnVsbFNjcmVlbk1hbmFnZXI7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFJlZlB0cjxXZWJQb2ludGVyTG9j
a01hbmFnZXI+IG1fcG9pbnRlckxvY2tNYW5hZ2VyOworICAgIFJlZlB0cjxQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZlUG9wdXBNZW51
OwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudT4g
bV9jb250ZXh0TWVudTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMjVlYmQ4Njg4YjYyMjUxOWY0ZDdkMjNkYmEx
NDJmOGJhM2IxMzk4ZC4uNzJjZjU1ZGI2YzFmOWQwZTQ0MjBkOWM3ZjMyMzQ5NzI3OWYyYzU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTIxOCw2ICsyMTgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgIyBOb3RpZmljYXRpb24KICAgICBEaWRSZWNlaXZlTm90aWZpY2F0
aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93
ZWQpCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIERpZFJlY2VpdmVQb2ludGVyTG9j
a1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFsbG93ZWQpCisjZW5kaWYKKwogICAgIFNldFdpbmRv
d1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKICAgICAjIFBy
aW50aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjVi
MjE0YWFlZWMzZTAwNDEzZDE1OTg2YTQ1YmFlOTBhZGJjYThjYi4uY2E1Njk5MDFhZDk5NzdmMTMx
ZmQ1MjhmNWZlOWJlOTQyYTJlNDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC00OCw2ICs0OCw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
I2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCIKKyNlbmRpZgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0yMDks
NiArMjEyLDkgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgVVNFKFNPVVApCiAgICAg
YWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcj4oKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQ
cm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAyMmEyNDE5MTAxOTM4ODI5YWFlYzQzYzY5YWFjNzRkNzdjZjk1ZjhlLi5iMTI3OTI1NzhmZWQz
NjIzMzc4NDBmZDI1NDE3YTZlMWQ0ZWQyZDkzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTMtMDYtMjAgIFN0YW5p
c2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3VsaWtAbGdlLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2NrIEltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc3ODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgcG9pbnRlciBsb2NrIHBl
cm1pc3Npb24gc3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGFkZCBwb2ludGVy
IGxvY2sgc3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIHByb3ZpZGUgdXNhZ2Ug
c2FtcGxlIGluIE1pbmlCcm93c2VyIChub3QgY2xpcCBhbmQgbm90IGhpZGUgY3Vyc29yIG5vdykK
KworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgor
ICAgICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzdXBwb3J0c1BvaW50ZXJMb2NrKToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhh
c1BvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6aGFzUG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpoYXNQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVFI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RS
OjpyZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6cG9p
bnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcik6CisgICAgICAg
IChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwcm92aWRlcik6CisgICAg
ICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjphZGRQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAg
ICAoV1RSOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cG9pbnRlckxvY2tQZXJt
aXNzaW9ucyk6CisgICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
OjpyZXNldCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByaToKKwogMjAxMy0wNi0xOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQVg6IEV4cGFuZCBub3RpZmljYXRpb24gc3Vw
cG9ydC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGlj
YXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5j
cHAKaW5kZXggNmQ1YzZhNjMwMmM3N2ZhM2RmNDAwYjk3NWEzZDZjMjZhM2VjYTBlNi4uNDIxODhi
ZjRkYjk4MGI2NjIxZTM0ZWM2MWU5NjI3YzZmMTAyMTY3MCAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTE2NywxMiArMTY3LDIwIEBA
IGJvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFPYmplY3QqIHRhcmdldCwgUUV2
ZW50KiBldmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFFFdmVudDo6TW91
c2VNb3ZlOgogICAgICAgICAgICAgaWYgKCFtb3VzZUV2ZW50LT5idXR0b25zKCkpIHsKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICAgICAgICAgIGlmIChtX2hvbGRpbmdDb250cm9s
ICYmIG1fdG91Y2hQb2ludHMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5h
Y2NlcHQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBRR3VpQXBwbGljYXRpb246Om5vdGlmeSh0YXJn
ZXQsIGV2ZW50KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBzd2FsbG93
IHRoZSBldmVudCBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIGl0LAogICAgICAgICAgICAgICAgIC8v
IHNpbmNlIHdlIGF2b2lkIHNlbmRpbmcgdGhlIG1vdXNlIHJlbGVhc2UgZXZlbnRzIGFuZCBpZiB0
aGUKICAgICAgICAgICAgICAgICAvLyBGbGlja2FibGUgaXMgdGhlIG1vdXNlIGdyYWJiZXIgaXQg
d291bGQgcmVjZWl2ZSB0aGUgZXZlbnQKICAgICAgICAgICAgICAgICAvLyBhbmQgd291bGQgbW92
ZSB0aGUgY29udGVudC4KICAgICAgICAgICAgICAgICBldmVudC0+YWNjZXB0KCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHRvdWNoVHlwZSA9IFFFdmVudDo6VG91Y2hVcGRhdGU7CiAgICAgICAgICAgICB0b3VjaFBvaW50
LnNldElkKG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwv
QnJvd3NlcldpbmRvdy5xbWwKaW5kZXggYjRiNWJjMDkyNjhjYmIzY2YzNDljMDhhMDZjN2MyYTk1
ZGNjZWE2NS4uYWJjZDhhYzM0MTE1OTU3ZTBhNjE3NjNjMTQxMGUzNzllYmNlMDc0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAtNTY0LDYgKzU2NCwy
MCBAQCBSZWN0YW5nbGUgewogICAgICAgICAgICAgV2luZG93LnNob3dOb3JtYWwoKTsKICAgICAg
ICAgICAgIG5hdmlnYXRpb25CYXIudmlzaWJsZSA9IHRydWU7CiAgICAgICAgIH0KKyAgICAgICAg
ZXhwZXJpbWVudGFsLm9uUGVybWlzc2lvblJlcXVlc3RlZCA6IHsKKyAgICAgICAgICAgIGlmIChw
ZXJtaXNzaW9uLnR5cGUgPT09IFBlcm1pc3Npb25SZXF1ZXN0LlBvaW50ZXJMb2NrKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLmFsbG93KQorICAgICAgICAgICAgICAgICAgICBw
ZXJtaXNzaW9uLmFsbG93ID0gdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGV4cGVyaW1lbnRhbC5vblBvaW50ZXJMb2NrUmVxdWVzdGVkIDogeworICAgICAgICB9CisgICAg
ICAgIGV4cGVyaW1lbnRhbC5vblBvaW50ZXJVbmxvY2tSZXF1ZXN0ZWQgOiB7CisgICAgICAgIH0K
KyAgICAgICAgS2V5cy5vbkVzY2FwZVByZXNzZWQ6IHsKKyAgICAgICAgICAgIGlmICh3ZWJWaWV3
LmV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkKQorICAgICAgICAgICAgICAgZXhwZXJpbWVudGFs
LnVubG9ja1BvaW50ZXIoKQorICAgICAgICB9CiAgICAgfQogCiAgICAgU2Nyb2xsSW5kaWNhdG9y
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGNlNjQ3ZTI2N2NhZTFkMWVmMjhmZmQx
ZmY3NzA5MzM4N2I1OGE2M2UuLmU4ZmIyMzYzMTNiOThlMGIzNzMyYWRmNTliZGNlMjhjNmFlMGVh
OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTkwLDUgKzE5MCwxMSBAQCBpbnRl
cmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICAvLyBTZWN1cmUgdGV4dCBpbnB1dCBtb2RlIChNYWMg
b25seSkKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzZWN1cmVFdmVudElucHV0SXNF
bmFibGVkOwotfTsKIAorICAgIC8vIFBvaW50ZXJMb2NrCisgICAgdm9pZCBkaWRMb3NlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlk
Tm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5j
aHJvbm91c2x5KCk7Cit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGViNTBjZTBlMDUw
MjBmMDA5MzA1MDk1Nzk5ODZhYzgwMmQzMThjZWMuLjczOTkzOGFkNWQxYmExMzcyOGJjNTE3YTc5
ZmU4NzMwMTY4NmNmMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTQxNSw2ICs0MTUs
MTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UpCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KG1f
cGFnZSwgJmZ1bGxTY3JlZW5DbGllbnQpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50IHBvaW50ZXJMb2NrQ2xpZW50
ID0geworICAgICAgICBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lv
biwKKyAgICAgICAgdGhpcywKKyAgICAgICAgc3VwcG9ydHNQb2ludGVyTG9jaywKKyAgICAgICAg
cmVxdWVzdFBvaW50ZXJMb2NrLAorICAgICAgICAwLCAvLyByZXF1ZXN0UG9pbnRlclVubG9jaywK
KyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldFBvaW50ZXJMb2NrQ2xpZW50KG1fcGFnZSwgJnBv
aW50ZXJMb2NrQ2xpZW50KTsKKyNlbmRpZgogfQogCiBJbmplY3RlZEJ1bmRsZVBhZ2U6On5Jbmpl
Y3RlZEJ1bmRsZVBhZ2UoKQpAQCAtMTc5Niw2ICsxODA3LDMyIEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpjbG9zZUZ1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIEluamVjdGVkQnVuZGxlUGFnZTo6
c3VwcG9ydHNQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sKKyAgICBpZiAoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+aGFzUG9pbnRlckxvY2tXaWxsRmFp
bFN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVz
dFJ1bm5lcigpLT5zZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OnJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sKKyAgICBp
ZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+aGFzUG9pbnRlckxvY2tX
aWxsRmFpbFN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkudGVzdFJ1bm5lcigpLT5zZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gCisKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnRlc3RSdW5uZXIoKS0+aGFzUG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkp
IHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2V0UG9p
bnRlckxvY2tVc3VhbEJlaGF2aW9yKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayhwYWdlKTsKK30K
KyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjb21wYXJlQnlUYXJnZXROYW1lKFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbVJlZiBpdGVtMSwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0
ZW0yKQogewogICAgIHJldHVybiB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbUNvcHlUYXJnZXQoaXRlbTEpKSkgPCB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbUNvcHlUYXJnZXQoaXRlbTIpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCBk
MDlhMjA0ZGQ5ZWNlZTVkYjBjNjRjNmMzYmZlNDljYzY4OTEzZTFhLi43ZDU4MDllOWYyYTA1ZjZm
ZTAzMmFkNWJiOWNhYTRkYjAwMGE2ZjQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTE0MCw2
ICsxNDAsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjbG9zZUZ1bGxTY3JlZW4oV0tC
dW5kbGVQYWdlUmVmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAv
LyBQb2ludGVyIExvY2sgY2xpZW50CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQb2ludGVyTG9j
ayhXS0J1bmRsZVBhZ2VSZWYpOworICAgIHN0YXRpYyBib29sIHJlcXVlc3RQb2ludGVyTG9jayhX
S0J1bmRsZVBhZ2VSZWYpOworI2VuZGlmCisKICAgICAvLyBFZGl0b3IgY2xpZW50CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVSYW5n
ZUhhbmRsZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIGJvb2wgc2hv
dWxkRW5kRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTY5NjYwMDUxN2I2OWU4MjliMGVl
OTJkNjVlNTRkZjJjZjgxYmUwNy4uYmIxOGNhNjExZjAxNjg1ZWNmMjQxMjk5MTg3MDcyZjliMjI5
NjQ3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC05NSw2ICs5NSw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIo
KQogICAgICwgbV9jdXN0b21GdWxsU2NyZWVuQmVoYXZpb3IoZmFsc2UpCiAgICAgLCBtX3VzZXJT
dHlsZVNoZWV0RW5hYmxlZChmYWxzZSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbihh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSkpCisgICAgLCBtX3BvaW50
ZXJMb2NrUmVzcG9uc2VTdGF0dXMoUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKQogewogICAgIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOwogfQpAQCAtODEyLDQgKzgxMywxOSBAQCBib29sIFRlc3RSdW5u
ZXI6OnNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBXS0Jvb2xl
YW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEpKTsKIH0KIAor
dm9pZCBUZXN0UnVubmVyOjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIFdLQnVuZGxlUGFn
ZURpZExvc2VQb2ludGVyTG9jayhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7Cisg
ICAgV0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlKCktPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBXS0J1bmRsZVBhZ2VEaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IGVmMGVhOGM3MDhkMWMyZmE5NWFjNTdiMDBkMmFkNzY2MjM3
ZjY3MmEuLjgzODA5ZjMwZjM0NjE0M2ZhMmY3MWU4YTkxYjhiZGQwOWJhZGQyMTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC0yNzUsNiArMjc1LDE4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2VjdXJlRXZlbnRJbnB1dElz
RW5hYmxlZCgpIGNvbnN0OwogCisgICAgLy8gQ3VzdG9tIFBvaW50ZXJMb2NrIGJlaGF2aW9yCisg
ICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVy
TG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisKKyAgICB2b2lk
IHNldFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpIHsgbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3Rh
dHVzID0gUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yOyB9CisgICAgYm9vbCBoYXNQb2ludGVyTG9j
a1VzdWFsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0
dXMgPT0gUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yOyB9CisgICAgdm9pZCBzZXRQb2ludGVyTG9j
a1dpbGxGYWlsU3luY2hyb25vdXNseSgpIHsgbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzID0g
UG9pbnRlckxvY2tSZXNwb25zZUZhaWw7IH0KKyAgICBib29sIGhhc1BvaW50ZXJMb2NrV2lsbEZh
aWxTeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3Rh
dHVzID09IFBvaW50ZXJMb2NrUmVzcG9uc2VGYWlsOyB9CisgICAgdm9pZCBzZXRQb2ludGVyTG9j
a1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKSB7IG1fcG9pbnRlckxvY2tSZXNwb25zZVN0YXR1
cyA9IFBvaW50ZXJMb2NrUmVzcG9uc2VBc3luYzsgfQorICAgIGJvb2wgaGFzUG9pbnRlckxvY2tX
aWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja1Jl
c3BvbnNlU3RhdHVzID09IFBvaW50ZXJMb2NrUmVzcG9uc2VBc3luYzsgfQorCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsK
IApAQCAtMzI1LDYgKzMzNywxNCBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAKICAgICBQbGF0Zm9ybVRpbWVyUmVmIG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CisKKyAgICBlbnVtIFBvaW50ZXJMb2NrUmVzcG9uc2VT
dGF0dXMgeworICAgICAgICBQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IsCisgICAgICAgIFBvaW50
ZXJMb2NrUmVzcG9uc2VGYWlsLAorICAgICAgICBQb2ludGVyTG9ja1Jlc3BvbnNlQXN5bmMKKyAg
ICB9OworCisgICAgUG9pbnRlckxvY2tSZXNwb25zZVN0YXR1cyBtX3BvaW50ZXJMb2NrUmVzcG9u
c2VTdGF0dXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0
LnByaQppbmRleCAzOTgwMGFiOGRjZmYzY2Q0NGVjMjkxNjZkMzcxYmNkZTJkNDQwYTYzLi4xY2Jh
M2QxNjQ0OTAxMmRmZmY5NTRiZDI1ZjFlOTgzMTkxMDkyM2MxIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
YXJnZXQucHJpCkBAIC0xNSw2ICsxNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFRlc3RDb250cm9s
bGVyLmggXAogICAgIFRlc3RJbnZvY2F0aW9uLmggXAogICAgIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmggXAorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmggXAogICAgIFdv
cmtRdWV1ZU1hbmFnZXIuaAogCiBTT1VSQ0VTICs9IFwKQEAgLTI3LDYgKzI4LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgVGVzdENvbnRyb2xsZXIuY3BwIFwKICAgICBUZXN0SW52b2NhdGlvbi5jcHAg
XAogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBcCisgICAgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXIuY3BwIFwKICAgICBXb3JrUXVldWVNYW5hZ2VyLmNwcAogCiBERVNU
RElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCAwOTY0N2ExNjAxNzM4NDE3Y2ZmZGYwMzY2ZTRkOTkxODAzZDY0
OTIzLi5hMjczYmQ0MzZlNmNhNzFiNDg4OGUyODBhZGEzNTMzMTgwODU4ZThlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3Vw
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgpAQCAtMjQ3LDYgKzI0OSw3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiBvbGRQYWdlLCBXS1VSTFJlcXVlc3RSZWYs
IFdLCiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29s
b3JQaWNrZXIKICAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCisg
ICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QK
ICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlD
bGllbnQpOwogCkBAIC0zODgsNiArMzkxLDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRp
YWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS05vdGlmaWNhdGlvblBy
b3ZpZGVyIG5vdGlmaWNhdGlvbktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlk
ZXIoKTsKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25N
YW5hZ2VyLCAmbm90aWZpY2F0aW9uS2l0KTsKIAorICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclJlZiBwb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0UG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihtX2NvbnRleHQuZ2V0KCkpOworICAgIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgcG9pbnRlckxvY2tQZXJtaXNzaW9uS2l0ID0gbV93ZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5wcm92aWRlcigpOworICAgIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclNldFByb3ZpZGVyKHBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXIsICZwb2ludGVyTG9ja1Blcm1pc3Npb25LaXQpOworCiAgICAgaWYgKHRlc3RQbHVnaW5EaXJl
Y3RvcnkoKSkKICAgICAgICAgV0tDb250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3Rvcnko
bV9jb250ZXh0LmdldCgpLCB0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpOwogCkBAIC00NDYsNiArNDUz
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKFdLRGlj
dGlvbmFyeVJlZiBvcHRpb25zKQogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAg
ICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZCwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBh
Z2UoKSwgJnBhZ2VVSUNsaWVudCk7CiAKQEAgLTYxNSw2ICs2MjMsOSBAQCBib29sIFRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBtX2lzR2VvbG9jYXRp
b25QZXJtaXNzaW9uU2V0ID0gZmFsc2U7CiAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvbkFs
bG93ZWQgPSBmYWxzZTsKIAorICAgIC8vIFJlc2V0IFBvaW50ZXJMb2NrIHBlcm1pc3Npb25zLgor
ICAgIG1fd2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIucmVzZXQoKTsKKwogICAgIC8v
IFJlc2V0IEN1c3RvbSBQb2xpY3kgRGVsZWdhdGUuCiAgICAgc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUoZmFsc2UsIGZhbHNlKTsKIApAQCAtMTIwMyw2ICsxMjE0LDE2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFn
ZVJlZiwgV0tTCiAgICAgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KHJlcXVl
c3QpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IHZv
aWQqKQoreworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5kZWNpZGVQb2xpY3lGb3JQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KHBhZ2UsIG9yaWdpbiwgcmVxdWVzdCk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RSZWYgcmVxdWVzdCkKK3sKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RBbGxvdyhyZXF1ZXN0KTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6dW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkKFdLUGFnZVJlZiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbiwgV0tEaWN0aW9uYXJ5UmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBwcmludGYoIk1JU1NJ
TkcgUExVR0lOIEJVVFRPTiBQUkVTU0VEXG4iKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAppbmRleCBkZWUyNjgzNDZkZjljMjhkNzNjZWJlMzlhODAzNDIwNWRjYTNkNGI3
Li4xMzJlNzU3ZDBkZjY2ZWM1OThmODRhOWJjM2EzMzllMWYzMGJjZDFmIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFRl
c3RDb250cm9sbGVyX2gKIAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisj
aW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
b3JrUXVldWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8R2VvbG9jYXRpb25Qcm92aWRlck1vY2suaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CkBAIC0xMzcsNiArMTM4LDkgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAKKyAgICBzdGF0
aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFn
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
UmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmKTsKKwogICAgIHN0YXRpYyB2b2lkIHVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZChXS1BhZ2VSZWYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24sIFdLRGljdGlvbmFyeVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwpAQCAtMTcwLDYgKzE3NCw4IEBAIHByaXZhdGU6CiAKICAgICBXZWJOb3RpZmljYXRpb25Qcm92
aWRlciBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwogCisgICAgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIgbV93ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjsKKwogICAg
IE93blB0cjxQbGF0Zm9ybVdlYlZpZXc+IG1fbWFpbldlYlZpZXc7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBtX2NvbnRleHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+
IG1fcGFnZUdyb3VwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzhhNzVmMTNm
OTg0ZDBiZDBkYWEyMTk3OWNiNjBkNmNjODA1OTliCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAKQEAg
LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZUFycmF5Lmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyB2b2lkIGFkZFBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmFkZFBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobWFuYWdlcik7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92
ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nh
c3Q8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobWFuYWdlcik7
Cit9CisKK3N0YXRpYyBXS0RpY3Rpb25hcnlSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9ucyhjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
cG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlcjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIoKQoreworfQorCitXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyOjpwcm92aWRlcigpCit7CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBw
b2ludGVyTG9ja1Byb3ZpZGVyID0geworICAgICAgICBrV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlckN1cnJlbnRWZXJzaW9uLAorICAgICAgICB0aGlzLAorICAgICAgICBXVFI6OmFkZFBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsCisgICAgICAgIFdUUjo6cmVtb3ZlUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlciwKKyAgICAgICAgV1RSOjpwb2ludGVyTG9ja1Blcm1pc3Npb25z
LAorICAgIH07CisgICAgcmV0dXJuIHBvaW50ZXJMb2NrUHJvdmlkZXI7Cit9CisKK3ZvaWQgV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIpCit7CisgICAg
QVNTRVJUKCFtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOworICAgIG1fcG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlciA9IG1hbmFnZXI7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIpCit7CisgICAgQVNTRVJUKG1f
cG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fcG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5nZXQoKSA9PSBtYW5hZ2VyKTsKKyAgICBtX3BvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXIgPSAwOworfQorCitXS0RpY3Rpb25hcnlSZWYgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKQoreworICAgIC8vIEZJ
WE1FIDogSXQgc2hvdWxkIGJlIHJlYWwgY2FjaGUgZm9yIHBlcm1pc3Npb25zCisgICAgcmV0dXJu
IFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlcjo6cmVzZXQoKQoreworICAgIC8vIEZJWE1FIDogcmVzZXQgcmVhbCBj
YWNoZQorfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MjJhOTFkZDQ5MjljNmMyNmUxYmU5YzFlYWNlN2JjNzMwODU0NzRiCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92
aWRlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaAorI2RlZmlu
ZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwor
Y2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIFdl
YlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKCk7CisgICAgV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlciBwcm92aWRlcigpOworCisgICAgdm9pZCBhZGRQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZik7CisgICAgdm9p
ZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclJlZik7CisgICAgV0tEaWN0aW9uYXJ5UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lv
bnMoKTsKKworICAgIHZvaWQgcmVzZXQoKTsKK3ByaXZhdGU6CisgICAgV0tSZXRhaW5QdHI8V0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmPiBtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92
aWRlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByaSBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCmluZGV4IDEw
Nzg4NTA0ZDdjMTMyZDU3OWU2YTE3ZmU1YzVhZDJjN2ZkNThjYTYuLmIzNDYzYTA4MTNkYjU5MGZk
N2ExNzM3ZjhiMzNjNzVjOTZlNDkxMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvZmVhdHVyZXMucHJpCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMv
ZmVhdHVyZXMucHJpCkBAIC0xMjYsMyArMTI2LDUgQEAgRkVBVFVSRV9ERUZBVUxUUyA9IFwKICAg
ICBFTkFCTEVfV09SS0VSUz0xIFwKICAgICBFTkFCTEVfWEhSX1RJTUVPVVQ9MSBcCiAgICAgRU5B
QkxFX1hTTFQ9MCBcCisgICAgRU5BQkxFX1BPSU5URVJfTE9DSz0xIFwKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1NDAy
MjY0ZWUzNDg4ZmE1MTgxZGI1NzJkMmY3MzA2OTgxNjI3NGMuLjczMTQ5Zjc2OWE2NDVmZDVhYjFk
YTYwOTNhOTQwYTk2OWE3YzI5Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wNi0yMCAg
U3RhbmlzbGF2IFBpa3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAg
IFtRdF1bV0syXSBBZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdGVzdCBpcyBw
ZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBmaXJzdCBydW4gb2YgYWxsIHRl
c3RzIGNvbXBsZXRlIHdpdGg6IAorICAgICAgICBmYWlsZWQgdGltZWQgb3V0IHdhaXRpbmcgZm9y
IG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkOgorICAgICAgICBwb2ludGVyLWxvY2svYnVnOTAzOTEt
bW92ZS10aGVuLXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwKKworICAgICAgICBPbmUgdGVzdCBmYWls
LCBubyBkb3VibGVjbGljayBzdXBwb3J0IG5vdzoKKyAgICAgICAgcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKKworICAgICAgICBBbGwgb3RoZXIgcG9pbnRlciBsb2NrIHRl
c3RzIHBhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTMtMDYtMjAgIFpvbHRhbiBBcnZhaSAgPHphcnZhaUBpbmYudS1zemVnZWQuaHU+
CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxYmUxODQwZGQ0NjI2
MmRkOTg4ZjE1ZGM3OGNiMmQ2YmQ5NjkzYmFjLi4xMjJiN2IzMmIxNTVlYWUzMTJmMWVjMjgyY2Y0
MzJkMDIxNmJmOTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC02NTgsNyArNjU4LDcgQEAgaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9sb2dvdXQuaHRtbAogcGxhdGZvcm0vcXQvcGx1Z2lucy9hcHBsaWNhdGlvbi1wbHVnaW4t
cGx1Z2lucy1kaXNhYmxlZC5odG1sCiBwbGF0Zm9ybS9xdC9wbHVnaW5zL3F0LXF3aWRnZXQtcGx1
Z2luLmh0bWwKIAotW1F0XVtXSzJdIFJFR1JFU1NJT04ocjE1MTczNykKKyMgW1F0XVtXSzJdIFJF
R1JFU1NJT04ocjE1MTczNykKIHdlYmtpdC5vcmcvYi8xMTc4MjQgZmFzdC9yZXBsYWNlZC93aWR0
aDEwMHBlcmNlbnQtaW1hZ2UuaHRtbCBbIFNraXAgXQogCiAjID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAj
CkBAIC04MjIsMyArODIyLDEyIEBAIHdlYmtpdC5vcmcvYi83Njk4NiBzY3JvbGxiYXJzL3Njcm9s
bC1ydGwtb3ItYnQtbGF5ZXIuaHRtbAogCiAjIFtRdF0gSW1hZ2VzIHNjYWxlIGRpZmZlcmVudGx5
IGluIFdLMSBhbmQgV0syCiB3ZWJraXQub3JnL2IvOTIwMTUgdGFibGVzL21vemlsbGFfZXhwZWN0
ZWRfZmFpbHVyZXMvYnVncy9idWc4NTAxNi5odG1sCisKKyMgW1F0XVtXSzJdIGVuYWJsZSBwb2lu
dGVyIGxvY2sgdGVzdHMKK2h0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFBhc3MgXQorcG9pbnRl
ci1sb2NrLyBbIFBhc3MgXQorCisjIFtRdF1bV0syXSBUaGUgdGVzdCBpcyBwZXJmb3JtZWQgc3Vj
Y2Vzc2Z1bGx5LCBidXQgd2l0aG91dCAtLXNpbmdseSBhZnRlciB0aGF0IHRlc3QgYWxsIHRlc3Rz
IGNvbXBsZXRlIHdpdGg6IGZhaWxlZCB0aW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0
byBiZSBjYWxsZWQuCitwb2ludGVyLWxvY2svYnVnOTAzOTEtbW92ZS10aGVuLXdpbmRvdy1vcGVu
LWNyYXNoLmh0bWwgWyBTa2lwIF0KKyMgW1F0XVtXSzJdIEl0IGFsd2F5IGZhaWwuIE5vIGRvdWJs
ZWNsaWNrIHByb2Nlc3Npbmcgbm93LiBJdCBuZWVkcyBpbnZlc3RpZ2F0aW9uLgorcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205185</attachid>
            <date>2013-06-21 08:09:31 -0700</date>
            <delta_ts>2013-06-21 08:49:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117789-20130621190738.patch</filename>
            <type>text/plain</type>
            <size>200340</size>
            <attacher name="Stanislav Pikulik">stanislav.pikulik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NjBlNjM0YTllN2Q1
MmIzOTk0MjAzNzI3ODE5OWE5YjA2NGExZi4uN2Y0ZTgzYzUwNjdhNGY0MmJmNWI5MDE1MTdjYWRj
YTMxZjliYmZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTIxICBTdGFu
aXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRhcmdldCBtZXRob2QgdG8gZ2V0IHNlY3VyaXR5IG9yaWdpbiBv
ZiBkb2N1bWVudCB0byB3aGljaCB0aGUgZWxlbWVudCBiZWxvbmdzLCAKKyAgICAgICAgYmVmb3Jl
IHBvaW50ZXIgbG9jayB3aWxsIGJlIHJlcXVlc3RlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMjEgIFJhZHUg
U3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
dGVncmF0ZSBuZXcgcmVnaW9uT3ZlcnNldENoYW5nZSBldmVudCBpbnRvIGluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDcwODdiNTUzNmEyMzdiZjVkMmEwMDNlN2VjZTg5OTQ3ZGJmNDU3ZDAuLmY0OGYz
YTZkNzQ4MjVlNWNhYWJjNGM5ZTE2M2MzNmYyNjc4NGMzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMDkgQEAKKzIwMTMtMDYtMjEgIFN0YW5pc2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3Vs
aWtAbGdlLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2Nr
IEltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBhZGQgcG9pbnRlciBsb2NrIHBlcm1pc3Npb24gcmVxdWVzdCBwcm9jZXNzaW5nCisg
ICAgICAgIGFkZCBwb2ludGVyIGxvY2sgcmVxdWVzdHMgcHJvY2Vzc2luZworICAgICAgICBhZGQg
cW1sIEFQSQorICAgICAgICBhZGQgcW1sIHRlc3RzIGZvciBwb2ludGVyIGxvY2sKKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6CisgICAgICAgICogU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdldFR5cGVJRCk6Cisg
ICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50
ZXJMb2NrUG9saWN5KToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3cp
OgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OnBvaW50ZXJMb2NrZWQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZh
dGU6OnVubG9ja1BvaW50ZXIpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6
cG9pbnRlckxvY2tlZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1bmxv
Y2tQb2ludGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHA6CisgICAgICAg
IChRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOjpRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3cpOgorICAgICAgICAoUVdlYlBlcm1pc3Np
b25SZXF1ZXN0OjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
d2VicGVybWlzc2lvbnJlcXVlc3RfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvV2ViVmlldy90c3RfcG9pbnRlcmxvY2sucW1sOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazEuaHRt
bDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vcG9pbnRlcmxvY2syLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVy
TG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6
OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Ojpp
bnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxv
Y2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVy
bWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpXZWJQb2ludGVy
TG9ja01hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5Ojp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6c2V0V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnJlcXVlc3RQb2lu
dGVyVW5sb2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4
dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHk6OnBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRVcGRhdGVQb2ludGVyTG9ja1BvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9j
a1BvbGljaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6YWRkUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyOjpyZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnBv
aW50ZXJMb2NrUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9X
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlRdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkQWNx
dWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHk6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2Vi
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50
OjpRdFdlYlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50
Ojpwb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBXZWJLaXQyLnByaToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQb2ludGVyTG9ja0NsaWVudCk6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VTdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUlzUG9p
bnRlckxvY2tlZCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2sp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2NrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxQb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVy
TG9ja0NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VQb2ludGVyTG9ja0NsaWVudDo6c3VwcG9ydHNQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVu
dDo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnBlcm1pc3Npb25MZXZlbCk6CisgICAgICAg
IChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZXRQZXJtaXNz
aW9uTGV2ZWxGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNl
aXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjp+UG9pbnRl
ckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBvaW50ZXJMb2NrTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRl
ckxvY2tNYW5hZ2VyOjpXZWJQb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb2ludGVyTG9ja01hbmFnZXI6On5XZWJQb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN1cHBvcnRzUG9pbnRlckxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnJlcXVlc3RQb2ludGVyTG9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6cmVxdWVzdFBvaW50ZXJV
bmxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmlzUG9pbnRl
ckxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkQWNx
dWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVy
TG9ja01hbmFnZXI6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrTWFuYWdlcjo6c3RhcnRSZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja01hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjay5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
fldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6ZGlkVXBkYXRlUG9pbnRlckxvY2tE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXI6OmRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cG9saWN5Rm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlz
c2lvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBvaW50
ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRl
clVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9j
a2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6On5X
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVu
ZGxlUG9pbnRlckxvY2tDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbmplY3Rl
ZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKwogMjAxMy0wNi0y
MSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gRG8gbm90IHRyeSB0byBsb2FkIHZpZGVvcyBpbiB1bml0IHRlc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBjYmE0MjZjNTRmOTIxN2VmYzM4MDQzNzM5ODliN2RhOTAwZmZkOTEzLi43Yjk3OTc0YWEx
N2RkY2QwZTZlMGIyNDkxM2NiYzk5MDJkYjFiMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk0MSw2ICs5
NDEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAg
XAogICAgIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgXAogICAgIHBhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwIFwKKyAgICBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAg
XAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAg
ICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgXApAQCAtMjA5Nyw2ICsy
MDk4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9QYWdlVGhyb3R0bGVyLmggXAogICAgIHBh
Z2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5oIFwKICAgICBwYWdlL1BsdWdJbkNsaWVudC5oIFwKKyAg
ICBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIFwKICAgICBwYWdlL1BvcHVwT3BlbmluZ09i
c2VydmVyLmggXAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmggXAogICAgIHBhZ2UvU2NyZWVuLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4
IDk3NGI5OGRhNWY0ZWEzM2ExZGUzNGViZGNjZmY5OTBlNmZiMTM5YjIuLjRhZTZjOWYyZGY5MGRk
OTkyNDFkYzk0ZTY2NTVlMmEzODU2YTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTY4LDExICs2OCwxOSBAQCB2b2lkIFBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKICAgICAg
ICAgfQogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2Nr
Y2hhbmdlRXZlbnQsIHRhcmdldCk7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKLSAgICB9
IGVsc2UgaWYgKG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygp
KSB7Ci0gICAgICAgIG1fbG9ja1BlbmRpbmcgPSB0cnVlOwotICAgICAgICBtX2VsZW1lbnQgPSB0
YXJnZXQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53
ZWJraXRwb2ludGVybG9ja2Vycm9yRXZlbnQsIHRhcmdldCk7CisgICAgICAgIC8vIFRvIGRvIHBl
cm1pc3Npb24gcmVxdWVzdCBpdCBuZWVkcyB0byBoYXZlIGEgc2VjdXJpdHkgb3JpZ2luIG9mCisg
ICAgICAgIC8vIGRvY3VtZW50IHRoYXQgb3ducyBlbGVtZW50LiBGb3IgdGhpcyByZWFzb24gSSBz
YXZlIHRhcmdldCwgdGhhdAorICAgICAgICAvLyBjYW4gYmUgb2J0YWluZWQgZHVyaW5nIGV4ZWN1
dGluZyByZXF1ZXN0LgorICAgICAgICBtX3RhcmdldCA9IHRhcmdldDsKKyAgICAgICAgaWYgKG1f
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgICAg
ICAgICBtX2xvY2tQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdl
dDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHJlcXVlc3QgZmFpbGVkIHN5
bmNocm9ub3VzbHksIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRvIHN0b3JlIHRhcmdldAorICAgICAg
ICAgICAgbV90YXJnZXQgPSAwOworICAgICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMo
KS53ZWJraXRwb2ludGVybG9ja2Vycm9yRXZlbnQsIHRhcmdldCk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKQEAgLTExMCwxMCArMTE4LDE2IEBAIEVsZW1lbnQqIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsKIH0KIAorRWxl
bWVudCogUG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3RhcmdldC5nZXQoKTsKK30KKwogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZEFj
cXVpcmVQb2ludGVyTG9jaygpCiB7CiAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJr
aXRwb2ludGVybG9ja2NoYW5nZUV2ZW50LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIG1fbG9ja1Bl
bmRpbmcgPSBmYWxzZTsKKyAgICBtX3RhcmdldCA9IDA7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2tD
b250cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQpAQCAtMTQ1LDYgKzE1OSw3IEBA
IHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQoKQogewogICAgIG1fbG9j
a1BlbmRpbmcgPSBmYWxzZTsKICAgICBtX2VsZW1lbnQgPSAwOworICAgIG1fdGFyZ2V0ID0gMDsK
IH0KIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaAppbmRleCBjODIwNzU0YWUxYTRlY2M1M2QxMTZhOGQ0MjFk
YjRmNjZjNDRlMzc0Li5kZWE0MTE0ZGJkMjNiMmVkN2U3M2Y0ZWJkYjhlMWU5NWMzYWM5MTk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKQEAgLTUwLDYg
KzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCopOwog
ICAgIGJvb2wgbG9ja1BlbmRpbmcoKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29u
c3Q7CisgICAgRWxlbWVudCogdGFyZ2V0KCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpOwogICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CkBAIC02
NSw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvY2tQZW5kaW5nOwogICAgIFJlZlB0
cjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50T2ZS
ZW1vdmVkRWxlbWVudFdoaWxlV2FpdGluZ0ZvclVubG9jazsKKyAgICBSZWZQdHI8RWxlbWVudD4g
bV90YXJnZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5wcmkKaW5kZXggZGMxN2ZhYWFjMGI5Y2NmZjgyOGI0YmNkNzYxNGJiYWE2M2YxZGQ5Yy4u
YWJlMWRlZDUwMDkyYjQ5NjY4MDFjZmNlNTI5NGE1Y2FmZTFiZDBmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLnByaQpAQCAtNDgsNiArNDgsNyBAQCBWUEFUSCA9IFwKICAgICBXZWJQcm9jZXNz
L05ldHdvcmtJbmZvIFwKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucyBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAgICAgV2ViUHJv
Y2Vzcy9SZXNvdXJjZUNhY2hlIFwKICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UgXAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQgXApAQCAtNTksNiArNjAsNyBAQCBWUEFUSCA9IFwKICAgICBV
SVByb2Nlc3MvRG93bmxvYWRzIFwKICAgICBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAg
VUlQcm9jZXNzL1BsdWdpbnMgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAgICAgVUlQ
cm9jZXNzL1N0b3JhZ2UgXAogICAgIFNoYXJlZCBcCiAgICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9u
IFwKQEAgLTEwMCw2ICsxMDIsOSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBc
CisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAorICAgIFdlYlBv
aW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbiBcCisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1l
c3NhZ2VzLmluIFwKICAgICBEcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzLmluIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCBl
YThlMmYxYmE3NDFhNzVhMjQyMGQ5MWQzMjA5MzYwMjMzNzRhNGZiLi40OTk3MGZiYzJkMDk4MzUy
MTBmYmZhZWExNjIzYTFkNjBkM2E5OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCkBAIC0xMzQsNiArMTM0LDkgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdl
KiBXS1BhZ2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQ
YWdlR3JvdXBSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BsdWdpblNpdGVEYXRh
TWFuYWdlciogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVmOwordHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKiBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QqIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXIqIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3BhY2VSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyKiBXS1RleHRDaGVja2VyUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJyYXRpb24qIFdLVmlicmF0aW9uUmVm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAppbmRleCA5YWY3Yzc2
ZTNiZDI4NGVjZmY5OTBkOWMzM2VjMjY4ODYyZTk1MTNmLi45NWY4YzkxNDJiZGYyMjc3Y2JhMzJi
NDNmMzExMmNmNDIwZjY5ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJh
aXRzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdL
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVycwogICAgIG9m
ZnNldG9mKFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQsIGJlZ2FuRW50ZXJGdWxsU2NyZWVu
KSwKICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCkKIH07Ci0gICAgCisK
IGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnQ+Ojpp
bnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLUGFnZUNvbnRleHRN
ZW51Q2xpZW50LCBjb250ZXh0TWVudURpc21pc3NlZCksCiAgICAgb2Zmc2V0b2YoV0tQYWdlQ29u
dGV4dE1lbnVDbGllbnQsIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSksCkBAIC03Miw2
ICs3Miw3IEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlTG9hZGVyQ2xpZW50
Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKIGNvbnN0IHNpemVfdCBBUElDbGllbnRU
cmFpdHM8V0tQYWdlVUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0gewogICAg
IG9mZnNldG9mKFdLUGFnZVVJQ2xpZW50LCBjcmVhdGVOZXdQYWdlKSwKICAgICBvZmZzZXRvZihX
S1BhZ2VVSUNsaWVudCwgc2hvd0NvbG9yUGlja2VyKSwKKyAgICBvZmZzZXRvZihXS1BhZ2VVSUNs
aWVudCwgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCksCiAgICAg
c2l6ZW9mKFdLUGFnZVVJQ2xpZW50KQogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElD
bGllbnRUcmFpdHMuaAppbmRleCA0YTY2YTRlZTgwMjhlOWQ3ZDc0ZTE0M2I2M2NjZTAxYjk0Mzk3
ODY3Li4xNDM4MGZiMTEyMmNkMzQyMGUxYTU0MzYxZDAzNWYxZjEzODNlYjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC02OCw3ICs2OCw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VMb2FkZXJDbGllbnQ+IHsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudD4gewotICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107CisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50PiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggNGJlMzk5YTcxM2JmOTJiYzdiOTgyMDZjN2ViMTEy
OTg0MDdjNWU4Zi4uYjk2NDlkNDcyYmViNjFkMWNjYzkyMDBhNWRmN2MzNGEyZTU2NTVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTA2LDYgKzEwNiw4IEBAIHB1YmxpYzoKICAg
ICAgICAgVHlwZVBhZ2UsCiAgICAgICAgIFR5cGVQYWdlR3JvdXAsCiAgICAgICAgIFR5cGVQbHVn
aW5TaXRlRGF0YU1hbmFnZXIsCisgICAgICAgIFR5cGVQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0LAorICAgICAgICBUeXBlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciwKICAgICAgICAg
VHlwZVByZWZlcmVuY2VzLAogICAgICAgICBUeXBlVGV4dENoZWNrZXIsCiAgICAgICAgIFR5cGVW
aWJyYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252
ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3Bw
CmluZGV4IDgxYWY3ZWIyNzAyZTY0MDYyMWUyOGNiYTc1MDhhNjgzNmNlNDM2ZjYuLjlmMWU1N2Jm
NzMxZWU1OGUzZjJlNDhjYTRmZDU5NzMzMjk2ZDRlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC04Myw2ICs4MywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAg
ICAgICBtX2NsaWNrQ291bnQgPSB3ZWJFdmVudC5jbGlja0NvdW50KCk7CiAKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgICAgICBtX21vdmVtZW50RGVsdGEgPSBXZWJDb3JlOjpJbnRQb2lu
dCh3ZWJFdmVudC5kZWx0YVgoKSwgd2ViRXZlbnQuZGVsdGFZKCkpOworI2VuZGlmCisKICAgICAg
ICAgbV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkp
CiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDU2ZjE0NGQ2ZGE0YjI1NzNjOWRmZTU2MDZhYzM0MjkzMjA4MTk0NmYuLjAx
ZjRjNmIzZWVjM2RhZTIwNDE2MGI3ZTI4MWJiMTllODg2OTJlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTEwNiw2ICsxMDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8
IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIGVuY29kZXIgPDwgcG9pbnRlckxvY2tQZXJtaXNzaW9uczsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbmNvZGVyIDw8IHVzZXNOZXR3b3JrUHJv
Y2VzczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDIxOTNjNzQ2NzY3ODhlZjJkZTZlYTc5MWFmNzkz
Zjc0ODZmMWViMC4uMDJhNWJiZGNlMTY0MmY0YjIyMDk3MjI3YTM3NjhjMGEzNDMyNGI5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lv
bnM7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgSGFzaE1hcDxTdHJp
bmcsIGJvb2w+IHBvaW50ZXJMb2NrUGVybWlzc2lvbnM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCmluZGV4IGZlNjMzNmExMDE1NjNmMWJlMTZkNWIwZDgxNzM0OGQ1N2U1NWQ0MzcuLmZk
MDIyMDBlMjdhZWIxY2M1MmVjODQ4ODgyZjBjNGMxMDRjN2UxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAt
MTg4LDYgKzE4OCw5IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIFwKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIFwKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIFwKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaCBcCkBAIC0y
NzksNiArMjgyLDExIEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oIFwKICAgICBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIFwKKyAgICBVSVByb2Nlc3Mv
UG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmggXAorICAg
IFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5o
IFwKICAgICBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJQ
cmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggXApAQCAtMzE2
LDYgKzMyNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVBvaW50ZXJMb2NrQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggXApAQCAtMzM5LDYgKzM0OCwx
MCBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBc
CiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmggXAogICAg
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBcCisg
ICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdl
ci5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bkNhbGxiYWNrLmggXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJh
dHRlcnlDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIu
aCBcCkBAIC01NDksNiArNTYyLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwIFwKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQ
cm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAgXApAQCAtNTg5LDYgKzYwNCwxMiBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIFwKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2lu
dGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBcCisgICAgVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
IFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJv
eHlRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFn
ZXJQcm94eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBcCkBAIC02
ODksNiArNzEwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBv
aW50ZXJMb2NrQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIFwK
QEAgLTcxNSw2ICs3MzcsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwIFwKKyAgICBXZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKaW5kZXggNjRjOGQxYWJmYjEwMGM4ZTk2MjU1Nzc5MTE5YmE3YjRlMTZlYjliMy4u
OTYxNmYxMWI2NjIyMmNiNzljMzc0ZDU5N2U0MDYyNzI3OTA4YjllNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Owog
Y2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC05MCw2ICs5MSw4IEBA
IGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7
CitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xh
c3MgV2ViUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgV2ViUmVuZGVyTGF5ZXI7CkBAIC0xMzYsNiAr
MTM5LDkgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYs
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkKIFdLX0FERF9BUElfTUFQUElORyhXS1Bh
Z2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZVJlZiwg
V2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
UmVmLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmLCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUHJveHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmLCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KQorV0tfQUREX0FQSV9NQVBQSU5H
KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZWYsIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlBy
ZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQ
cm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJMYXllclJlZiwgV2Vi
UmVuZGVyTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCmluZGV4IDE2MjlhNTYyNzM5OGVmNjYzNWZjM2I0MGZlOGQ1M2ViYmFmYjQ0NmEuLjE0NzBm
MGI3YzAyMGUyMDEzNjZkYjZhNzhkODhiODY1YjliZDJjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC00MSw2ICs0MSw5IEBACiAjaW5jbHVk
ZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eS5oIgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSAiV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHkuaCIKQEAgLTI2MCw2ICsyNjMsMTUgQEAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7CiB9CiAKK1dLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCiBXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQbHVnaW5T
aXRlRGF0YU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKaW5kZXggM2NlNzMxZTc4ZjBmY2Q4MGI4YTlhZDdlNGZhMDVkMTU1YzkzMDBlMC4uZGU0
NDhjYTk1OWRiYjhmNjQyNzU3ZmVlNTkwNzRlNDA0ZDRhNmNlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMTk1LDcgKzE5NSw4IEBAIFdLX0VYUE9S
VCBXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBXS0NvbnRleHRHZXROZXR3b3JrSW5mb01hbmFnZXIo
V0tDb250ZXh0UmVmIGNvCiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29u
dGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQ
T1JUIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFBsdWdpblNpdGVEYXRh
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlclJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCk7Ci0gICAgCitXS19FWFBPUlQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tDb250ZXh0UmVm
IGNvbnRleHQpOworCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rp
b24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhX
S0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRleHRHZXRT
dGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0
U3RhdGlzdGljc1dpdGhPcHRpb25zKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0YXRpc3RpY3NP
cHRpb25zIHN0YXRpc3RpY3NNYXNrLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdl
dFN0YXRpc3RpY3NGdW5jdGlvbiBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmgKaW5kZXggMTc2NTc4ZmVlOTUyZDVmZTZhMTc0NWE3MzljY2MwODI1MDBmNDM4
Yi4uOGExZjNlZjkzYmYyN2Y1NGRlZWIwMDkzOWUwMmExZDUzYzlkMWQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtMjIwLDYgKzIyMCw3IEBAIHR5cGVkZWYg
dm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2spKFdLUGFnCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VVbmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLUGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFdLRGlj
dGlvbmFyeVJlZiBwbHVnaW5JbmZvRGljdGlvbmFyeSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogLy8gRGVwcmVjYXRlZCAgICAKIHR5cGVkZWYg
V0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjApKFdLUGFnZVJlZiBwYWdlLCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMjgyLDEwICsyODMsMTMgQEAgc3RydWN0IFdLUGFnZVVJ
Q2xpZW50IHsKICAgICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKICAgICBXS1BhZ2VIaWRl
Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhpZGVDb2xvclBpY2tlcjsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNr
ZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5
Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudCBXS1BhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS1BhZ2VVSUNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMiB9OworZW51bSB7IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uID0g
MyB9OwogCiAvLyBGaW5kIGNsaWVudC4KIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZEZpbmRTdHJp
bmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5zaWduZWQg
bWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxODJiNGI0ZmU4MDdlYTg2M2Q0OTBkM2MyMThjMTZh
ZjQ1M2ZiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBM
RyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworCitXS1R5cGVJRCBXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgcmV0dXJuIHRvQVBJKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eTo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiBBUElPYmplY3Q6OlR5cGVOdWxsOwor
I2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyU2V0UHJvdmlk
ZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpCit7CisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPmluaXRpYWxpemVQcm92aWRl
cih3a1Byb3ZpZGVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3koV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
LCBib29sIGFsbG93ZWQpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwo
bWFuYWdlclJlZiktPnByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3kodG9JbXBsKG9y
aWdpbiksIGFsbG93ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGljaWVzKFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG9yaWdpbnMpCit7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3Zp
ZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOworI2VuZGlm
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE3MThiNDk1NWUw
OTlkZDg2ZGRlNjY0NTM3ZTlmY2MwNGJkNDk3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNz
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisKKyNpbmNsdWRlICJXS1BvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgdm9pZCBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcihXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25Qcm92aWRlciogd2tQcm92aWRlcik7CitXS19FWFBPUlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5KFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyhXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBvcmlnaW5z
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNmU4MWQ3M2ExMTk5N2VhNDU3Y2MwNzBjODhiNGY4N2ZjMzI3OGJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
TEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXJfaAorI2RlZmluZSBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKKworI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKwordHlwZWRlZiB2b2lkICgqV0tQb2ludGVyTG9ja1Blcm1pc3Npb25BZGRO
b3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2spKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyQ2Fs
bGJhY2spKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tEaWN0aW9uYXJ5UmVmICgqV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlclBlcm1pc3Npb25zQ2FsbGJhY2spKGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworCitzdHJ1Y3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciB7CisgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS1BvaW50ZXJM
b2NrUGVybWlzc2lvbkFkZE5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayAgICAgICAgICAgIGFk
ZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI7CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25Qcm92aWRlclJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayByZW1vdmVQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyOworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXJQZXJtaXNzaW9uc0NhbGxiYWNrICAgICAgICAgICAgICAgcG9pbnRlckxvY2tQZXJtaXNzaW9u
czsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI7CisKK2VudW0geyBrV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9OworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MGQ0OTdm
ZmJjOGFlMmI2NDJmNmI3N2JhZTQ1YWFhMzNiM2MzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0
cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dL
VHlwZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpCit7CisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9BUEkoUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdDo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiBBUElPYmplY3Q6OlR5cGVO
dWxsOworI2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxs
b3coV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9JbXBs
KHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpLT5hbGxvdygpOworI2VuZGlmCit9CisKK3Zv
aWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueShXS1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHJldHVybiB0b0ltcGwocG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCktPmRlbnkoKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ1MTg2ZDY3MDIyMDk4MWMzZDdjYTA4MThmMzI4YzBjYzY2NTM0YmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RfaAorI2RlZmluZSBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdEFsbG93KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdERlbnkoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorCisjZW5kaWYgLy8gV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDEy
MTNmZDliMjAxODdiOTk1OTNmNDUwMWZjMmQ5MTZkNTdhMjY2MWEuLjhhNDQ4MGNlMmRkMTE5Njk2
NTMzM2MyN2NmNmM2YTFhZjU3M2ZhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNDUsNiArNDUsOSBAQAogI2luY2x1ZGUg
IldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogI2luY2x1ZGUgIldlYlBhZ2VH
cm91cC5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAj
aW5jbHVkZSAicWdsb2JhbC5oIgogI2luY2x1ZGUgInFxdWlja25ldHdvcmtyZXBseV9wLmgiCkBA
IC0zMzUsNiArMzM4LDEwIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAgd2ViUGFnZVBy
b3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KHFfcHRyKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB3ZWJQYWdlUHJveHktPnBvaW50ZXJMb2NrTWFu
YWdlcigpLT5zZXRXZWJWaWV3KHFfcHRyKTsKKyNlbmRpZgorCiAgICAgcGFnZUV2ZW50SGFuZGxl
ci5yZXNldChuZXcgUXRXZWJQYWdlRXZlbnRIYW5kbGVyKHdlYlBhZ2UuZ2V0KCksIHBhZ2VWaWV3
LmRhdGEoKSwgcV9wdHIpKTsKIAogICAgIHsKQEAgLTUyNyw2ICs1MzQsMTggQEAgYm9vbCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QKICAgICByZXR1
cm4gd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOwogfQogCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnBvaW50ZXJM
b2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiB3ZWJQYWdlUHJveHktPnBvaW50ZXJMb2NrTWFu
YWdlcigpLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6dW5sb2NrUG9pbnRlcigpCit7CisgICAgd2ViUGFnZVByb3h5LT5wb2ludGVyTG9ja01hbmFn
ZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9CisjZW5kaWYKKwogdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6bG9hZFByb2dyZXNzRGlkQ2hhbmdlKGludCBsb2FkUHJvZ3Jlc3MpCiB7CiAg
ICAgUV9RKFFRdWlja1dlYlZpZXcpOwpAQCAtMTA3MSwxMiArMTA5MCwzMSBAQCBib29sIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0CiAgICAg
UV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwogICAgIHJldHVybiBkLT50cmFuc3BhcmVudEJhY2tn
cm91bmQoKTsKIH0KKwogdm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRUcmFuc3Bh
cmVudEJhY2tncm91bmQoYm9vbCBlbmFibGUpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwog
ICAgIGQtPnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChlbmFibGUpOwogfQogCitib29sIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OnBvaW50ZXJMb2NrZWQoKSBjb25zdAoreworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVy
biBkLT5wb2ludGVyTG9ja2VkKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCit2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnVubG9ja1BvaW50ZXIoKQorewor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUV9EKFFRdWlja1dlYlZpZXcpOworICAgIGQt
PnVubG9ja1BvaW50ZXIoKTsKKyNlbmRpZgorfQorCiBib29sIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWw6OnVzZURlZmF1bHRDb250ZW50SXRlbVNpemUoKSBjb25zdAogewogICAgIFFfRChjb25z
dCBRUXVpY2tXZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDQ2ODUxNWZjZmZhODE5NDkxYjBiZGVlMzUzNjU2ZTM4
MTBhMDgwMDkuLmZmNjVmYmEwZWQ3ZGVlNjNiNmZlN2E0ODM2OTE4NDg4MjA4NWNkNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApA
QCAtMjU2LDcgKzI1Niw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAKICAgICBRX1BST1BFUlRZKGJvb2wgdHJhbnNw
YXJlbnRCYWNrZ3JvdW5kIFdSSVRFIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZCBSRUFEIHRyYW5z
cGFyZW50QmFja2dyb3VuZCkKICAgICBRX1BST1BFUlRZKGJvb2wgdXNlRGVmYXVsdENvbnRlbnRJ
dGVtU2l6ZSBXUklURSBzZXRVc2VEZWZhdWx0Q29udGVudEl0ZW1TaXplIFJFQUQgdXNlRGVmYXVs
dENvbnRlbnRJdGVtU2l6ZSkKLQorICAgIFFfUFJPUEVSVFkoYm9vbCBwb2ludGVyTG9ja2VkIFJF
QUQgcG9pbnRlckxvY2tlZCkKICAgICBRX1BST1BFUlRZKGludCBwcmVmZXJyZWRNaW5pbXVtQ29u
dGVudHNXaWR0aCBXUklURSBzZXRQcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCBSRUFEIHBy
ZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoIE5PVElGWSBwcmVmZXJyZWRNaW5pbXVtQ29udGVu
dHNXaWR0aENoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShpbnQgZGV2aWNlV2lkdGggV1JJVEUgc2V0
RGV2aWNlV2lkdGggUkVBRCBkZXZpY2VXaWR0aCBOT1RJRlkgZGV2aWNlV2lkdGhDaGFuZ2VkKQog
ICAgIFFfUFJPUEVSVFkoaW50IGRldmljZUhlaWdodCBXUklURSBzZXREZXZpY2VIZWlnaHQgUkVB
RCBkZXZpY2VIZWlnaHQgTk9USUZZIGRldmljZUhlaWdodENoYW5nZWQpCkBAIC0yNzMsNyArMjcz
LDYgQEAgY2xhc3MgUVdFQktJVF9FWFBPUlQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1
YmxpYyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFRbWxDb21wb25lbnQqIGZpbGVQaWNrZXIg
UkVBRCBmaWxlUGlja2VyIFdSSVRFIHNldEZpbGVQaWNrZXIgTk9USUZZIGZpbGVQaWNrZXJDaGFu
Z2VkKQogICAgIFFfUFJPUEVSVFkoUVFtbENvbXBvbmVudCogZGF0YWJhc2VRdW90YURpYWxvZyBS
RUFEIGRhdGFiYXNlUXVvdGFEaWFsb2cgV1JJVEUgc2V0RGF0YWJhc2VRdW90YURpYWxvZyBOT1RJ
RlkgZGF0YWJhc2VRdW90YURpYWxvZ0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9u
ZW50KiBjb2xvckNob29zZXIgUkVBRCBjb2xvckNob29zZXIgV1JJVEUgc2V0Q29sb3JDaG9vc2Vy
IE5PVElGWSBjb2xvckNob29zZXJDaGFuZ2VkKQotCiAgICAgUV9QUk9QRVJUWShRV2ViUHJlZmVy
ZW5jZXMqIHByZWZlcmVuY2VzIFJFQUQgcHJlZmVyZW5jZXMgQ09OU1RBTlQgRklOQUwpCiAgICAg
UV9QUk9QRVJUWShRV2ViS2l0VGVzdCogdGVzdCBSRUFEIHRlc3QgQ09OU1RBTlQgRklOQUwpCiAg
ICAgUV9QUk9QRVJUWShRUW1sTGlzdFByb3BlcnR5PFFRdWlja1VybFNjaGVtZURlbGVnYXRlPiB1
cmxTY2hlbWVEZWxlZ2F0ZXMgUkVBRCBzY2hlbWVEZWxlZ2F0ZXMpCkBAIC0zNDUsNiArMzQ0LDgg
QEAgcHVibGljOgogICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCk7CiAKKyAgICBib29sIHBvaW50ZXJM
b2NrZWQoKSBjb25zdDsKKwogICAgIGJvb2wgdXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0VXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZShib29sIGVuYWJsZSk7
CiAKQEAgLTM2Myw2ICszNjQsNyBAQCBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IFFTdHJpbmcmKTsKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBR
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiB2YWx1ZSA9IFFKU1ZhbHVlKCkpOwogICAg
IHZvaWQgZmluZFRleHQoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBGaW5kRmxhZ3Mgb3B0aW9ucyA9
IDApOworICAgIHZvaWQgdW5sb2NrUG9pbnRlcigpOwogCiBRX1NJR05BTFM6CiAgICAgdm9pZCBs
b2FkVmlzdWFsbHlDb21taXR0ZWQoKTsKQEAgLTM4OCw2ICszOTAsOCBAQCBRX1NJR05BTFM6CiAg
ICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aENoYW5nZWQoKTsKICAgICB2b2lk
IHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQoKTsKICAgICB2b2lkIHRleHRGb3VuZChpbnQgbWF0
Y2hDb3VudCk7CisgICAgdm9pZCBwb2ludGVyTG9ja1JlcXVlc3RlZCgpOworICAgIHZvaWQgcG9p
bnRlclVubG9ja1JlcXVlc3RlZCgpOwogCiBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWwoUVF1aWNrV2ViVmlldyogd2ViVmlldywgUVF1aWNrV2ViVmlld1ByaXZhdGUqIHdl
YlZpZXdQcml2YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaAppbmRleCA0MzRmNDExMjk4N2I0ZTAwYTU3NGY0ZjE1N2MxZWY4
ZTE2NGE3MWVhLi5mNGUwNmE0NDcxMzk1ZGQ2MWZmMWNhMGY4MjMwNTdmYzQ5YjFjN2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Bf
cC5oCkBAIC0xMjMsNiArMTIzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVVzZXJTY3Jp
cHRzKCk7CiAgICAgdm9pZCB1cGRhdGVTY2hlbWVEZWxlZ2F0ZXMoKTsKIAorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgYm9vbCBwb2ludGVyTG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCB1
bmxvY2tQb2ludGVyKCk7CisjZW5kaWYKKwogICAgIFFQb2ludEYgY29udGVudFBvcygpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q29udGVudFBvcyhjb25zdCBRUG9pbnRGJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0
LmNwcAppbmRleCA0NTY5N2EyMmI2NjJjMjY5ZTIzYjc0OWY1OWY4ZmQyMjlmOWFiZjMyLi4zN2Jk
NjlmZWEwNTA4OTEzN2I2ZWZkZjcyNzAyNGJjZDliY2RhNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3Bw
CkBAIC0yNywxMCArMjcsMTEgQEAKIAogY2xhc3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZSA6IHB1YmxpYyBRU2hhcmVkRGF0YSB7CiBwdWJsaWM6Ci0gICAgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgZ2VvID0gMCwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiBub3RpZnkgPSAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBl
IHJlcVR5cGUgPSBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Okdlb2xvY2F0aW9uKQorICAgIFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
biwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMCwgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0UmVmIHBvaW50ZXIgPSAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RU
eXBlIHJlcVR5cGUgPSBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Okdlb2xvY2F0aW9uKQogICAgICAg
ICA6IG9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAgICAgLCBnZW9sb2NhdGlvblJlcXVlc3Qo
Z2VvKQogICAgICAgICAsIG5vdGlmaWNhdGlvblJlcXVlc3Qobm90aWZ5KQorICAgICAgICAsIHBv
aW50ZXJMb2NrUmVxdWVzdChwb2ludGVyKQogICAgICAgICAsIHR5cGUocmVxVHlwZSkKICAgICAg
ICAgLCBhbGxvdyhmYWxzZSkKICAgICB7CkBAIC01MCw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBX
S1JldGFpblB0cjxXS1NlY3VyaXR5T3JpZ2luUmVmPiBvcmlnaW47CiAgICAgV0tSZXRhaW5QdHI8
V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmPiBnZW9sb2NhdGlvblJlcXVlc3Q7CiAg
ICAgV0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZj4gbm90aWZp
Y2F0aW9uUmVxdWVzdDsKKyAgICBXS1JldGFpblB0cjxXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RSZWY+IHBvaW50ZXJMb2NrUmVxdWVzdDsKICAgICBRV2ViUGVybWlzc2lvblJlcXVlc3Q6
OlJlcXVlc3RUeXBlIHR5cGU7CiAgICAgUXRXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eUluZm87
CiAgICAgYm9vbCBhbGxvdzsKQEAgLTYyLDE2ICs2NCwxNyBAQCBRV2ViUGVybWlzc2lvblJlcXVl
c3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luLAogCiBRV2ViUGVybWlzc2lvblJlcXVlc3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3Jl
YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lvblJlcXVl
c3Qob3JpZ2luLCAwLCByZXF1ZXN0LCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Ok5vdGlmaWNhdGlv
bik7CisgICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCAwLCByZXF1
ZXN0LCAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Ok5vdGlmaWNhdGlvbik7CiB9CiAKLVFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5S
ZWYgc2VjdXJpdHlPcmlnaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBXS05vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UmVmIG5vdGlmeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5cGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgUU9iamVjdCogcGFy
ZW50KQorUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lvblJlcXVlc3Qo
b3JpZ2luLCAwLCAwLCByZXF1ZXN0LCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlBvaW50ZXJMb2Nr
KTsKK30KKworUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpRV2ViUGVybWlzc2lvblJlcXVlc3QoV0tT
ZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIGdlbywgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnks
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyLCBRV2ViUGVybWlzc2lv
blJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5cGUsIFFPYmplY3QqIHBhcmVudCkKICAgICA6IFFPYmpl
Y3QocGFyZW50KQotICAgICwgZChuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShzZWN1
cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHR5cGUpKQorICAgICwgZChuZXcgUVdlYlBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZShzZWN1cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHBvaW50ZXIsIHR5
cGUpKQogewogfQogCkBAIC0xMDIsNiArMTA1LDE0IEBAIHZvaWQgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0OjpzZXRBbGxvdyhib29sIGFjY2VwdGVkKQogICAgICAgICAgICAgV0tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdERlbnkoZC0+bm90aWZpY2F0aW9uUmVxdWVzdC5nZXQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBvaW50ZXJMb2NrOiB7CisgICAgICAgIGlmIChh
Y2NlcHRlZCkKKyAgICAgICAgICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KGQtPnBvaW50ZXJMb2NrUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdERlbnkoZC0+cG9pbnRlckxvY2tSZXF1ZXN0
LmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMTE4LDQgKzEyOSwzIEBAIFF0V2ViU2Vj
dXJpdHlPcmlnaW4qIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIHJldHVybiAmKGQtPnNlY3VyaXR5SW5mbyk7CiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaAppbmRl
eCAwMDAyNTJiZGJlMWFiOGM1OGFhYTI5NzdhNzk5M2Q1ZDM5MDY0OWE0Li42ZjY0ZWE2MDcxNWUx
ZWZhNDZkMjNhMTJlZDljOTVlYjg5YTdiMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8UXRDb3JlL3FzaGFyZWRkYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1
cml0eU9yaWdpbi5oPgogCiBjbGFzcyBRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOwpAQCAt
NDEsMTEgKzQyLDEzIEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dCA6IHB1YmxpYyBRT2JqZWN0IHsKIHB1YmxpYzoKICAgICBlbnVtIFJlcXVlc3RUeXBlIHsKICAg
ICAgICAgR2VvbG9jYXRpb24sCi0gICAgICAgIE5vdGlmaWNhdGlvbgorICAgICAgICBOb3RpZmlj
YXRpb24sCisgICAgICAgIFBvaW50ZXJMb2NrCiAgICAgfTsKIAogICAgIHN0YXRpYyBRV2ViUGVy
bWlzc2lvblJlcXVlc3QqIGNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RSZWYpOwogICAgIHN0YXRpYyBRV2ViUGVybWlzc2lvblJlcXVlc3Qq
IGNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKKyAgICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1
cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmKTsKICAgICB2
aXJ0dWFsIH5RV2ViUGVybWlzc2lvblJlcXVlc3QoKTsKIAogICAgIFJlcXVlc3RUeXBlIHR5cGUo
KSBjb25zdDsKQEAgLTU3LDE1ICs2MCwxMCBAQCBwdWJsaWMgUV9TTE9UUzoKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKLSAgICBRV2Vi
UGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJl
ZiBnZW8gPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiBub3RpZnkgPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICwg
UVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlID0gR2VvbG9jYXRpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBRV2Vi
UGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMCwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmIHBvaW50ZXIgPSAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5
cGUgPSBHZW9sb2NhdGlvbiwgUU9iamVjdCogcGFyZW50ID0gMCk7CiAKIHByaXZhdGU6CiAgICAg
UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
PiBkOwogfTsKIAotCiAjZW5kaWYgLy8gcXdlYnBlcm1pc3Npb25yZXF1ZXN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfcG9pbnRlcmxvY2sucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9wb2ludGVybG9jay5xbWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBm
N2JlMWRiNzFmMjUzYzE5MjUwNGJmNDM0ZWY3NDFlOGI0ZTM2NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90
c3RfcG9pbnRlcmxvY2sucW1sCkBAIC0wLDAgKzEsMTE1IEBACitpbXBvcnQgUXRRdWljayAyLjAK
K2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQu
ZXhwZXJpbWVudGFsIDEuMAorCitXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRo
OiAyMDAKKyAgICBoZWlnaHQ6IDIwMAorCisgICAgcHJvcGVydHkgYm9vbCBleHBlY3RlZFBlcm1p
c3Npb246IGZhbHNlCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogcGVybWlzc2lvblNw
eQorICAgICAgICB0YXJnZXQ6IGV4cGVyaW1lbnRhbAorICAgICAgICBzaWduYWxOYW1lOiAicGVy
bWlzc2lvblJlcXVlc3RlZCIKKyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDog
cG9pbnRlckxvY2tTcHkKKyAgICAgICAgdGFyZ2V0OiBleHBlcmltZW50YWwKKyAgICAgICAgc2ln
bmFsTmFtZTogInBvaW50ZXJMb2NrUmVxdWVzdGVkIgorICAgIH0KKworICAgIFNpZ25hbFNweSB7
CisgICAgICAgIGlkOiBwb2ludGVyVW5sb2NrU3B5CisgICAgICAgIHRhcmdldDogZXhwZXJpbWVu
dGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJwb2ludGVyVW5sb2NrUmVxdWVzdGVkIgorICAgIH0K
KworICAgIGV4cGVyaW1lbnRhbC5vblBlcm1pc3Npb25SZXF1ZXN0ZWQ6IHsKKyAgICAgICAgLy8g
TXVzdCBiZSBmYWxzZSBieSBkZWZhdWx0CisgICAgICAgIGlmICghcGVybWlzc2lvbi5hbGxvdykg
eworICAgICAgICAgICBwZXJtaXNzaW9uLmFsbG93ID0gdHJ1ZQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbDogcGVybWlzc2lvbiBtdXN0IGJlIHNldCB0byBm
YWxzZSIpCisgICAgICAgIH0KKworICAgICAgICBpZiAocGVybWlzc2lvbi50eXBlID09IFBlcm1p
c3Npb25SZXF1ZXN0LlBvaW50ZXJMb2NrKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiUGVy
bWlzc2lvbiBpcyBQb2ludGVyTG9jayIpCisgICAgICAgIH0KKyAgICB9CisKKyAgICBleHBlcmlt
ZW50YWwub25Qb2ludGVyTG9ja1JlcXVlc3RlZDogeworICAgICAgICBjb25zb2xlLmxvZygiUG9p
bnRlckxvY2sgaXMgcmVxdWVzdGVkIikKKyAgICB9CisKKyAgICBleHBlcmltZW50YWwub25Qb2lu
dGVyVW5sb2NrUmVxdWVzdGVkOiB7CisgICAgICAgIGNvbnNvbGUubG9nKCJQb2ludGVyIFVubG9j
ayBpcyByZXF1ZXN0ZWQiKQorICAgIH0KKworICAgIFRlc3RDYXNlIHsKKyAgICAgICAgbmFtZTog
IldlYlZpZXdQb2ludGVyTG9jayBSZXF1ZXN0IgorCisgICAgICAgIC8vIERlbGF5ZWQgd2luZG93
U2hvd24gdG8gd29ya2Fyb3VuZCBwcm9ibGVtcyB3aXRoIFF0NSBpbiBkZWJ1ZyBtb2RlLgorICAg
ICAgICB3aGVuOiBmYWxzZQorICAgICAgICBUaW1lciB7CisgICAgICAgICAgICBydW5uaW5nOiBw
YXJlbnQud2luZG93U2hvd24KKyAgICAgICAgICAgIHJlcGVhdDogZmFsc2UKKyAgICAgICAgICAg
IGludGVydmFsOiAxCisgICAgICAgICAgICBvblRyaWdnZXJlZDogcGFyZW50LndoZW4gPSB0cnVl
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdF9wb2ludGVyTG9ja1JlcXVlc3RXaXRoRm9yY2VkRXhpdCgpIHsK
KyAgICAgICAgICAgIHBlcm1pc3Npb25TcHkuY2xlYXIoKQorICAgICAgICAgICAgcG9pbnRlckxv
Y2tTcHkuY2xlYXIoKQorCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJs
KCIuLi9jb21tb24vcG9pbnRlcmxvY2sxLmh0bWwiKQorICAgICAgICAgICAgcGVybWlzc2lvblNw
eS53YWl0KCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZShwZXJtaXNzaW9uU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShwb2lu
dGVyTG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZXJpbWVudGFsLnBv
aW50ZXJMb2NrZWQsIHRydWUpCisKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHkuY2xlYXIo
KQorICAgICAgICAgICAgZXhwZXJpbWVudGFsLnVubG9ja1BvaW50ZXIoKQorICAgICAgICAgICAg
cG9pbnRlclVubG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlclVubG9j
a1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZXJpbWVudGFsLnBvaW50ZXJM
b2NrZWQsIGZhbHNlKQorCisgICAgICAgICAgICAvLyBPbmx5IHRoZSBQb2ludGVyTG9ja1JlcXVl
c3RlZCBub3RpZmljYXRpb24gaXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAvLyBBIHBlcm1pc3Np
b24gbXVzdCBiZWVuIGNhY2hlZAorICAgICAgICAgICAgcG9pbnRlckxvY2tTcHkuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3BvaW50
ZXJsb2NrMS5odG1sIikKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LndhaXQoKQorICAgICAg
ICAgICAgY29tcGFyZShwb2ludGVyTG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBh
cmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIHRydWUpCisKKyAgICAgICAgICAgIHBvaW50
ZXJVbmxvY2tTcHkuY2xlYXIoKQorICAgICAgICAgICAgZXhwZXJpbWVudGFsLnVubG9ja1BvaW50
ZXIoKQorICAgICAgICAgICAgcG9pbnRlclVubG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNv
bXBhcmUocG9pbnRlclVubG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhw
ZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIGZhbHNlKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdF9wb2ludGVyTG9ja1JlcXVlc3RXaXRoU2VsZkV4aXQoKSB7CisgICAgICAgICAg
ICBwZXJtaXNzaW9uU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFy
KCkKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHkuY2xlYXIoKQorCisgICAgICAgICAgICB3
ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwi
KQorICAgICAgICAgICAgcGVybWlzc2lvblNweS53YWl0KCkKKyAgICAgICAgICAgIHBvaW50ZXJM
b2NrU3B5LndhaXQoKQorICAgICAgICAgICAgcG9pbnRlclVubG9ja1NweS53YWl0KCkKKworICAg
ICAgICAgICAgY29tcGFyZShwZXJtaXNzaW9uU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29t
cGFyZShwb2ludGVyTG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRl
clVubG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZXJpbWVudGFsLnBv
aW50ZXJMb2NrZWQsIGZhbHNlKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRl
cmxvY2sxLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmZhNmM3ZTg3NmUwNmZk
NDUzNzcxZDM4NTkwYmRkMjNjNDE0NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2sxLmh0
bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHRpdGxlPlBvaW50ZXIgTG9j
ayBSZXF1ZXN0IHRlc3QgKG5lZWRzIGZvcmNlZCB1bmxvY2spPC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorICA8c2NyaXB0
PgorICAgIHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAg
ICB0YXJnZXRkaXYud2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CisgIDwvc2NyaXB0PgorICBQ
b2ludGVyIExvY2sgUmVxdWVzdCBUZXN0IChuZWVkcyBmb3JjZWQgdW5sb2NrKQorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YTg4OTBhNWNkODQxYjA5ZWMxYmUxZGY1NjM1NGU2OTdhYjA5OTRlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPHRpdGxlPlBvaW50ZXIgTG9jayBSZXF1ZXN0IHRlc3QgKHVubG9ja3Mgc2VsZik8L3Rp
dGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2Pgor
PC9kaXY+CisgIDxzY3JpcHQ+CisgICAgZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2NoYW5n
ZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LndlYmtpdFBvaW50ZXJMb2Nr
RWxlbWVudCA9PSB0YXJnZXRkaXYpCisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0UG9p
bnRlckxvY2soKTsKKyAgICB9OworICAgIHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKTsKKyAgICB0YXJnZXRkaXYud2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7
CisgIDwvc2NyaXB0PgorICBQb2ludGVyIExvY2sgUmVxdWVzdCBUZXN0ICh1bmxvY2tzIHNlbGYp
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDcyYTRjZTg1ZDQ2OTdkYzUxY2ZmYmEyNzkxYWQyNTViNzQ3NzRkYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Q
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVD
VFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3Q+IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXZWJL
aXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgKm1hbmFnZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KG1h
bmFnZXIpKTsKK30KKworUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdChQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
KiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCit7Cit9CisKK3ZvaWQgUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coKQoreworICAgIGlmICghbV9tYW5hZ2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXItPmRpZFJlY2VpdmVQb2ludGVyTG9ja1Bl
cm1pc3Npb25EZWNpc2lvbih0cnVlKTsKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit2b2lkIFBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkoKQoreworICAgIGlmICghbV9tYW5hZ2Vy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXItPmRpZFJlY2VpdmVQb2ludGVyTG9j
a1Blcm1pc3Npb25EZWNpc2lvbihmYWxzZSk7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9p
ZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX21h
bmFnZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzAwNTczMDc3Njc5ZDM3YzRiNDlhNzA3NGU1NDZkNjAxMDBmMDM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05J
Q1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0X2gKKyNkZWZpbmUgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk7CisKK2NsYXNzIFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Kik7CisKKyAgICB2b2lkIGFsbG93KCk7CisgICAgdm9p
ZCBkZW55KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkqKTsKKworICAgIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkqIG1fbWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
UE9JTlRFUl9MT0NLCisKKyNlbmRpZiAvLyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MDA1Y2MxMWNkZGY0YTk1MzIwNDQ2YzgwZTNiNjRmMTU3Mzk4
OTAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJM
b2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdCgpCit7Cisg
ICAgaWYgKG1fcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdC0+aW52
YWxpZGF0ZSgpOworICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0LmNsZWFyKCk7CisgICAgfQorfQor
CitQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QoKQoreworICAgIFJlZlB0
cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMpOworICAgIG1fcGVuZGluZ1JlcXVlc3QgPSByZXF1
ZXN0OworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKwordm9pZCBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJt
aXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvdykKK3sKKyAgICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcGVuZGluZ1JlcXVlc3QpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYWxsb3cpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMmQxMzhlM2QzOTdjYjY1NTAw
MTEyYWRjZjBjMzYyOWIzZWFlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9o
CisjZGVmaW5lIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAorCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xh
c3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQ
YWdlUHJveHkqKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3QoKTsKKworICAgIFBhc3NS
ZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlUmVxdWVzdCgpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxv
dyk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+
IG1fcGVuZGluZ1JlcXVlc3Q7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBPSU5URVJfTE9DSworCisjZW5kaWYgLy8g
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTQxYmIzMTQ4NThlMmNlZTYxNzZl
YmY2OWRmNGFlNmZhOTk2NmRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmNwcApAQCAtMCww
ICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaCIKKwor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQ
YXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5PiBXZWJQb2ludGVyTG9ja01hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KHBhZ2UpKTsKK30KKworV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94
eSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV93ZWJWaWV3KDApCisgICAgLCBt
X2lzUG9pbnRlckxvY2tlZChmYWxzZSkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCB0
aGlzKTsKK30KKworV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6On5XZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnNl
dFdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIG1fd2ViVmlldyA9IHdl
YlZpZXc7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmlzUG9pbnRlckxv
Y2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNQb2ludGVyTG9ja2VkOworfQorCit2b2lk
IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpyZXF1ZXN0UG9pbnRlckxvY2soKQoreworICAg
IGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgICAgIGRpZEFjcXVpcmVQb2lu
dGVyTG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpyZXF1ZXN0
UG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmlzVmFsaWQoKSkK
KyAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NTA3ODlhZWQ0YzEwZTVhYzk1ZjQ2MTAyOGZh
N2RlY2E0Mzk3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlf
aAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0
eXBlZGVmIFFRdWlja1dlYlZpZXcgUGxhdGZvcm1XZWJWaWV3OworCitjbGFzcyBXZWJQYWdlUHJv
eHk7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSopOworICAgIHZpcnR1YWwgfldlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5KCk7CisKKyAgICB2b2lkIHNldFdlYlZpZXcoUGxhdGZvcm1XZWJW
aWV3Kik7CisKKyAgICBib29sIGlzUG9pbnRlckxvY2tlZCgpIGNvbnN0OworICAgIHZvaWQgZGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworCisgICAgdm9pZCByZXF1ZXN0UG9p
bnRlckxvY2soKTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisKK3Byb3RlY3Rl
ZDoKKworICAgIGV4cGxpY2l0IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94
eSopOworCisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgUGxhdGZvcm1XZWJWaWV3KiBt
X3dlYlZpZXc7CisgICAgYm9vbCBtX2lzUG9pbnRlckxvY2tlZDsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eV9oCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMTBmZDliMzA1ODU4ZDc2MDcwNTIz
MjE0NGMyZTZiOTBhNTdiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3Ms
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIworCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK21lc3NhZ2VzIC0+IFdlYlBv
aW50ZXJMb2NrTWFuYWdlclByb3h5IHsKKyAgICBSZXF1ZXN0UG9pbnRlckxvY2soKQorICAgIFJl
cXVlc3RQb2ludGVyVW5sb2NrKCkKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWNjZTc0MDBiOTZi
Y2ZhNzZmMzlhM2VmZGYwNDY4N2ZjOWFlZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
TEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJP
TklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25h
cnkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hh
ciogV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgp
Cit7CisgICAgcmV0dXJuICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkiOwor
fQorCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eT4gV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29u
dGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eShjb250ZXh0KSk7Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5KFdlYkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChjb250ZXh0KQoreworfQor
Cit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVBy
b3ZpZGVyKGNvbnN0IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgKnByb3ZpZGVyKQor
eworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7CisgICAgbV9wcm92aWRlci5h
ZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRoaXMpOworfQorCit2b2lkIFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAg
bV9wcm92aWRlci5yZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRoaXMpOworfQor
Cit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKFdlYlByb2Nlc3NQcm94eSopCit7CisgICAgbV9wcm92aWRlci5yZW1vdmVQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyKHRoaXMpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9i
amVjdDo6cmVmKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OmRlcmVm
KCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwb3B1
bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMoSGFzaE1hcDxTdHJpbmcsIGJvb2w+JiBw
ZXJtaXNzaW9ucykKK3sKKyAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4ga25vd25QZXJt
aXNzaW9ucyA9IG1fcHJvdmlkZXIucG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOworCisgICAgaWYg
KCFrbm93blBlcm1pc3Npb25zKQorICAgICAgICByZXR1cm47CisKKyAgICBwZXJtaXNzaW9ucy5j
bGVhcigpOworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4ga25vd25PcmlnaW5zID0ga25vd25Q
ZXJtaXNzaW9ucy0+a2V5cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga25vd25Pcmln
aW5zLT5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJTdHJpbmcqIG9yaWdpbiA9IGtub3duT3Jp
Z2lucy0+YXQ8V2ViU3RyaW5nPihpKTsKKyAgICAgICAgcGVybWlzc2lvbnMuc2V0KG9yaWdpbi0+
c3RyaW5nKCksIGtub3duUGVybWlzc2lvbnMtPmdldDxXZWJCb29sZWFuPihvcmlnaW4tPnN0cmlu
ZygpKS0+dmFsdWUoKSk7CisgICAgfQorfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVQb2ludGVyTG9ja1BvbGljeShjb25zdCBX
ZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCit7CisgICAgaWYgKCFjb250
ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpEaWRVcGRhdGVQ
b2ludGVyTG9ja0RlY2lzaW9uKG9yaWdpbi0+dG9TdHJpbmcoKSwgYWxsb3dlZCkpOworfQorCit2
b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1v
dmVQb2ludGVyTG9ja1BvbGljaWVzKEltbXV0YWJsZUFycmF5KiBvcmlnaW5zKQoreworICAgIGlm
ICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3Qgc2l6ZSA9IG9yaWdp
bnMtPnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IG9yaWdpblN0cmluZ3M7CisgICAgb3JpZ2luU3RyaW5ncy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgIG9yaWdpblN0cmluZ3MuYXBwZW5kKG9yaWdpbnMtPmF0PFdlYlNlY3VyaXR5T3Jp
Z2luPihpKS0+dG9TdHJpbmcoKSk7CisKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6RGlkUmVtb3ZlUG9p
bnRlckxvY2tEZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMWQ1
ZDIzNTJmZTkzNTVhM2ZkZWViM2U1YmUwNGJhMjgyNGNkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVM
RUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UHJveHlfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHlfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0
YWJsZUFycmF5OworY2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwor
CitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlw
ZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4s
IHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CisKKyAg
ICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyKik7CisKKyAgICB2b2lkIHBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9u
cyhIYXNoTWFwPFN0cmluZywgYm9vbD4mKTsKKworICAgIHZvaWQgcHJvdmlkZXJEaWRVcGRhdGVQ
b2ludGVyTG9ja1BvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiosIGJvb2wpOworICAgIHZv
aWQgcHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGljaWVzKEltbXV0YWJsZUFycmF5KiBv
cmlnaW5zKTsKKworICAgIHVzaW5nIEFQSU9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQSU9iamVj
dDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKKworICAgIC8vIFdlYkNvbnRleHRTdXBwbGVt
ZW50CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisKKyAg
ICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBtX3Byb3ZpZGVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKworI2VuZGlmIC8v
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDM2YzA4NGUyNjRj
MDg0ZmNhYmZkNjI5YTljYzUyM2E0ZWZhOTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVs
ZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRl
ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTXV0YWJsZUFycmF5LmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3h5KiBtYW5hZ2VyKQoreworICAgIGlmIChtX2NsaWVudC5hZGRQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyKQorICAgICAgICBtX2NsaWVudC5hZGRQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcihXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkqIG1hbmFnZXIp
Cit7CisgICAgaWYgKG1fY2xpZW50LnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIp
CisgICAgICAgIG1fY2xpZW50LnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIodG9B
UEkobWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCitQYXNzUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVy
TG9ja1Blcm1pc3Npb25zKCkKK3sKKyAgICBpZiAobV9jbGllbnQucG9pbnRlckxvY2tQZXJtaXNz
aW9ucykKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5wb2ludGVyTG9j
a1Blcm1pc3Npb25zKG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisKKyAgICByZXR1cm4gSW1tdXRh
YmxlRGljdGlvbmFyeTo6Y3JlYXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODllYTRmNTQ0ZDdjNzY1NzQwNmU2NjE2ZTZm
NDllN2RjOWZmYWVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaAorI2RlZmluZSBXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5j
bHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92
aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2Ns
YXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5OworCitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciA6IHB1
YmxpYyBBUElDbGllbnQ8V0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciwga1dLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIHZv
aWQgYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHkqKTsKKyAgICB2b2lkIHJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Kik7CisgICAgUGFzc1Jl
ZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwb2ludGVyTG9ja1Blcm1pc3Npb25zKCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBPSU5URVJfTE9DSworCisjZW5k
aWYgLy8gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL3F0L1dl
YlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhY2VhM2Q0OTk2Nzhl
Y2Q3MzZjYzU5NWE4M2E1ODJkZDgwOTk1OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlR
dC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVj
dHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiV2ViQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKKyNpZiBI
QVZFKFFUUVVJQ0spCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1
aWNrd2Vidmlld19wX3AuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRp
ZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisjaWYgSEFWRShRVFFVSUNLKQorICAgIGlmIChtX3dl
YlZpZXcpCisgICAgICAgIGVtaXQgbV93ZWJWaWV3LT5leHBlcmltZW50YWwoKS0+cG9pbnRlckxv
Y2tSZXF1ZXN0ZWQoKTsKKyNlbmRpZgorCisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSB0cnVlOwor
ICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBtX2lzUG9pbnRlckxvY2tlZCA9IGZhbHNlOwor
ICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlk
TG9zZVBvaW50ZXJMb2NrKCkKK3sKKyNpZiBIQVZFKFFUUVVJQ0spCisgICAgaWYgKG1fd2ViVmll
dykKKyAgICAgICAgZW1pdCBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5wb2ludGVyVW5sb2Nr
UmVxdWVzdGVkKCk7CisjZW5kaWYKKworICAgIG1faXNQb2ludGVyTG9ja2VkID0gZmFsc2U7Cisg
ICAgaWYgIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZExvc2VQb2ludGVyTG9jaygpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApp
bmRleCAzMWVkMjk5M2I4YWM3MTYyZGFiMDU1NTI5N2FiYjdhYzNjZTM4ZDFiLi5hN2U4YjYxMWVi
YjRiY2Y1MDhhMDExYWM0OTAwOWMwZTY0MzIxZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCkBAIC00NywxMCArNDcsMTMgQEAKICNpbmNsdWRlICJXZWJJY29uRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBs
ZXIuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRl
ICJXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIK
LSNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE4MCw2ICsxODMsOSBAQCBXZWJD
b250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgYWRkU3Vw
cGxlbWVudDxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4oKTsKICNlbmRpZgorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgYWRkU3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHk+KCk7CisjZW5kaWYKIAogICAgIGNvbnRleHRzKCkuYXBwZW5kKHRoaXMp
OwogCkBAIC01NDcsNiArNTUzLDEwIEBAIFdlYlByb2Nlc3NQcm94eSogV2ViQ29udGV4dDo6Y3Jl
YXRlTmV3V2ViUHJvY2VzcygpCiAgICAgc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+KCktPnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9uUGVybWlzc2lvbnMocGFyYW1ldGVy
cy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgc3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJv
eHk+KCktPnBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyhwYXJhbWV0ZXJzLnBv
aW50ZXJMb2NrUGVybWlzc2lvbnMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzID0gbV91c2VzTmV0d29ya1By
b2Nlc3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNGQyMjFkNDE3NjRlODZiZjAzNDY2NWYzNzBmOWYzOTk3ZDNmYTQ4YS4uNWNlMTU3Y2Fl
MDNhMzkyMGMyNzVmMTIwYmQ5MjE2NWVlZjlmNzM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc0LDYgKzc0LDEwIEBACiAjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRl
ICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5o
IgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXMuaCIKQEAgLTI0MSw2ICsyNDUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwg
bV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIodGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKHRoaXMpCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAsIG1f
cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIodGhpcykKKyNlbmRpZgogICAgICwg
bV9lc3RpbWF0ZWRQcm9ncmVzcygwKQogICAgICwgbV9pc0luV2luZG93KG1fcGFnZUNsaWVudC0+
aXNWaWV3SW5XaW5kb3coKSkKICAgICAsIG1faXNWaXNpYmxlKG1fcGFnZUNsaWVudC0+aXNWaWV3
VmlzaWJsZSgpKQpAQCAtMzM1LDYgKzM0Miw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIG1fcG9pbnRlckxvY2tNYW5hZ2VyID0gV2ViUG9pbnRlckxvY2tN
YW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgogI2lmIEVOQUJMRShWSUJSQVRJT04p
CiAgICAgbV92aWJyYXRpb24gPSBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKHRoaXMpOwogI2Vu
ZGlmCkBAIC00ODcsNyArNDk3LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQ
cm9jZXNzKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuTWFu
YWdlciA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgot
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBtX3BvaW50ZXJMb2NrTWFuYWdlciA9IFdl
YlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7CisjZW5kaWYKICAgICBpbml0
aWFsaXplV2ViUGFnZSgpOwogCiAgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWxhdW5jaFByb2Nlc3Mo
KTsKQEAgLTMwNDEsNiArMzA1MywxMyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBXZWJQ
YWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKK1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OnBv
aW50ZXJMb2NrTWFuYWdlcigpCit7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tNYW5hZ2VyLmdl
dCgpOworfQorI2VuZGlmCisKIC8vIEJhY2tGb3J3YXJkTGlzdAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKQEAgLTM4OTAsNiArMzkwOSwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAK
ICAgICBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVx
dWVzdHMoKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgbV9wb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdCgpOworI2VuZGlmCisKICAg
ICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIAogICAgIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNj
cm9sbGJhciA9IGZhbHNlOwpAQCAtNDA5OSw2ICs0MTIyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFN0cmluCiAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0
cmluZyk7CisgICAgUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3Qg
PSBtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3QoKTsK
KworICAgIGlmICghbV91aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0KHRoaXMsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHJl
cXVlc3QtPmRlbnkoKTsKK30KKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKwogdm9pZCBXZWJQYWdl
UHJveHk6OnNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkt
PnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIHRp
dGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmlj
YXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNGRi
NjJlOTFhMjJhODMxNjJhNjIxYzUxYzRkMjdkZjA2ZGE5YzU0MC4uMzZkMzM2N2JhMWQ1NDRlODgy
ZjUyOTA2N2FkOTQ0ZWU5MThmY2E0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIK
ICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKQEAgLTE0Niw2ICsxNDksNyBA
QCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CitjbGFz
cyBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNs
YXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMjY0LDYgKzI2OCwx
MCBAQCBwdWJsaWM6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogZnVsbFNjcmVlbk1h
bmFnZXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eSogcG9pbnRlckxvY2tNYW5hZ2VyKCk7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xp
ZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50Kik7CiAjZW5kaWYKQEAgLTg4MCw2ICs4
ODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpblN0cmluZyk7CisjZW5kaWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
ICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpAQCAtMTA4OCw2ICsxMTAw
LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IG1f
ZnVsbFNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5PiBtX3BvaW50ZXJMb2NrTWFuYWdl
cjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBSZWZQdHI8V2ViVmlicmF0
aW9uUHJveHk+IG1fdmlicmF0aW9uOwogI2VuZGlmCkBAIC0xMTE5LDYgKzExMzUsOSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyOwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKICAgICBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX25vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9wb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjsKKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKIAogICAgIGRvdWJsZSBt
X2VzdGltYXRlZFByb2dyZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4YzFkZTkwOGNjZDY4YzlmNTJkYzAwMGVhOTYx
YzUxM2UyNzUxMmMzLi4zMTcxNmRiYWEyMTViNDFhMDUzMzYwYzlmODE4N2I4YmZjYzhhNTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KQEAgLTIyNCw2ICsyMjQsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBD
bGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpCiAgICAg
RGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgUmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbihXVEY6
OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQorI2VuZGlmCisKICAgICAjIFNwZWxsaW5nIGFuZCBn
cmFtbWFyIG1lc3NhZ2VzCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgIAogICAgIENo
ZWNrVGV4dE9mUGFyYWdyYXBoKFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlw
ZXMpIC0+IChWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKaW5kZXggYmZhNGQ4ZTQzZTdlYjRm
ZjY3NTNhY2IzZWJmYzdjMzgxZmIyNDExYy4uZWJjNmJiYzk0OWVhNTI2NDVlNmJkYzA3MGNkYzcz
MWJkZGZhMjFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCkBA
IC0zMSw2ICszMSw5IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1
ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b3JtYXRpb24uaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYk51bWJlci5oIgpAQCAtMzY1LDYgKzM2OCwxNSBAQCBib29sIFdlYlVJQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBh
ZwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCogcGVybWlz
c2lvblJlcXVlc3QpCit7CisgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KHRvQVBJKHBh
Z2UpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgIHJldHVybiB0cnVlOworfQorCiBmbG9hdCBXZWJVSUNsaWVudDo6aGVh
ZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC5oZWFkZXJIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJV
SUNsaWVudC5oCmluZGV4IDk4MTNmNTc1NGM4MTNiZjE2OWM2YjNjOTI4YjhlNWFhNWZiYTQzYjcu
LjI1MWFkOWUwNmVkMTExODcwN2JiMmUxZjJlZDViOWM2Yzk4OGJjZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIEltbXV0YWJs
ZURpY3Rpb25hcnk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgTmF0aXZl
V2ViV2hlZWxFdmVudDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xh
c3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsKIGNsYXNzIFdlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpA
QCAtMTAzLDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKTsKICAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdl
YlNlY3VyaXR5T3JpZ2luKiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Kik7CiAg
ICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQ
YWdlUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiosIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Kik7CisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdCopOwogCiAgICAgLy8gUHJpbnRpbmcuCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0RGlhbG9nUnVubmVyLmgKaW5kZXggYjcwMDQ0MDc2ODM0ZTI5ZTNiYTU5M2Y3OWM1
MDMwMzg5ZGY1OTk1Ni4uYTNiMDRhMWNjYWRmY2VjYTVmM2U0YjI1NTljN2UwZWRlOTdiNWYyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmgKQEAgLTUw
LDcgKzUwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaW5pdEZvclByb3h5QXV0aGVudGljYXRpb24o
Y29uc3QgUVN0cmluZyYgaG9zdG5hbWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFFTdHJpbmcmIHBy
ZWZpbGxlZFVzZXJuYW1lKTsKICAgICBib29sIGluaXRGb3JGaWxlUGlja2VyKGNvbnN0IFFTdHJp
bmdMaXN0JiBzZWxlY3RlZEZpbGVzLCBib29sIGFsbG93TXVsdGlwbGUpOwogICAgIGJvb2wgaW5p
dEZvckRhdGFiYXNlUXVvdGFEaWFsb2coY29uc3QgUVN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBRU3RyaW5nJiBkaXNwbGF5TmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiwgcXVpbnQ2NCBjdXJy
ZW50UXVvdGEsIHF1aW50NjQgY3VycmVudE9yaWdpblVzYWdlLCBxdWludDY0IGN1cnJlbnREYXRh
YmFzZVVzYWdlLCBxdWludDY0IGV4cGVjdGVkVXNhZ2UpOwotCiAgICAgdm9pZCBydW4oKTsKIAog
ICAgIFFRdWlja0l0ZW0qIGRpYWxvZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlhbG9nLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNw
cAppbmRleCBhZjg4NDIzYzZkYTBlZDRkOWFjNTNlZTgzY2EwNmM0MDczOGJkODc4Li5iMjNlNTI2
ZDVlNzk4Nzc5YWI2NjQ3NTg2MmM0YzQ5ZjI5YjJkOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAg
UXRXZWJQYWdlVUlDbGllbnQ6OlF0V2ViUGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBR
UXVpY2tXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHVpQ2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSA9IGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKICAgICB1aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gcG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKICAgICB1aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCA9IHBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Owor
ICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Qg
PSBwb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OwogICAgIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChwYWdlUmVmLCAmdWlDbGllbnQpOwogfQogCkBAIC0xNzMsNSArMTc0LDEzIEBA
IHZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdLUGFnZVJlZiBwYWdlLCBXCiAgICAgdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJ
bmZvKS0+cGVybWlzc2lvblJlcXVlc3QocmVxKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50Ojpwb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0KFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm47CiAKKyAgICBRV2ViUGVy
bWlzc2lvblJlcXVlc3QqIHJlcSA9IFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKG9yaWdp
biwgcmVxdWVzdCk7CisgICAgdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+cGVybWlz
c2lvblJlcXVlc3QocmVxKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oCmluZGV4IGU4YWFhODI2
YjdkZDYwYTY4MWJkNzQ4ZWQzMTZiZjI2ZTBkZDkwNjguLjg0YTQzOWQxNzA5OTFhNDIzMDJlODky
OTMyZTQzZTkzNDE2NWZmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VVSUNsaWVudC5oCkBAIC02MCw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgbG9uZyBleGNlZWRlZERhdGFiYXNlUXVvdGEoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdL
U3RyaW5nUmVmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7
CiAgICAgc3RhdGljIHZvaWQgcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgcG9saWN5Rm9yUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgUVF1
aWNrV2ViVmlldyogbV93ZWJWaWV3OwogICAgIFFVcmwgbV9sYXN0SG92ZXJlZFVSTDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcmkKaW5kZXggYTFkYTA0NTFhYzVhZjhmMWYyM2QxN2Q0M2MwNWRhZTkxOTk2NmQ4Zi4uZWQ5
M2YxYjg0ZDczMmE2NzExY2VmZjk5MDdmNGQ3MmZiNDljODk1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKQEAg
LTM5LDYgKzM5LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0xhdW5j
aGVyIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAorICAgICQk
U09VUkNFX0RJUi9VSVByb2Nlc3MvUG9pbnRlckxvY2sgXAogICAgICQkU09VUkNFX0RJUi9VSVBy
b2Nlc3MvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9TdG9yYWdlIFwKICAg
ICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL3F0IFwKQEAgLTU5LDYgKzYwLDcgQEAgSU5DTFVERVBB
VEggKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAorICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1Bv
aW50ZXJMb2NrIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9TdG9yYWdlIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
aW5kZXggZDQ1ZTQ4ZTg4ZGFjMTQ3YzBhZmJlY2M3NjUxYTA0NmYyMzgzYWMyMC4uYzgxM2Q4ZWFi
YjIwNDQ5MjRhYjI4MTM0OTAxMzEyMWY4ZjIwY2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcApAQCAtNDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaWYgZGVm
aW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9MT0NLCisjaW5jbHVk
ZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJSZW5kZXJM
YXllci5oIgogI2luY2x1ZGUgIldlYlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgpAQCAtNTE2LDMgKzUxOSw1NiBAQCB2b2lkIFdLQnVuZGxlUGFnZVN0b3BFeHRlbmRpbmdJ
bmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKFdLQnVuZGxlUGFnZVJlZiBwYQogewogICAg
IHRvSW1wbChwYWdlUmVmKS0+c3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb24odG9rZW4pOwogfQorCit2b2lkIFdLQnVuZGxlUGFnZVNldFBvaW50ZXJMb2NrQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCog
d2tDbGllbnQpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVf
UE9JTlRFUl9MT0NLCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5k
bGVQb2ludGVyTG9ja0NsaWVudCh3a0NsaWVudCk7CisjZW5kaWYKK30KKworYm9vbCBXS0J1bmRs
ZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sK
KyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sK
KyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRS
ZXF1ZXN0UG9pbnRlckxvY2soKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK3ZvaWQgV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jayhXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKK3sKKyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVO
QUJMRV9QT0lOVEVSX0xPQ0sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9j
a01hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jaygpOworI2VuZGlmCit9CisKK2Jv
b2wgV0tCdW5kbGVQYWdlSXNQb2ludGVyTG9ja2VkKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQor
eworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9D
SworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1Bv
aW50ZXJMb2NrZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3Zv
aWQgV0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5U
RVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZEFj
cXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmlu
ZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1w
bChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZE5vdEFjcXVpcmVQb2ludGVyTG9j
aygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxv
Y2tNYW5hZ2VyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworI2VuZGlmCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaAppbmRleCAxMDNmNDc4YTEyMzVjOGQ3NDljMjQ2ZDQwNmI4MDJhODllN2Y5
NTExLi5lNGIyNTY0NmRmNzg1OWFlZTczNjk3NTFlZjE1NDM1MmFiODg2YTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQwMyw2ICs0MDMsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Owog
CiBlbnVtIHsga1dLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRDdXJyZW50VmVyc2lvbiA9IDEg
fTsKIAorLy8gUG9pbnRlciBMb2NrIGNsaWVudAordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdl
U3VwcG9ydHNQb2ludGVyTG9jaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwordHlwZWRlZiBib29s
ICgqV0tCdW5kbGVQYWdlUmVxdWVzdFBvaW50ZXJMb2NrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZXF1ZXN0UG9pbnRlclVubG9jaykoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOworCitzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQg
eworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisK
KyAgICAvLyBWZXJzaW9uIDA6CisgICAgV0tCdW5kbGVQYWdlU3VwcG9ydHNQb2ludGVyTG9jayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1BvaW50ZXJMb2NrOwor
ICAgIFdLQnVuZGxlUGFnZVJlcXVlc3RQb2ludGVyTG9jayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrOworICAgIFdLQnVuZGxlUGFnZVJlcXVl
c3RQb2ludGVyVW5sb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dFBvaW50ZXJVbmxvY2s7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9pbnRlckxv
Y2tDbGllbnQgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ7CisKK2VudW0geyBrV0tCdW5k
bGVQYWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKKwogLy8gTWVzc2Fn
ZVRyYWNlIGNsaWVudAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dp
bmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdL
U3RyaW5nUmVmIGRlc2NyaXB0aW9uLCBXS1N0cmluZ1JlZiBzdWNjZXNzLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIApAQCAtNDMxLDYgKzQ0OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9s
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KiBjbGllbnQpOworV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVQYWdlU2V0UG9pbnRlckxvY2tDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50KiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKTsKIFdLX0VYUE9SVCBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlUGFnZUdldE1haW5GcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CkBAIC00NzIsNiArNDkxLDEzIEBAIFdLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLTGF5CiAKIFdLX0VYUE9SVCBXS0J1bmRsZUluc3BlY3RvclJlZiBXS0J1bmRsZVBh
Z2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgYm9vbCBX
S0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUlzUG9pbnRl
ckxvY2tlZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VEaWRBY3F1aXJlUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayhX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGVmNGE4MmY2ZTVkMDdmY2Y3ZDk4NzY1ODYwNTQ1ZTlm
MjFkZWEzNmEuLmIxYWQ4MzZiYmNjMzJhMzcyYTczZjU4YWZmODYwMzY4YmRiNTk4MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNp
bmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmgiCisjZW5kaWYKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1
bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIgpA
QCAtNjQ5LDYgKzY1MiwyNiBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IEluamVjdGVkQnVuZGxlOjpj
cmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmIGNvbgogICAgIHJldHVybiBX
ZWJEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGFycmF5RGF0YS0+YmFz
ZUFkZHJlc3MoKSksIGFycmF5RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKIH0KIAordm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tQZXJtaXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCit7CisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyAgICBwYWdlLT5wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5z
ZXRQZXJtaXNzaW9uTGV2ZWxGb3JUZXN0aW5nKG9yaWdpblN0cmluZywgYWxsb3dlZCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ob3JpZ2luU3RyaW5n
KTsKKyAgICBVTlVTRURfUEFSQU0oYWxsb3dlZCk7CisjZW5kaWYKK30KKwordm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlQWxsUG9pbnRlckxvY2tQZXJtaXNzaW9ucyhXZWJQYWdlKiBwYWdlKQor
eworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcGFnZS0+cG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS0+cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyNlbmRpZgorfQorCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoV2ViUGFnZSogcGFnZSwgYm9v
bCBlbmFibGVkKQogewogICAgIHBhZ2UtPmNvcmVQYWdlKCktPnNldFRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50cyhlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAzN2Q0MWMyZDIyMThj
YzU3Yzg3OTAzNWM0MDJlZWY0NDllMjYxNzJiLi4xZjMxZjJiYWIzYTMwZDJmOWM3ZTZhZDk5NmYy
OWQ5ODQ4NThjZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xMjcsNiArMTI3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFn
ZSopOwogICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZik7CiAgICAgUGFzc1JlZlB0cjxXZWJEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJy
YXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrUGVy
bWlzc2lvbihXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdm9pZCByZW1vdmVB
bGxQb2ludGVyTG9ja1Blcm1pc3Npb25zKFdlYlBhZ2UqKTsKIAogICAgIC8vIFVzZXJDb250ZW50
IEFQSQogICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xpc3Qs
IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQ
b2ludGVyTG9ja0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFiZmY5Y2QyYWQ4MWEyMjg4NTMyMmNl
ZDE5Y2M5Y2JiZGI4ZDNiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQu
Y3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ry
b25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tTaGFyZWRBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlci5oIgor
I2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIEluamVjdGVk
QnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpzdXBwb3J0c1BvaW50ZXJMb2NrKFdlYlBhZ2Ug
KnBhZ2UpCit7CisgICAgaWYgKG1fY2xpZW50LnJlcXVlc3RQb2ludGVyTG9jaykKKyAgICAgICAg
cmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzUG9pbnRlckxvY2sodG9BUEkocGFnZSkpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50
OjpyZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZSAqcGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQu
cmVxdWVzdFBvaW50ZXJMb2NrKQorICAgICAgICByZXR1cm4gbV9jbGllbnQucmVxdWVzdFBvaW50
ZXJMb2NrKHRvQVBJKHBhZ2UpKTsKKyAgICByZXR1cm4gcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2Vy
KCktPnN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9pbnRlckxvY2tDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKFdlYlBhZ2UgKnBhZ2Up
Cit7CisgICAgaWYgKG1fY2xpZW50LnJlcXVlc3RQb2ludGVyVW5sb2NrKQorICAgICAgICBtX2Ns
aWVudC5yZXF1ZXN0UG9pbnRlclVubG9jayh0b0FQSShwYWdlKSk7CisgICAgZWxzZQorICAgICAg
ICBwYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jaygp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxv
Y2tDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTRlMjNmMTQzMjM5MTQ5MDhkMTM1Y2JlMTRiNzhlODM2
MDI3ZDBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1
bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudF9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
CisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZVBv
aW50ZXJMb2NrQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VQb2ludGVyTG9j
a0NsaWVudCwga1dLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50Q3VycmVudFZlcnNpb24+IHsK
K3B1YmxpYzoKKyAgICBib29sIHN1cHBvcnRzUG9pbnRlckxvY2soV2ViUGFnZSopOworICAgIGJv
b2wgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2UqKTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVy
VW5sb2NrKFdlYlBhZ2UqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlUGFnZVBv
aW50ZXJMb2NrQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE0ZTlhOGE2Zjg2MzU1ZDgwNjExYzZlODkw
MGNkZDcyY2Q2NTI0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNz
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
b2ludGVyTG9ja01hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQ
dHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IFBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKHBhZ2UpKTsK
K30KKworUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkK
K3sKK30KKworYm9vbCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFBhc3NSZWZQdHI8UG9pbnRlckxvY2tQZXJt
aXNzaW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIGlmICghb3JpZ2luKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbmx5IG9uZSByZXF1ZXN0IGNhbiBiZSBwcm9jZXNzZWQg
Zm9yIHRoZSB3ZWJwYWdlIHNhbWUgdGltZQorICAgIEFTU0VSVChtX3NlY3VyaXR5T3JpZ2luKTsK
KyAgICBpZiAobV9zZWN1cml0eU9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9zZWN1cml0eU9yaWdpbiA9IG9yaWdpbjsKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgcmV0dXJuIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0UG9p
bnRlckxvY2tQZXJtaXNzaW9uKG9yaWdpbi0+dG9TdHJpbmcoKSkpOworfQorCit2b2lkIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KFNlY3VyaXR5T3Jp
Z2luKikKK3sKKyAgICBtX3NlY3VyaXR5T3JpZ2luLmNsZWFyKCk7CisgICAgbV9jYWxsYmFjay5j
bGVhcigpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9u
IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpwZXJtaXNzaW9uTGV2ZWwoU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5zdXBwbGVtZW50PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+KCktPnBv
bGljeUZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OnNldFBlcm1pc3Npb25MZXZlbEZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5zdXBwbGVtZW50PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+KCktPmRp
ZFVwZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24ob3JpZ2luU3RyaW5nLCBhbGxvd2VkKTsKK30KKwor
dm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlz
c2lvbnNGb3JUZXN0aW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVtZW50
PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+KCktPnJlbW92ZUFsbFBlcm1pc3Npb25z
Rm9yVGVzdGluZygpOworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvd2Vk
KQoreworICAgIGlmIChtX3NlY3VyaXR5T3JpZ2luKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+ZGlk
VXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihtX3NlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpLCBh
bGxvd2VkKTsKKyAgICAgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgICAgICBtX2NhbGxiYWNr
LT5oYW5kbGVFdmVudChhbGxvd2VkKTsKKyAgICB9CisKKyAgICBtX3NlY3VyaXR5T3JpZ2luLmNs
ZWFyKCk7CisgICAgbV9jYWxsYmFjay5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Q
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ODRmZjQ3
MmI0YWIyN2JlOTRkYzQ4OTVlMTA0YWIzZWYxZGUyNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNU
Uk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cl9oCisjZGVmaW5lIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKKworI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNl
Y3VyaXR5T3JpZ2luOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsK
KworY2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAgIHZpcnR1YWwg
flBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoYm9vbCBwZXJtaXNzaW9uKSA9IDA7Cit9OworCitjbGFzcyBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlKik7
CisKKyAgICBib29sIHN0YXJ0UmVxdWVzdChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIFBhc3NS
ZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGNhbmNlbFJl
cXVlc3QoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKworICAgIFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb24gcGVybWlzc2lvbkxldmVsKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKik7CisKKyAgICAvLyBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LgorICAgIHZv
aWQgc2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmLCBib29sKTsKKyAg
ICB2b2lkIHJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZygpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCk7CisKK3ByaXZhdGU6Cisg
ICAgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSopOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWZQ
dHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAgV2ViUGFn
ZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMzFm
ZTI4ZmRjYjkwYzU3NzQ4OTliZWU2ZjdhODFjZDIyZGIzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdl
ci5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFn
ZXIuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUG9pbnRlckxvY2tDb250cm9sbGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja01h
bmFnZXI+IFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb2ludGVyTG9ja01hbmFnZXIocGFnZSkpOworfQor
CitXZWJQb2ludGVyTG9ja01hbmFnZXI6OldlYlBvaW50ZXJMb2NrTWFuYWdlcihXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3BvaW50ZXJMb2NrZWQoZmFsc2UpCit7
Cit9CisKK1dlYlBvaW50ZXJMb2NrTWFuYWdlcjo6fldlYlBvaW50ZXJMb2NrTWFuYWdlcigpCit7
Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdXBwb3J0c1BvaW50ZXJMb2NrKCkK
K3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZVBvaW50ZXJMb2NrQ2xpZW50KCkuc3VwcG9ydHNQb2ludGVyTG9jayhtX3BhZ2UuZ2V0KCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6cmVxdWVz
dFBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICByZXR1cm4gbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KCkucmVxdWVzdFBvaW50ZXJMb2NrKG1f
cGFnZS5nZXQoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2Nr
TWFuYWdlcjo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAg
ICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVudCgpLnJlcXVlc3RQb2lu
dGVyVW5sb2NrKG1fcGFnZS5nZXQoKSk7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
Ojppc1BvaW50ZXJMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UgJiYgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZWxlbWVudCgpOworfQorCit2b2lkIFdl
YlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAo
bV9wYWdlKQorICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxl
cigpLT5kaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01h
bmFnZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAg
ICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpk
aWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9jaygp
OworfQorCitib29sIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3RhcnRSZXF1ZXN0UG9pbnRlckxv
Y2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpSZXF1ZXN0UG9pbnRlckxvY2soKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c3Rh
cnRSZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6UmVxdWVzdFBv
aW50ZXJVbmxvY2soKSk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBkaWRSZWNlaXZlV2ViUG9pbnRlckxvY2tNYW5h
Z2VyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6c2VjdXJpdHlPcmlnaW4oKQoreworICAgIGlm
IChtX3BhZ2UpIHsKKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IG1f
cGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPnRhcmdldCgpOworICAg
ICAgICBpZiAodGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRFbGVtZW50
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQ
b2ludGVyTG9ja01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q2M2I4YjY3YmYwNjQzZTFl
ZWM2ODMxYWI3YTQzYTFiNjRiYzI5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgKQEAgLTAsMCAr
MSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQb2ludGVyTG9ja01hbmFnZXJfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja01hbmFnZXJfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5IYXNoLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFz
cyBNZXNzYWdlRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2U7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlBvaW50ZXJMb2NrTWFuYWdlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlBvaW50ZXJMb2NrTWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5XZWJQ
b2ludGVyTG9ja01hbmFnZXIoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICBib29sIHN1
cHBvcnRzUG9pbnRlckxvY2soKTsKKworICAgIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCk7Cisg
ICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIGJvb2wgaXNQb2ludGVyTG9ja2Vk
KCk7CisKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKwor
ICAgIGJvb2wgc3RhcnRSZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHN0YXJ0UmVxdWVz
dFBvaW50ZXJVbmxvY2soKTsKKworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbigpOworCitwcm90ZWN0ZWQ6CisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBh
Z2UqKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBvaW50ZXJMb2NrTWFuYWdlck1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICBS
ZWZQdHI8V2ViUGFnZT4gbV9wYWdlOworICAgIGJvb2wgbV9wb2ludGVyTG9ja2VkOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
CisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tNYW5hZ2VyX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTA1NTJjMGIxOWZiZjg4OGEy
MzAzNTJlYTIzMGNmNTI0OGVhODI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3Ms
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBMRyBFTEVDVFJPTklDU1BMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorbWVzc2FnZXMgLT4gV2ViUG9pbnRlckxvY2tNYW5hZ2VyIExlZ2FjeVJlY2VpdmVyIHsKKyAg
ICBEaWRBY3F1aXJlUG9pbnRlckxvY2soKQorICAgIERpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
CisgICAgRGlkTG9zZVBvaW50ZXJMb2NrKCkKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25D
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTVmMGMzNTdhZDlk
MzQ4MGU5YTcwN2VkYmYwY2MzMTgzNWJmYWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxs
YmFjay5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNT
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbkNhbGxiYWNrLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVk
ZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNz
UmVmUHRyPFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrPiBXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdlYlBvaW50ZXJMb2NrTWFuYWdlciogbWFuYWdlcikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxi
YWNrKG1hbmFnZXIpKTsKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6Oldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKFdlYlBvaW50ZXJMb2NrTWFuYWdlciogbWFu
YWdlcikKKyAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQoreworfQorCit2b2lkIFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbkNhbGxiYWNrOjpoYW5kbGVFdmVudChib29sIGFsbG93ZWQpCit7CisgICAg
aWYgKGFsbG93ZWQpCisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdFBvaW50ZXJMb2NrKCk7Cisg
ICAgZWxzZQorICAgICAgICBtX21hbmFnZXItPmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xP
Q0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDE2YTVlM2Q0MDBmNDc4ZjdkZmRlY2I3OTZhNDY1ZDZkZmIzYTA0YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklD
UyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bkNhbGxiYWNrX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2tfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyOworCitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayA6
IHB1YmxpYyBQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShX
ZWJQb2ludGVyTG9ja01hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoYm9v
bCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2Fs
bGJhY2soV2ViUG9pbnRlckxvY2tNYW5hZ2VyKik7CisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
KiBtX21hbmFnZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25D
YWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZjQ0OWRmNTBhYWM5YTQ5ODA5ZWZhYWUzMGVkMjc4OTU5OTU5MjIwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9X
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjb25zdCBjaGFyKiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyIjsKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNz
KHByb2Nlc3MpCit7Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6On5XZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgbV9wZXJtaXNzaW9uc01hcCA9IHBhcmFtZXRl
cnMucG9pbnRlckxvY2tQZXJtaXNzaW9uczsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyOjpkaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCit7CisgICAgbV9wZXJtaXNzaW9uc01hcC5zZXQo
b3JpZ2luU3RyaW5nLCBhbGxvd2VkKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyOjpkaWRSZW1vdmVQb2ludGVyTG9ja0RlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3JpZ2luU3RyaW5ncykKK3sKKyAgICBzaXplX3QgY291bnQgPSBvcmlnaW5TdHJpbmdz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg
IG1fcGVybWlzc2lvbnNNYXAucmVtb3ZlKG9yaWdpblN0cmluZ3NbaV0pOworfQorCitXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9uIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXI6OnBvbGljeUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiAqb3Jp
Z2luKSBjb25zdAoreworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4gUGVybWlzc2lv
bk5vdEFsbG93ZWQ7CisKKyAgICBBU1NFUlQoIW9yaWdpbi0+aXNVbmlxdWUoKSk7CisKKyAgICBI
YXNoTWFwPFN0cmluZywgYm9vbD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wZXJtaXNzaW9uc01h
cC5maW5kKG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CisgICAgaWYgKGl0ICE9IG1fcGVybWlzc2lv
bnNNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWUgPyBXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9uQWxsb3dlZCA6IFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXI6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgcmV0dXJuIFBlcm1pc3Npb25Ob3RB
bGxvd2VkOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OnJlbW92
ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZygpCit7CisgICAgbV9wZXJtaXNzaW9uc01hcC5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lO
VEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNlOWM4ZWFlN2Y4NWNiZjc0MTFjODU5ODk2NDYwNGQ1MzNhNjRkNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJP
TklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyX2gK
KworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlByb2Nlc3M7
CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOworcHVi
bGljOgorICAgIGVudW0gUGVybWlzc2lvbiB7CisgICAgICAgIFBlcm1pc3Npb25BbGxvd2VkLAor
ICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dlZCwKKyAgICAgICAgUGVybWlzc2lvbkRlbmllZAor
ICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAg
IGV4cGxpY2l0IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUHJvY2VzcyopOwor
ICAgIHZpcnR1YWwgfldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoKTsKKworICAgIHZv
aWQgZGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgYm9vbCBhbGxvd2VkKTsKKyAgICBQZXJtaXNzaW9uIHBvbGljeUZvck9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiopIGNvbnN0OworCisgICAgdm9pZCByZW1vdmVBbGxQZXJtaXNzaW9u
c0ZvclRlc3RpbmcoKTsKKworcHJpdmF0ZToKKyAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKSBPVkVSUklERTsKKworICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKKworICAgIHZvaWQgZGlkUmVtb3ZlUG9p
bnRlckxvY2tEZWNpc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpblN0cmluZ3MpOwor
CisgICAgV2ViUHJvY2VzcyogbV9wcm9jZXNzOworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBt
X3Blcm1pc3Npb25zTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1YzNmNDk4NjdhZTBmMGI4NGRhOWNj
MjI5Mjc4YTc5ZjMwZmEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDMwIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJv
bmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKK21lc3NhZ2VzIC0+IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIgewor
ICAgIERpZFVwZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24oV1RGOjpTdHJpbmcgb3JpZ2luU3RyaW5n
LCBib29sIGFsbG93ZWQpOworICAgIERpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKFZlY3Rv
cjxXVEY6OlN0cmluZz4gb3JpZ2luU3RyaW5ncyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAppbmRleCAwOTg1OGFlZmY5NzkzNTFlNDMxNWMzZDc2MWE0Njk5MDE2Njc2Yzg0Li5l
ODQwYzY1MjdkZDcwZmQ5M2JlZWEzMjgzOTc1NzlkY2FkZTAyNWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJQ
YWdlQmFubmVyLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViQ29s
b3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKQEAgLTQzLDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
Q2FsbGJhY2suaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC04MjQs
NiArODMxLDM5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50CiAjZW5kaWYKIH0KIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCitib29sIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBvaW50ZXJM
b2NrKCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnN1cHBvcnRz
UG9pbnRlckxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luID0gbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBzd2l0Y2ggKG1fcGFnZS0+cG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+cGVybWlzc2lvbkxldmVsKHNlY3VyaXR5T3JpZ2luKSkg
eworICAgIGNhc2UgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbkFs
bG93ZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5yZXF1
ZXN0UG9pbnRlckxvY2soKTsKKyAgICBjYXNlIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXI6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOiB7CisgICAgICAgIFJlZlB0cjxXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25D
YWxsYmFjazo6Y3JlYXRlKG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCkpOworICAgICAgICBy
ZXR1cm4gbV9wYWdlLT5wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5zdGFy
dFJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4sIGNhbGxiYWNrKTsKKyAgICB9CisgICAgY2FzZSBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9uRGVuaWVkOgorICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQor
eworICAgIG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnJlcXVlc3RQb2ludGVyVW5sb2Nr
KCk7Cit9CisKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQoKQoreworICAg
IHJldHVybiBtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1BvaW50ZXJMb2NrZWQoKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6bm90aWZ5U2Nyb2xsZXJUaHVtYklz
VmlzaWJsZUluUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1iKQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpOb3RpZnlTY3JvbGxlclRodW1iSXNWaXNp
YmxlSW5SZWN0KHNjcm9sbGVyVGh1bWIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDRmMjhi
YjM3NDcyZmFjMWI4ZjNkN2I4MGY5OTgzZmIyMzdlZTc4NzIuLmJiYjk3YzRjOWExZGE2NTNjNjQz
MTliZjIzNmM2Y2ZiZmFlNDRkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjA4LDYgKzIw
OCwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgT1ZFUlJJREU7CisgICAg
dm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpIE9WRVJSSURFOworICAgIGJvb2wgaXNQb2ludGVy
TG9ja2VkKCkgT1ZFUlJJREU7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0
dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgT1ZFUlJJREU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwMWUwYzAwNDU4
YmEyOWQzMTkzYjVlMWM4NjZkZjYxOTk0ZTc2MDhkLi40YTM4MjM1ZmQ0ZWE4MmRjNjVhMjhiNTk3
MGJkMzUwMTBjMDM5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC00NCw2ICs0NCw5IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXcuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjZW5kaWYKICNpbmNsdWRlICJQcmludEluZm8uaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
QEAgLTc3LDYgKzgwLDEwIEBACiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQbHVnSW5DbGllbnQuaCIK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdl
ci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlck1lc3NhZ2VzLmgiCisjZW5kaWYK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3Jl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtMTEyLDYgKzExOSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29u
dGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+CkBAIC00MDcsNiArNDE1LDkgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQsIHRoaXMpOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCwgdGhpcyk7CisjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlQ291bnRlci5p
bmNyZW1lbnQoKTsKQEAgLTQ0Myw3ICs0NTQsOSBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
KTsKKyNlbmRpZgogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlQ291bnRlci5kZWNyZW1lbnQo
KTsKICNlbmRpZgpAQCAtNTI4LDYgKzU0MSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJ
bmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZURpYWdubwog
ICAgIG1fbG9nRGlhZ25vc3RpY01lc3NhZ2VDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQog
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK3ZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQoV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQq
IGNsaWVudCkKK3sKKyAgICBtX3BvaW50ZXJMb2NrQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsK
K30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBQYXNzUmVmUHRy
PFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgU3RyaW5nJiBuZXdNSU1FVHlwZSkKIHsKQEAgLTgyMCw2ICs4NDAsOSBAQCB2b2lkIFdl
YlBhZ2U6OmNsb3NlKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2Ny
ZWVuTWFuYWdlciA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIG1f
cG9pbnRlckxvY2tNYW5hZ2VyID0gMDsKKyNlbmRpZgogCiAgICAgaWYgKG1fYWN0aXZlUG9wdXBN
ZW51KSB7CiAgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51LT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsK
QEAgLTE2NDcsNiArMTY3MCwyNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIFdlYlBhZ2UqIHBhZ2UsIGJvbwogCiAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVudCA9IHBsYXRmb3JtKG1vdXNlRXZlbnQp
OwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZS0+cG9pbnRlckxvY2tN
YW5hZ2VyKCktPmlzUG9pbnRlckxvY2tlZCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBldmVu
dFR5cGU7CisgICAgICAgIHN3aXRjaCAobW91c2VFdmVudC50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBXZWJNb3VzZUV2ZW50OjpNb3VzZURvd246CisgICAgICAgICAgICBldmVudFR5cGUgPSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXZWJNb3VzZUV2ZW50OjpNb3VzZVVwOgorICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnRO
YW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdl
Yk1vdXNlRXZlbnQ6Ok1vdXNlTW92ZToKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAg
cGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpc3BhdGNoTG9ja2Vk
TW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50VHlwZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQu
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yNTk4LDYgKzI2NDIsMjIgQEAgV2ViRnVsbFNj
cmVlbk1hbmFnZXIqIFdlYlBhZ2U6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK1dlYlBvaW50ZXJMb2NrTWFuYWdlciogV2ViUGFnZTo6
cG9pbnRlckxvY2tNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcG9pbnRlckxvY2tNYW5hZ2VyKQor
ICAgICAgICBtX3BvaW50ZXJMb2NrTWFuYWdlciA9IFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6Y3Jl
YXRlKHRoaXMpOworICAgIHJldHVybiBtX3BvaW50ZXJMb2NrTWFuYWdlci5nZXQoKTsKK30KKwor
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6OnBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fcG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIpCisgICAgICAgIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgPSBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y3JlYXRl
KHRoaXMpOworICAgIHJldHVybiBtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmdldCgpOworfQorI2VuZGlmCisKIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciogV2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKIHsKICAg
ICBpZiAobV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpCkBAIC0yOTE1LDYg
KzI5NzUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lv
bkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELAogICAgIG5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcigpLT5kaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2VkKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNp
c2lvbihib29sIGFsbG93ZWQpCit7CisgICAgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKS0+ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGFsbG93ZWQp
OworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0zMTY3LDYgKzMyMzQs
MTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWcKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBwb2ludGVyTG9ja01hbmFnZXIoKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGRp
ZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggN2JkZjA2OWNjMGIw
MDYxM2I2MThkMThmODBkNDMwZjJlZTVjODk0MS4uZDc1NmMyODViMGM1N2QwYjRjOWRlZjk5MjY5
MjQxMTExMjk0M2I0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQu
aCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCIKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2Nr
Q2xpZW50LmgiCisjZW5kaWYKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGll
bnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgpAQCAtMTM0LDYgKzEzNyw3
IEBAIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFBh
Z2VCYW5uZXI7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsK
IGNsYXNzIFdlYkNvbG9yQ2hvb3NlcjsKIGNsYXNzIFdlYkNvbnRleHRNZW51OwpAQCAtMTQ5LDYg
KzE1Myw3IEBAIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGll
bnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdlYlBhZ2VHcm91
cFByb3h5OworY2xhc3MgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOwogY2xhc3MgV2ViUG9wdXBNZW51
OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwpAQCAtMjAy
LDYgKzIwNywxMSBAQCBwdWJsaWM6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIqIGZ1bGxTY3Jl
ZW5NYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyKiBwb2ludGVyTG9ja01hbmFnZXIoKTsKKyAgICBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKTsKKyNlbmRpZgorCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4K
ICAgICAvLyBGSVhNRTogV2UgY291bGQgZ2VuZXJpY2l6ZSB0aGVzZSBpbnRvIGEgRHJhd2luZ0Fy
ZWEgY2xpZW50IGludGVyZmFjZS4gV291bGQgdGhhdCBiZSBiZW5lZmljaWFsPwogICAgIHZvaWQg
ZHJhd1JlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwpAQCAtMjU4LDYgKzI2OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCop
OwogI2VuZGlmCiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudChXS0J1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCopOworI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2lu
dGVyTG9ja0NsaWVudChXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCopOworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpIHsgcmV0dXJuIG1f
Y29udGV4dE1lbnVDbGllbnQ7IH0KQEAgLTI3Miw2ICsyODUsOSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQmIGluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCgpIHsgcmV0dXJuIG1fZnVsbFNjcmVl
bkNsaWVudDsgfQogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudCYgaW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0Ns
aWVudCgpIHsgcmV0dXJuIG1fcG9pbnRlckxvY2tDbGllbnQ7IH0KKyNlbmRpZgogCiAgICAgdm9p
ZCBzZXRVbmRlcmxheVBhZ2UoUGFzc1JlZlB0cjxXZWJQYWdlPiB1bmRlcmxheVBhZ2UpIHsgbV91
bmRlcmxheVBhZ2UgPSB1bmRlcmxheVBhZ2U7IH0KIApAQCAtODE5LDYgKzgzNSwxMCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93ZWQpOwogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNp
c2lvbihib29sIGFsbG93ZWQpOworI2VuZGlmCisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxs
aW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CiAjaWYgVVNFKEFQUEtJVCkKQEAgLTk1MCw2
ICs5NzAsOSBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQgbV9mdWxsU2NyZWVuQ2xpZW50OwogI2VuZGlmCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQgbV9sb2dEaWFnbm9zdGljTWVzc2FnZUNsaWVudDsKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIEluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xp
ZW50IG1fcG9pbnRlckxvY2tDbGllbnQ7CisjZW5kaWYKIAogICAgIEZpbmRDb250cm9sbGVyIG1f
ZmluZENvbnRyb2xsZXI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oUVQp
CkBAIC05NjUsNiArOTg4LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlcj4gbV9mdWxsU2NyZWVuTWFuYWdlcjsK
ICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUmVmUHRyPFdlYlBvaW50ZXJM
b2NrTWFuYWdlcj4gbV9wb2ludGVyTG9ja01hbmFnZXI7CisgICAgUmVmUHRyPFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiBtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOworI2VuZGlmCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudT4gbV9hY3RpdmVQb3B1cE1l
bnU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
PiBtX2NvbnRleHRNZW51OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyNWViZDg2ODhiNjIyNTE5ZjRkN2QyM2Ri
YTE0MmY4YmEzYjEzOThkLi43MmNmNTVkYjZjMWY5ZDBlNDQyMGQ5YzdmMzIzNDk3Mjc5ZjJjNTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMjE4LDYgKzIxOCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICAjIE5vdGlmaWNhdGlvbgogICAgIERpZFJlY2VpdmVOb3RpZmlj
YXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxs
b3dlZCkKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgRGlkUmVjZWl2ZVBvaW50ZXJM
b2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3dlZCkKKyNlbmRpZgorCiAgICAgU2V0V2lu
ZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmlldykKIAogICAgICMg
UHJpbnRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBi
NWIyMTRhYWVlYzNlMDA0MTNkMTU5ODZhNDViYWU5MGFkYmNhOGNiLi5jYTU2OTkwMWFkOTk3N2Yx
MzFmZDUyOGY1ZmU5YmU5NDJhMmU0MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIw
OSw2ICsyMTIsOSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBVU0UoU09VUCkKICAg
ICBhZGRTdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKTsKICNlbmRpZgorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgYWRkU3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyPigpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDAwM2NmNjI0YTgwMDM4Y2Q0ZDE1NWQ5ZWI2NTU3MWY4YzE5N2I4ZGUuLjRkMjgwM2Y4ZjAw
ZmQ4ZGJmMDQzMWQ3MzZhMjY5ZGVhYmQzOTQ1MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0wNi0yMSAgU3Rh
bmlzbGF2IFBpa3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtR
dF1bV0syXSBBZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBwb2ludGVyIGxvY2sg
cGVybWlzc2lvbiBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgYWRkIHBvaW50
ZXIgbG9jayBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgcHJvdmlkZSB1c2Fn
ZSBzYW1wbGUgaW4gTWluaUJyb3dzZXIgKG5vdCBjbGlwIGFuZCBub3QgaGlkZSBjdXJzb3Igbm93
KQorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHA6
CisgICAgICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3RpZnkpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnN1cHBvcnRzUG9pbnRlckxvY2spOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlcXVlc3RQb2ludGVyTG9jayk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0UG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
aGFzUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpoYXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSk6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhhc1BvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdUUjo6YWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChX
VFI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RSOjpw
b2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKToKKyAgICAg
ICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnByb3ZpZGVyKToKKyAg
ICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RSOjpXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAg
ICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Bl
cm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXI6OnJlc2V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVy
ZXMvZmVhdHVyZXMucHJpOgorCiAyMDEzLTA2LTIxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVt
ZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTUwNjYzKTogVXNp
bmcgd2Via2l0QXVkaW9Db250ZXh0IGluIEluc3BlY3RvciBtYWtlcyBpdCB1bmRlZmluZWQgZXZl
cnl3aGVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBs
aWNhdGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9u
LmNwcAppbmRleCA2ZDVjNmE2MzAyYzc3ZmEzZGY0MDBiOTc1YTNkNmMyNmEzZWNhMGU2Li40MjE4
OGJmNGRiOTgwYjY2MjFlMzRlYzYxZTk2MjdjNmYxMDIxNjcwIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMTY3LDEyICsxNjcsMjAg
QEAgYm9vbCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3RpZnkoUU9iamVjdCogdGFyZ2V0LCBR
RXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUUV2ZW50OjpN
b3VzZU1vdmU6CiAgICAgICAgICAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRvbnMoKSkgeworI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgICAgICAgICAgaWYgKG1faG9sZGluZ0NvbnRy
b2wgJiYgbV90b3VjaFBvaW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQt
PmFjY2VwdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRh
cmdldCwgZXZlbnQpOworI2Vsc2UKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHN3YWxs
b3cgdGhlIGV2ZW50IGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgaXQsCiAgICAgICAgICAgICAgICAg
Ly8gc2luY2Ugd2UgYXZvaWQgc2VuZGluZyB0aGUgbW91c2UgcmVsZWFzZSBldmVudHMgYW5kIGlm
IHRoZQogICAgICAgICAgICAgICAgIC8vIEZsaWNrYWJsZSBpcyB0aGUgbW91c2UgZ3JhYmJlciBp
dCB3b3VsZCByZWNlaXZlIHRoZSBldmVudAogICAgICAgICAgICAgICAgIC8vIGFuZCB3b3VsZCBt
b3ZlIHRoZSBjb250ZW50LgogICAgICAgICAgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgdG91Y2hUeXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKICAgICAgICAgICAgIHRvdWNoUG9p
bnQuc2V0SWQobW91c2VFdmVudC0+YnV0dG9ucygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Ft
bC9Ccm93c2VyV2luZG93LnFtbAppbmRleCBiNGI1YmMwOTI2OGNiYjNjZjM0OWMwOGEwNmM3YzJh
OTVkY2NlYTY1Li5hYmNkOGFjMzQxMTU5NTdlMGE2MTc2M2MxNDEwZTM3OWViY2UwNzQzIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCkBAIC01NjQsNiArNTY0
LDIwIEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICBXaW5kb3cuc2hvd05vcm1hbCgpOwogICAg
ICAgICAgICAgbmF2aWdhdGlvbkJhci52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAg
ICBleHBlcmltZW50YWwub25QZXJtaXNzaW9uUmVxdWVzdGVkIDogeworICAgICAgICAgICAgaWYg
KHBlcm1pc3Npb24udHlwZSA9PT0gUGVybWlzc2lvblJlcXVlc3QuUG9pbnRlckxvY2spIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXBlcm1pc3Npb24uYWxsb3cpCisgICAgICAgICAgICAgICAgICAg
IHBlcm1pc3Npb24uYWxsb3cgPSB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZXhwZXJpbWVudGFsLm9uUG9pbnRlckxvY2tSZXF1ZXN0ZWQgOiB7CisgICAgICAgIH0KKyAg
ICAgICAgZXhwZXJpbWVudGFsLm9uUG9pbnRlclVubG9ja1JlcXVlc3RlZCA6IHsKKyAgICAgICAg
fQorICAgICAgICBLZXlzLm9uRXNjYXBlUHJlc3NlZDogeworICAgICAgICAgICAgaWYgKHdlYlZp
ZXcuZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQpCisgICAgICAgICAgICAgICBleHBlcmltZW50
YWwudW5sb2NrUG9pbnRlcigpCisgICAgICAgIH0KICAgICB9CiAKICAgICBTY3JvbGxJbmRpY2F0
b3IgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggY2U2NDdlMjY3Y2FlMWQxZWYyOGZm
ZDFmZjc3MDkzMzg3YjU4YTYzZS4uZThmYjIzNjMxM2I5OGUwYjM3MzJhZGY1OWJkY2UyOGM2YWUw
ZWE5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xOTAsNSArMTkwLDExIEBAIGlu
dGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIC8vIFNlY3VyZSB0ZXh0IGlucHV0IG1vZGUgKE1h
YyBvbmx5KQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNlY3VyZUV2ZW50SW5wdXRJ
c0VuYWJsZWQ7Ci19OwogCisgICAgLy8gUG9pbnRlckxvY2sKKyAgICB2b2lkIGRpZExvc2VQb2lu
dGVyTG9jaygpOworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZh
aWxTeW5jaHJvbm91c2x5KCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5
bmNocm9ub3VzbHkoKTsKK307CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggZWI1MGNlMGUw
NTAyMGYwMDkzMDUwOTU3OTk4NmFjODAyZDMxOGNlYy4uNzM5OTM4YWQ1ZDFiYTEzNzI4YmM1MTdh
NzlmZTg3MzAxNjg2Y2YwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNDE1LDYgKzQx
NSwxNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQo
bV9wYWdlLCAmZnVsbFNjcmVlbkNsaWVudCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQgcG9pbnRlckxvY2tDbGll
bnQgPSB7CisgICAgICAgIGtXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudEN1cnJlbnRWZXJz
aW9uLAorICAgICAgICB0aGlzLAorICAgICAgICBzdXBwb3J0c1BvaW50ZXJMb2NrLAorICAgICAg
ICByZXF1ZXN0UG9pbnRlckxvY2ssCisgICAgICAgIDAsIC8vIHJlcXVlc3RQb2ludGVyVW5sb2Nr
LAorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0UG9pbnRlckxvY2tDbGllbnQobV9wYWdlLCAm
cG9pbnRlckxvY2tDbGllbnQpOworI2VuZGlmCiB9CiAKIEluamVjdGVkQnVuZGxlUGFnZTo6fklu
amVjdGVkQnVuZGxlUGFnZSgpCkBAIC0xNzk2LDYgKzE4MDcsMzIgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmNsb3NlRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpzdXBwb3J0c1BvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5oYXNQb2ludGVyTG9ja1dpbGxG
YWlsU3luY2hyb25vdXNseSgpKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50
ZXN0UnVubmVyKCktPnNldFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluamVjdGVkQnVu
ZGxlUGFnZTo6cmVxdWVzdFBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreworICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5oYXNQb2ludGVyTG9j
a1dpbGxGYWlsU3luY2hyb25vdXNseSgpKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS50ZXN0UnVubmVyKCktPnNldFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSAKKworICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkudGVzdFJ1bm5lcigpLT5oYXNQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHko
KSkgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zZXRQ
b2ludGVyTG9ja1VzdWFsQmVoYXZpb3IoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIFdLQnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKHBhZ2UpOwor
fQorI2VuZGlmCisKIHN0YXRpYyBib29sIGNvbXBhcmVCeVRhcmdldE5hbWUoV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0xLCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYg
aXRlbTIpCiB7CiAgICAgcmV0dXJuIHRvU1REKGFkb3B0V0soV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtQ29weVRhcmdldChpdGVtMSkpKSA8IHRvU1REKGFkb3B0V0soV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtQ29weVRhcmdldChpdGVtMikpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCmluZGV4
IGQwOWEyMDRkZDllY2VlNWRiMGM2NGM2YzNiZmU0OWNjNjg5MTNlMWEuLjdkNTgwOWU5ZjJhMDVm
NmZlMDMyYWQ1YmI5Y2FhNGRiMDAwYTZmNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApAQCAtMTQw
LDYgKzE0MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNsb3NlRnVsbFNjcmVlbihX
S0J1bmRsZVBhZ2VSZWYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAg
IC8vIFBvaW50ZXIgTG9jayBjbGllbnQKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BvaW50ZXJM
b2NrKFdLQnVuZGxlUGFnZVJlZik7CisgICAgc3RhdGljIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2Nr
KFdLQnVuZGxlUGFnZVJlZik7CisjZW5kaWYKKwogICAgIC8vIEVkaXRvciBjbGllbnQKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJh
bmdlSGFuZGxlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRFbmRFZGl0aW5nKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhNjk2NjAwNTE3YjY5ZTgyOWIw
ZWU5MmQ2NWU1NGRmMmNmODFiZTA3Li5iYjE4Y2E2MTFmMDE2ODVlY2YyNDEyOTkxODcwNzJmOWIy
Mjk2NDc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cigpCiAgICAgLCBtX2N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvcihmYWxzZSkKICAgICAsIG1fdXNl
clN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9u
KGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKSkKKyAgICAsIG1fcG9p
bnRlckxvY2tSZXNwb25zZVN0YXR1cyhQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IpCiB7CiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9CkBAIC04MTIsNCArODEzLDE5IEBAIGJvb2wgVGVzdFJ1
bm5lcjo6c2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdLQm9v
bGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpOwogfQog
Cit2b2lkIFRlc3RSdW5uZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgV0tCdW5kbGVQ
YWdlRGlkTG9zZVBvaW50ZXJMb2NrKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBh
Z2UoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sK
KyAgICBXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2soSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWROb3RBY3F1
aXJlUG9pbnRlckxvY2soKQoreworICAgIFdLQnVuZGxlUGFnZURpZE5vdEFjcXVpcmVQb2ludGVy
TG9jayhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZWYwZWE4YzcwOGQxYzJmYTk1YWM1N2IwMGQyYWQ3NjYy
MzdmNjcyYS4uODM4MDlmMzBmMzQ2MTQzZmEyZjcxZThhOTFiOGJkZDA5YmFkZDIxNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
QEAgLTI3NSw2ICsyNzUsMTggQEAgcHVibGljOgogCiAgICAgYm9vbCBzZWN1cmVFdmVudElucHV0
SXNFbmFibGVkKCkgY29uc3Q7CiAKKyAgICAvLyBDdXN0b20gUG9pbnRlckxvY2sgYmVoYXZpb3IK
KyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50
ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKworICAgIHZv
aWQgc2V0UG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKCkgeyBtX3BvaW50ZXJMb2NrUmVzcG9uc2VT
dGF0dXMgPSBQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3I7IH0KKyAgICBib29sIGhhc1BvaW50ZXJM
b2NrVXN1YWxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tSZXNwb25zZVN0
YXR1cyA9PSBQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3I7IH0KKyAgICB2b2lkIHNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkgeyBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMg
PSBQb2ludGVyTG9ja1Jlc3BvbnNlRmFpbDsgfQorICAgIGJvb2wgaGFzUG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2NrUmVzcG9uc2VT
dGF0dXMgPT0gUG9pbnRlckxvY2tSZXNwb25zZUZhaWw7IH0KKyAgICB2b2lkIHNldFBvaW50ZXJM
b2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpIHsgbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3Rh
dHVzID0gUG9pbnRlckxvY2tSZXNwb25zZUFzeW5jOyB9CisgICAgYm9vbCBoYXNQb2ludGVyTG9j
a1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2Nr
UmVzcG9uc2VTdGF0dXMgPT0gUG9pbnRlckxvY2tSZXNwb25zZUFzeW5jOyB9CisKIHByaXZhdGU6
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFs
OwogCkBAIC0zMjUsNiArMzM3LDE0IEBAIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKIAogICAgIFBsYXRmb3JtVGltZXJSZWYg
bV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsKKworICAgIGVudW0gUG9pbnRlckxvY2tSZXNwb25z
ZVN0YXR1cyB7CisgICAgICAgIFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvciwKKyAgICAgICAgUG9p
bnRlckxvY2tSZXNwb25zZUZhaWwsCisgICAgICAgIFBvaW50ZXJMb2NrUmVzcG9uc2VBc3luYwor
ICAgIH07CisKKyAgICBQb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzIG1fcG9pbnRlckxvY2tSZXNw
b25zZVN0YXR1czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJn
ZXQucHJpCmluZGV4IDM5ODAwYWI4ZGNmZjNjZDQ0ZWMyOTE2NmQzNzFiY2RlMmQ0NDBhNjMuLjFj
YmEzZDE2NDQ5MDEyZGZmZjk1NGJkMjVmMWU5ODMxOTEwOTIzYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1RhcmdldC5wcmkKQEAgLTE1LDYgKzE1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVGVzdENvbnRy
b2xsZXIuaCBcCiAgICAgVGVzdEludm9jYXRpb24uaCBcCiAgICAgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaCBcCisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBcCiAgICAg
V29ya1F1ZXVlTWFuYWdlci5oCiAKIFNPVVJDRVMgKz0gXApAQCAtMjcsNiArMjgsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBUZXN0Q29udHJvbGxlci5jcHAgXAogICAgIFRlc3RJbnZvY2F0aW9uLmNw
cCBcCiAgICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIFwKKyAgICBXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlci5jcHAgXAogICAgIFdvcmtRdWV1ZU1hbmFnZXIuY3BwCiAKIERF
U1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDA5NjQ3YTE2MDE3Mzg0MTdjZmZkZjAzNjZlNGQ5OTE4MDNk
NjQ5MjMuLmQ1N2QxZDIxYTA3NTAzZDE1N2ZjNzgwZDg3MDRmZWMyNWRmNGQxNmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAog
I2luY2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdy
b3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
Lmg+CisjZW5kaWYKICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAg
LTI0Nyw2ICsyNTEsNyBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFn
ZShXS1BhZ2VSZWYgb2xkUGFnZSwgV0tVUkxSZXF1ZXN0UmVmLCBXSwogICAgICAgICAwLCAvLyBz
aG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIDAs
IC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICAwLCAvLyBkZWNpZGVQ
b2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50KTsKIApAQCAtMzg4LDYg
KzM5MywxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25z
dCBjaGFyKiBhcmd2W10pCiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlciBub3RpZmljYXRpb25L
aXQgPSBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnByb3ZpZGVyKCk7CiAgICAgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobm90aWZpY2F0aW9uTWFuYWdlciwgJm5vdGlmaWNhdGlv
bktpdCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclJlZiBwb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyID0gV0tDb250ZXh0
R2V0UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihtX2NvbnRleHQuZ2V0KCkpOworICAgIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgcG9pbnRlckxvY2tQZXJtaXNzaW9uS2l0ID0g
bV93ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5wcm92aWRlcigpOworICAgIFdLUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclNldFByb3ZpZGVyKHBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIsICZwb2ludGVyTG9ja1Blcm1pc3Npb25LaXQpOworI2VuZGlmCisKICAgICBpZiAo
dGVzdFBsdWdpbkRpcmVjdG9yeSgpKQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1
Z2luc0RpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CiAK
QEAgLTQ0Niw2ICs0NTcsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0
aE9wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIHNob3dDb2xv
clBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKICAgICAgICAgdW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9t
YWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50KTsKIApAQCAtNjE1LDYgKzYyNywxMSBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAg
ICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gZmFsc2U7CiAgICAgbV9pc0dlb2xvY2F0
aW9uUGVybWlzc2lvbkFsbG93ZWQgPSBmYWxzZTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgLy8gUmVzZXQgUG9pbnRlckxvY2sgcGVybWlzc2lvbnMuCisgICAgbV93ZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlci5yZXNldCgpOworI2VuZGlmCisKICAgICAvLyBSZXNldCBD
dXN0b20gUG9saWN5IERlbGVnYXRlLgogICAgIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGZhbHNl
LCBmYWxzZSk7CiAKQEAgLTEyMDMsNiArMTIyMCwxOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdL
UwogICAgIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0KTsKIH0K
IAordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdChXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sK
KyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdChwYWdlLCBvcmlnaW4sIHJlcXVlc3QpOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXS1BvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0KTsKKyNlbmRpZgorfQorCiB2b2lk
IFRlc3RDb250cm9sbGVyOjp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV0tQYWdlUmVm
LCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYsIGNvbnN0IHZv
aWQqKQogewogICAgIHByaW50ZigiTUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNTRURcbiIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGRlZTI2ODM0NmRmOWMy
OGQ3M2NlYmUzOWE4MDM0MjA1ZGNhM2Q0YjcuLjk4ODQxOGMzZjM3Y2I3YmJjNTk1Y2ZmZWU0YjM3
MjcwMTJhOGIyNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAg
LTI3LDYgKzI3LDkgQEAKICNkZWZpbmUgVGVzdENvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1
ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgiCisjZW5kaWYKICNpbmNsdWRl
ICJXb3JrUXVldWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8R2VvbG9jYXRpb25Qcm92aWRlck1vY2su
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CkBAIC0xMzcsNiArMTQwLDkgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0
eU9yaWdpblJlZiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAKKyAgICBz
dGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmKTsKKwogICAgIHN0YXRpYyB2b2lkIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXS1BhZ2VSZWYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24sIFdLRGljdGlvbmFyeVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwpAQCAtMTcwLDYgKzE3NiwxMCBAQCBwcml2YXRlOgogCiAgICAgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKIAorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgbV93ZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlcjsKKyNlbmRpZgorCiAgICAgT3duUHRyPFBsYXRmb3JtV2Vi
Vmlldz4gbV9tYWluV2ViVmlldzsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29u
dGV4dDsKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gbV9wYWdlR3JvdXA7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OTk0ZGJmMzUwYmNkMWUzMTFhN2MzYjUyZDYy
Njc1ZTRjOWFiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZUFycmF5Lmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyB2b2lkIGFkZFBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFn
ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8V2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobWFuYWdlcik7Cit9CisKK3N0YXRpYyB2
b2lkIHJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
c3RhdGljX2Nhc3Q8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIo
bWFuYWdlcik7Cit9CisKK3N0YXRpYyBXS0RpY3Rpb25hcnlSZWYgcG9pbnRlckxvY2tQZXJtaXNz
aW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+cG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOworfQorCitXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlcjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIoKQorewor
fQorCitXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyOjpwcm92aWRlcigpCit7CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlciBwb2ludGVyTG9ja1Byb3ZpZGVyID0geworICAgICAgICBrV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAorICAgICAgICB0aGlzLAorICAgICAgICBX
VFI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsCisgICAgICAgIFdUUjo6cmVtb3Zl
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciwKKyAgICAgICAgV1RSOjpwb2ludGVyTG9ja1Bl
cm1pc3Npb25zLAorICAgIH07CisgICAgcmV0dXJuIHBvaW50ZXJMb2NrUHJvdmlkZXI7Cit9CisK
K3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIp
Cit7CisgICAgQVNTRVJUKCFtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOworICAgIG1f
cG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciA9IG1hbmFnZXI7Cit9CisKK3ZvaWQgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIpCit7CisgICAg
QVNTRVJUKG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fcG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5nZXQoKSA9PSBtYW5hZ2VyKTsKKyAgICBtX3BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIgPSAwOworfQorCitXS0RpY3Rpb25hcnlSZWYgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKQorewor
ICAgIC8vIEZJWE1FIDogSXQgc2hvdWxkIGJlIHJlYWwgY2FjaGUgZm9yIHBlcm1pc3Npb25zCisg
ICAgcmV0dXJuIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKK30KKwordm9pZCBXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cmVzZXQoKQoreworICAgIC8vIEZJWE1FIDogcmVz
ZXQgcmVhbCBjYWNoZQorfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEVOQUJM
RShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJjMTk0MzczMTAz
NmFmMjRkZDJiYTA4NTAyZTEyODQ4OThmMzQzNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2lu
Y2x1ZGUgPFdlYktpdDIvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVz
cGFjZSBXVFIgeworCitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciB7Citw
dWJsaWM6CisgICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIoKTsKKyAgICBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIHByb3ZpZGVyKCk7CisKKyAgICB2b2lkIGFkZFBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UmVmKTsKKyAgICB2b2lkIHJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmKTsKKyAgICBXS0RpY3Rpb25hcnlSZWYgcG9pbnRl
ckxvY2tQZXJtaXNzaW9ucygpOworCisgICAgdm9pZCByZXNldCgpOworcHJpdmF0ZToKKyAgICBX
S1JldGFpblB0cjxXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWY+IG1fcG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCmRp
ZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaSBiL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCmluZGV4IDEwNzg4NTA0ZDdj
MTMyZDU3OWU2YTE3ZmU1YzVhZDJjN2ZkNThjYTYuLmIzNDYzYTA4MTNkYjU5MGZkN2ExNzM3Zjhi
MzNjNzVjOTZlNDkxMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMv
ZmVhdHVyZXMucHJpCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMu
cHJpCkBAIC0xMjYsMyArMTI2LDUgQEAgRkVBVFVSRV9ERUZBVUxUUyA9IFwKICAgICBFTkFCTEVf
V09SS0VSUz0xIFwKICAgICBFTkFCTEVfWEhSX1RJTUVPVVQ9MSBcCiAgICAgRU5BQkxFX1hTTFQ9
MCBcCisgICAgRU5BQkxFX1BPSU5URVJfTE9DSz0xIFwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0MzBjOGUxNDEzY2Mz
NGE4ZmI2NmJjOTk1OGMwOTBjMDJkMzdiYzcuLjIwNTAyODQ2NzE1NzliMjk4MmQyOGExYTczM2E1
ZmUwNjIyOTQ4MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wNi0yMSAgU3RhbmlzbGF2
IFBpa3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBBZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdGVzdCBpcyBwZXJmb3JtZWQg
c3VjY2Vzc2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBmaXJzdCBydW4gb2YgYWxsIHRlc3RzIGNvbXBs
ZXRlIHdpdGg6IAorICAgICAgICBmYWlsZWQgdGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURv
bmUgdG8gYmUgY2FsbGVkOgorICAgICAgICBwb2ludGVyLWxvY2svYnVnOTAzOTEtbW92ZS10aGVu
LXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwKKworICAgICAgICBPbmUgdGVzdCBmYWlsLCBubyBkb3Vi
bGVjbGljayBzdXBwb3J0IG5vdzoKKyAgICAgICAgcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRl
bGl2ZXJ5Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAxMy0wNi0yMSAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogSW50ZWdyYXRlIG5ldyByZWdpb25PdmVyc2V0Q2hhbmdl
IGV2ZW50IGludG8gaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC01LjAtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGQxYzA5OWI3YTZiNzU0YTU0ZWVmNDA1NTg0ZTEx
YWQzYzdmODBmMC4uMTIyYjdiMzJiMTU1ZWFlMzEyZjFlYzI4MmNmNDMyZDAyMTZiZjk0YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNjU4LDYgKzY1OCw5IEBAIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvbG9nb3V0Lmh0bWwK
IHBsYXRmb3JtL3F0L3BsdWdpbnMvYXBwbGljYXRpb24tcGx1Z2luLXBsdWdpbnMtZGlzYWJsZWQu
aHRtbAogcGxhdGZvcm0vcXQvcGx1Z2lucy9xdC1xd2lkZ2V0LXBsdWdpbi5odG1sCiAKKyMgW1F0
XVtXSzJdIFJFR1JFU1NJT04ocjE1MTczNykKK3dlYmtpdC5vcmcvYi8xMTc4MjQgZmFzdC9yZXBs
YWNlZC93aWR0aDEwMHBlcmNlbnQtaW1hZ2UuaHRtbCBbIFNraXAgXQorCiAjID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSAjCiAjIFByaW50aW5nIHRlc3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAj
CkBAIC04MTksMyArODIyLDEyIEBAIHdlYmtpdC5vcmcvYi83Njk4NiBzY3JvbGxiYXJzL3Njcm9s
bC1ydGwtb3ItYnQtbGF5ZXIuaHRtbAogCiAjIFtRdF0gSW1hZ2VzIHNjYWxlIGRpZmZlcmVudGx5
IGluIFdLMSBhbmQgV0syCiB3ZWJraXQub3JnL2IvOTIwMTUgdGFibGVzL21vemlsbGFfZXhwZWN0
ZWRfZmFpbHVyZXMvYnVncy9idWc4NTAxNi5odG1sCisKKyMgW1F0XVtXSzJdIGVuYWJsZSBwb2lu
dGVyIGxvY2sgdGVzdHMKK2h0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFBhc3MgXQorcG9pbnRl
ci1sb2NrLyBbIFBhc3MgXQorCisjIFtRdF1bV0syXSBUaGUgdGVzdCBpcyBwZXJmb3JtZWQgc3Vj
Y2Vzc2Z1bGx5LCBidXQgd2l0aG91dCAtLXNpbmdseSBhZnRlciB0aGF0IHRlc3QgYWxsIHRlc3Rz
IGNvbXBsZXRlIHdpdGg6IGZhaWxlZCB0aW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0
byBiZSBjYWxsZWQuCitwb2ludGVyLWxvY2svYnVnOTAzOTEtbW92ZS10aGVuLXdpbmRvdy1vcGVu
LWNyYXNoLmh0bWwgWyBTa2lwIF0KKyMgW1F0XVtXSzJdIEl0IGFsd2F5IGZhaWwuIE5vIGRvdWJs
ZWNsaWNrIHByb2Nlc3Npbmcgbm93LiBJdCBuZWVkcyBpbnZlc3RpZ2F0aW9uLgorcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205189</attachid>
            <date>2013-06-21 08:49:16 -0700</date>
            <delta_ts>2013-06-24 04:58:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117789-20130621194723.patch</filename>
            <type>text/plain</type>
            <size>202599</size>
            <attacher name="Stanislav Pikulik">stanislav.pikulik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NjBlNjM0YTllN2Q1
MmIzOTk0MjAzNzI3ODE5OWE5YjA2NGExZi4uN2Y0ZTgzYzUwNjdhNGY0MmJmNWI5MDE1MTdjYWRj
YTMxZjliYmZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTIxICBTdGFu
aXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRhcmdldCBtZXRob2QgdG8gZ2V0IHNlY3VyaXR5IG9yaWdpbiBv
ZiBkb2N1bWVudCB0byB3aGljaCB0aGUgZWxlbWVudCBiZWxvbmdzLCAKKyAgICAgICAgYmVmb3Jl
IHBvaW50ZXIgbG9jayB3aWxsIGJlIHJlcXVlc3RlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMjEgIFJhZHUg
U3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
dGVncmF0ZSBuZXcgcmVnaW9uT3ZlcnNldENoYW5nZSBldmVudCBpbnRvIGluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDcwODdiNTUzNmEyMzdiZjVkMmEwMDNlN2VjZTg5OTQ3ZGJmNDU3ZDAuLjY5YTQw
NjVhMGY1YTM3YTViMDUxMjBiNzMyNmVkNGQ4MjEyNjQyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMTMgQEAKKzIwMTMtMDYtMjEgIFN0YW5pc2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3Vs
aWtAbGdlLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2Nr
IEltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBhZGQgcG9pbnRlciBsb2NrIHBlcm1pc3Npb24gcmVxdWVzdCBwcm9jZXNzaW5nCisg
ICAgICAgIGFkZCBwb2ludGVyIGxvY2sgcmVxdWVzdHMgcHJvY2Vzc2luZworICAgICAgICBhZGQg
cW1sIEFQSQorICAgICAgICBhZGQgcW1sIHRlc3RzIGZvciBwb2ludGVyIGxvY2sKKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6CisgICAgICAgICogU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdldFR5cGVJRCk6Cisg
ICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50
ZXJMb2NrUG9saWN5KToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclBy
b3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3cp
OgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFs
aXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpwb2ludGVyTG9ja2VkKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp1bmxvY2tQb2ludGVyKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBvaW50ZXJMb2NrZWQpOgorICAgICAgICAoUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbDo6dW5sb2NrUG9pbnRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlz
c2lvbnJlcXVlc3QuY3BwOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTo6
UVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGVybWlzc2lvblJl
cXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlFXZWJQZXJt
aXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChRV2ViUGVybWlzc2lvblJlcXVlc3Q6OnNldEFsbG93
KToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJs
b2NrLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vcG9pbnRlcmxvY2sxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3cpOgorICAgICAgICAoV2ViS2l0OjpQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6fldlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnNldFdl
YlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6aXNQ
b2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJv
eHk6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgICogVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UHJveHk6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRT
dXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0ZUNvcHlPZlBvaW50
ZXJMb2NrUGVybWlzc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL3F0L1dlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHk6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkTG9zZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwb2ludGVyTG9ja01hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyTG9ja1Blcm1p
c3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50Lmg6
CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UG9p
bnRlckxvY2tDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRl
ckxvY2spOgorICAgICAgICAoV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jayk6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VJc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZURpZE5v
dEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRMb3NlUG9pbnRl
ckxvY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQb2ludGVyTG9j
a1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlQWxs
UG9pbnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6OnN1cHBvcnRz
UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVy
TG9ja0NsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50
ZXJMb2NrQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2sv
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpwZXJtaXNzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6c2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVBbGxQ
ZXJtaXNzaW9uc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lz
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9j
a1Blcm1pc3Npb25DYWxsYmFjazo6flBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6V2ViUG9pbnRlckxvY2tN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjp+V2ViUG9p
bnRlckxvY2tNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjpzdXBwb3J0c1BvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tN
YW5hZ2VyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVy
TG9ja01hbmFnZXI6OnJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UG9pbnRlckxvY2tNYW5hZ2VyOjppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpkaWRMb3NlUG9pbnRlckxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN0YXJ0UmVxdWVz
dFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpz
dGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50
ZXJMb2NrTWFuYWdlcjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbkNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25DYWxsYmFjazo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjazo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2lu
dGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OnN1cHBsZW1lbnRO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6On5XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXI6OmRpZFVwZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpkaWRSZW1vdmVQb2ludGVyTG9ja0RlY2lz
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6
OnBvbGljeUZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmg6
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG9pbnRlckxvY2tNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6V2ViUHJvY2Vzcyk6CisKIDIwMTMtMDYtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERvIG5vdCB0cnkgdG8gbG9hZCB2aWRl
b3MgaW4gdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggY2JhNDI2YzU0ZjkyMTdlZmMzODA0Mzcz
OTg5YjdkYTkwMGZmZDkxMy4uN2I5Nzk3NGFhMTdkZGNkMGU2ZTBiMjQ5MTNjYmM5OTAyZGIxYjA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC05NDEsNiArOTQxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFn
ZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKICAgICBwYWdlL1BlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuY3BwIFwKICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCisgICAgcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAg
XAogICAgIHBhZ2UvU2NyZWVuLmNwcCBcCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29u
c3RyYWludHMuY3BwIFwKQEAgLTIwOTcsNiArMjA5OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBh
Z2UvUGFnZVRocm90dGxlci5oIFwKICAgICBwYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuaCBcCiAg
ICAgcGFnZS9QbHVnSW5DbGllbnQuaCBcCisgICAgcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
aCBcCiAgICAgcGFnZS9Qb3B1cE9wZW5pbmdPYnNlcnZlci5oIFwKICAgICBwYWdlL1ByaW50Q29u
dGV4dC5oIFwKICAgICBwYWdlL1NjcmVlbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2tDb250cm9sbGVyLmNwcAppbmRleCA5NzRiOThkYTVmNGVhMzNhMWRlMzRlYmRjY2Zm
OTkwZTZmYjEzOWIyLi40YWU2YzlmMmRmOTBkZDk5MjQxZGM5NGU2NjU1ZTJhMzg1NmE4NDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCkBAIC02
OCwxMSArNjgsMTkgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVy
TG9jayhFbGVtZW50KiB0YXJnZXQpCiAgICAgICAgIH0KICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2
ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2NoYW5nZUV2ZW50LCB0YXJnZXQpOwogICAgICAg
ICBtX2VsZW1lbnQgPSB0YXJnZXQ7Ci0gICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5yZXF1ZXN0UG9pbnRlckxvY2soKSkgewotICAgICAgICBtX2xvY2tQZW5kaW5nID0g
dHJ1ZTsKLSAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRlcmxvY2tlcnJvckV2ZW50LCB0
YXJnZXQpOworICAgICAgICAvLyBUbyBkbyBwZXJtaXNzaW9uIHJlcXVlc3QgaXQgbmVlZHMgdG8g
aGF2ZSBhIHNlY3VyaXR5IG9yaWdpbiBvZgorICAgICAgICAvLyBkb2N1bWVudCB0aGF0IG93bnMg
ZWxlbWVudC4gRm9yIHRoaXMgcmVhc29uIEkgc2F2ZSB0YXJnZXQsIHRoYXQKKyAgICAgICAgLy8g
Y2FuIGJlIG9idGFpbmVkIGR1cmluZyBleGVjdXRpbmcgcmVxdWVzdC4KKyAgICAgICAgbV90YXJn
ZXQgPSB0YXJnZXQ7CisgICAgICAgIGlmIChtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5yZXF1
ZXN0UG9pbnRlckxvY2soKSkgeworICAgICAgICAgICAgbV9sb2NrUGVuZGluZyA9IHRydWU7Cisg
ICAgICAgICAgICBtX2VsZW1lbnQgPSB0YXJnZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBJZiByZXF1ZXN0IGZhaWxlZCBzeW5jaHJvbm91c2x5LCBpdCB3YXMgbm90IG5lY2Vz
c2FyeSB0byBzdG9yZSB0YXJnZXQKKyAgICAgICAgICAgIG1fdGFyZ2V0ID0gMDsKKyAgICAgICAg
ICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRlcmxvY2tlcnJvckV2ZW50
LCB0YXJnZXQpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xMTAsMTAgKzExOCwxNiBAQCBF
bGVtZW50KiBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVsZW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBtX2VsZW1lbnQuZ2V0KCk7CiB9CiAKK0VsZW1lbnQqIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
dGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Cit9CisKIHZvaWQg
UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQogewogICAgIGVu
cXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2VFdmVudCwgbV9l
bGVtZW50LmdldCgpKTsKICAgICBtX2xvY2tQZW5kaW5nID0gZmFsc2U7CisgICAgbV90YXJnZXQg
PSAwOwogfQogCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKCkKQEAgLTE0NSw2ICsxNTksNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
Y2xlYXJFbGVtZW50KCkKIHsKICAgICBtX2xvY2tQZW5kaW5nID0gZmFsc2U7CiAgICAgbV9lbGVt
ZW50ID0gMDsKKyAgICBtX3RhcmdldCA9IDA7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9s
bGVyOjplbnF1ZXVlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFbGVtZW50KiBlbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKaW5kZXgg
YzgyMDc1NGFlMWE0ZWNjNTNkMTE2YThkNDIxZGI0ZjY2YzQ0ZTM3NC4uZGVhNDExNGRiZDIzYjJl
ZDdlNzNmNGViZGI4ZTFlOTVjM2FjOTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRv
Y3VtZW50RGV0YWNoZWQoRG9jdW1lbnQqKTsKICAgICBib29sIGxvY2tQZW5kaW5nKCkgY29uc3Q7
CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OworICAgIEVsZW1lbnQqIHRhcmdldCgpIGNv
bnN0OwogCiAgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKICAgICB2b2lkIGRpZE5v
dEFjcXVpcmVQb2ludGVyTG9jaygpOwpAQCAtNjUsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9sb2NrUGVuZGluZzsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFJl
ZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudE9mUmVtb3ZlZEVsZW1lbnRXaGlsZVdhaXRpbmdGb3JV
bmxvY2s7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJp
IGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGRjMTdmYWFhYzBiOWNj
ZmY4MjhiNGJjZDc2MTRiYmFhNjNmMWRkOWMuLmFiZTFkZWQ1MDA5MmI0OTY2ODAxY2ZjZTUyOTRh
NWNhZmUxYmQwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnBy
aQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTQ4LDYgKzQ4LDcg
QEAgVlBBVEggPSBcCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mbyBcCiAgICAgV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMgXAorICAgIFdlYlByb2Nl
c3MvUG9pbnRlckxvY2sgXAogICAgIFdlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAgICAgV2Vi
UHJvY2Vzcy9TdG9yYWdlIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKQEAgLTU5
LDYgKzYwLDcgQEAgVlBBVEggPSBcCiAgICAgVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zIFwKKyAgICBVSVBy
b2Nlc3MvUG9pbnRlckxvY2sgXAogICAgIFVJUHJvY2Vzcy9TdG9yYWdlIFwKICAgICBTaGFyZWQg
XAogICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbiBcCkBAIC0xMDAsNiArMTAyLDkgQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBc
CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAorICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIubWVzc2FnZXMuaW4g
XAorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAg
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBcCiAgICAgRHJhd2luZ0FyZWEu
bWVzc2FnZXMuaW4gXAogICAgIFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggZWE4ZTJmMWJhNzQxYTc1YTI0MjBkOTFkMzIwOTM2
MDIzMzc0YTRmYi4uNDk5NzBmYmMyZDA5ODM1MjEwZmJmYWVhMTYyM2ExZDYwZDNhOTkyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM0LDYgKzEzNCw5IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIFdLUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVm
ZXJlbmNlc1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlciogV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KiBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKiBXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3Bh
Y2UqIFdLUHJvdGVjdGlvblNwYWNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tU
ZXh0Q2hlY2tlciogV0tUZXh0Q2hlY2tlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlvblJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNs
aWVudFRyYWl0cy5jcHAKaW5kZXggOWFmN2M3NmUzYmQyODRlY2ZmOTkwZDljMzNlYzI2ODg2MmU5
NTEzZi4uOTVmOGM5MTQyYmRmMjI3N2NiYTMyYjQzZjMxMTJjZjQyMGY2OWRjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgY29u
c3Qgc2l6ZV90IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Pjo6
aW50ZXJmYWNlU2l6ZXNCeVZlcnMKICAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LCBiZWdhbkVudGVyRnVsbFNjcmVlbiksCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQpCiB9OwotICAgIAorCiBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRz
PFdLUGFnZUNvbnRleHRNZW51Q2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsK
ICAgICBvZmZzZXRvZihXS1BhZ2VDb250ZXh0TWVudUNsaWVudCwgY29udGV4dE1lbnVEaXNtaXNz
ZWQpLAogICAgIG9mZnNldG9mKFdLUGFnZUNvbnRleHRNZW51Q2xpZW50LCBnZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnUpLApAQCAtNzIsNiArNzIsNyBAQCBjb25zdCBzaXplX3QgQVBJQ2xp
ZW50VHJhaXRzPFdLUGFnZUxvYWRlckNsaWVudD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10g
PSB7CiBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50Pjo6aW50ZXJm
YWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS1BhZ2VVSUNsaWVudCwgY3Jl
YXRlTmV3UGFnZSksCiAgICAgb2Zmc2V0b2YoV0tQYWdlVUlDbGllbnQsIHNob3dDb2xvclBpY2tl
ciksCisgICAgb2Zmc2V0b2YoV0tQYWdlVUlDbGllbnQsIGRlY2lkZVBvbGljeUZvclBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3QpLAogICAgIHNpemVvZihXS1BhZ2VVSUNsaWVudCkKIH07CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKaW5kZXggNGE2NmE0ZWU4
MDI4ZTlkN2Q3NGUxNDNiNjNjY2UwMWI5NDM5Nzg2Ny4uMTQzODBmYjExMjJjZDM0MjBlMWE1NDM2
MWQwMzVmMWYxMzgzZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNs
aWVudFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMu
aApAQCAtNjgsNyArNjgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tQ
YWdlTG9hZGVyQ2xpZW50PiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFp
dHM8V0tQYWdlVUlDbGllbnQ+IHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNp
emVzQnlWZXJzaW9uWzNdOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNC
eVZlcnNpb25bNF07CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tC
dW5kbGVQYWdlRm9ybUNsaWVudD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDRi
ZTM5OWE3MTNiZjkyYmM3Yjk4MjA2YzdlYjExMjk4NDA3YzVlOGYuLmI5NjQ5ZDQ3MmJlYjYxZDFj
Y2M5MjAwYTVkZjdjMzRhMmU1NjU1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAg
LTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVQYWdlLAogICAgICAgICBUeXBl
UGFnZUdyb3VwLAogICAgICAgICBUeXBlUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLAorICAgICAgICBU
eXBlUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgVHlwZVBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXIsCiAgICAgICAgIFR5cGVQcmVmZXJlbmNlcywKICAgICAgICAgVHlw
ZVRleHRDaGVja2VyLAogICAgICAgICBUeXBlVmlicmF0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCA4MWFmN2ViMjcwMmU2NDA2MjFlMjhj
YmE3NTA4YTY4MzZjZTQzNmY2Li45ZjFlNTdiZjczMWVlNThlM2YyZTQ4Y2E0ZmQ1OTczMzI5NmQ0
ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApA
QCAtODMsNiArODMsMTAgQEAgcHVibGljOgogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2Vi
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQu
Y2xpY2tDb3VudCgpOwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgbV9tb3Zl
bWVudERlbHRhID0gV2ViQ29yZTo6SW50UG9pbnQod2ViRXZlbnQuZGVsdGFYKCksIHdlYkV2ZW50
LmRlbHRhWSgpKTsKKyNlbmRpZgorCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAgICAg
ICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdz
IHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA1NmYxNDRkNmRhNGIyNTcz
YzlkZmU1NjA2YWMzNDI5MzIwODE5NDZmLi4wMWY0YzZiM2VlYzNkYWUyMDQxNjBiN2UyODFiYjE5
ZTg4NjkyZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDYsNiArMTA2LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlcikgY29uCiAgICAgZW5jb2RlciA8PCBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBlbmNvZGVyIDw8IHBvaW50ZXJM
b2NrUGVybWlzc2lvbnM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQy
MTkzYzc0Njc2Nzg4ZWYyZGU2ZWE3OTFhZjc5M2Y3NDg2ZjFlYjAuLjAyYTViYmRjZTE2NDJmNGIy
MjA5NzIyN2EzNzY4YzBhMzQzMjRiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTI4LDYgKzEyOCwxMCBAQCBz
dHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxTdHJpbmcs
IGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBwb2ludGVyTG9ja1Blcm1pc3Np
b25zOworI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGJvb2wgdXNl
c05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBmZTYzMzZhMTAxNTYzZjFi
ZTE2ZDViMGQ4MTczNDhkNTdlNTVkNDM3Li5mZDAyMjAwZTI3YWViMWNjNTJlYzg0ODg4MmYwYzRj
MTA0YzdlMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTE4OCw2ICsxODgsOSBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXIuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUHJvdGVjdGlvblNwYWNlLmggXApAQCAtMjc5LDYgKzI4MiwxMSBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggXAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIFwKKyAgICBV
SVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIFwKKyAg
ICBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5h
Z2VyUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJQcm94eS5oIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNs
aWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaCBcCiAgICAgVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oIFwKQEAgLTMxNiw2ICszMjQsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBcCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oIFwKQEAgLTMzOSw2ICszNDgsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5oIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Qb2lu
dGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjay5oIFwKKyAgICBXZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCYXR0ZXJ5Q2xpZW50LmggXAogICAgIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmggXApAQCAtNTQ5LDYgKzU2Miw4IEBAIFNPVVJD
RVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRl
RGF0YU1hbmFnZXIuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKQEAgLTU4OSw2ICs2MDQs
MTIgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1By
b3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3Mv
UG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNwcCBcCisg
ICAgVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
LmNwcCBcCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKICAgICBVSVBy
b2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwIFwKICAgICBVSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHAgXApAQCAtNjg5LDYgKzcxMCw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVu
dC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBcCkBAIC03MTUsNiArNzM3LDEwIEBAIFNPVVJDRVMg
Kz0gXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3Bw
IFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNh
bGxiYWNrLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAgXAogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDY0YzhkMWFiZmIxMDBj
OGU5NjI1NTc3OTExOWJhN2I0ZTE2ZWI5YjMuLjk2MTZmMTFiNjYyMjJjYjc5YzM3NGQ1OTdlNDA2
MjcyNzkwOGI5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
OwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eTsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOwpAQCAtOTAsNiArOTEsOCBAQCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xh
c3MgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5OworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI7
CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFdlYlJlbmRlckxheWVyOwpAQCAtMTM2LDYgKzEzOSw5IEBAIFdLX0FERF9BUElfTUFQUElORyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5CiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKIFdL
X0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYsIFdlYlBhZ2VQcm94eSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiwg
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5KQorV0tfQUREX0FQSV9NQVBQSU5H
KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiwgUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCkKK1dLX0FERF9BUElfTUFQUElORyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyUmVmLCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcikKIFdLX0FERF9BUElfTUFQ
UElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKIFdLX0FERF9BUElfTUFQUElO
RyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYsIFdlYlJlbmRlckxheWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAxNjI5YTU2MjczOThlZjY2MzVm
YzNiNDBmZThkNTNlYmJhZmI0NDZhLi4xNDcwZjBiN2MwMjBlMjAxMzY2ZGI2YTc4ZDg4Yjg2NWI5
YmQyY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cApAQCAtNDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNp
bmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogI2luY2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgiCkBAIC0yNjAs
NiArMjYzLDE1IEBAIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmlj
YXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmCiAgICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+
KCkpOwogfQogCitXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4
dFJlZiktPnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5Pigp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXJSZWYgV0tDb250ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4IDNjZTczMWU3OGYwZmNkODBi
OGE5YWQ3ZTRmYTA1ZDE1NWM5MzAwZTAuLmRlNDQ4Y2E5NTlkYmI4ZjY0Mjc1N2ZlZTU5MDc0ZTQw
NGQ0YTZjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgK
QEAgLTE5NSw3ICsxOTUsOCBAQCBXS19FWFBPUlQgV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tD
b250ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29udGV4dFJlZiBjbwogV0tfRVhQT1JUIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdL
Q29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJl
ZiBXS0NvbnRleHRHZXRQbHVnaW5TaXRlRGF0YU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQp
OwogV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3Vy
Y2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotICAgIAorV0tfRVhQT1JUIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKKwogdHlwZWRlZiB2b2lkICgq
V0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uKShXS0RpY3Rpb25hcnlSZWYgc3RhdGlzdGlj
cywgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9uKTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdGF0aXN0aWNzT3B0aW9ucyBzdGF0aXN0aWNzTWFzaywgdm9pZCog
ZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IDE3NjU3OGZlZTk1
MmQ1ZmU2YTE3NDVhNzM5Y2NjMDgyNTAwZjQzOGIuLjhhMWYzZWY5M2JmMjdmNTRkZWViMDA5Mzll
MDJhMWQ1M2M5ZDFkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
QEAgLTIyMCw2ICsyMjAsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZwogdHlwZWRlZiB2b2lk
ICgqV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VIaWRlQ29s
b3JQaWNrZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0RpY3Rpb25h
cnksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRl
UG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAK
IC8vIERlcHJlY2F0ZWQgICAgCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1Bh
Z2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0
aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1v
dXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTI4Miwx
MCArMjgzLDEzIEBAIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAgV0tQYWdlU2hvd0NvbG9y
UGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93
Q29sb3JQaWNrZXI7CiAgICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CiAgICAgV0tQYWdl
VW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMK
KyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3Q7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnQgV0tQYWdlVUlDbGllbnQ7CiAK
LWVudW0geyBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDIgfTsKK2VudW0geyBrV0tQ
YWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDMgfTsKIAogLy8gRmluZCBjbGllbnQuCiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaW5kU3RyaW5nQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTgy
YjRiNGZlODA3ZWE4NjNkNDkwZDNjMjE4YzE2YWY0NTNmYjNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlci5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNT
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKKworV0tUeXBlSUQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyR2V0VHlw
ZUlEKCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHJldHVybiB0b0FQSShXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OkFQSVR5cGUpOworI2Vsc2UKKyAgICBy
ZXR1cm4gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlclNldFByb3ZpZGVyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
KiB3a1Byb3ZpZGVyKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKG1h
bmFnZXJSZWYpLT5pbml0aWFsaXplUHJvdmlkZXIod2tQcm92aWRlcik7CisjZW5kaWYKK30KKwor
dm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50
ZXJMb2NrUG9saWN5KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZFVwZGF0
ZVBvaW50ZXJMb2NrUG9saWN5KHRvSW1wbChvcmlnaW4pLCBhbGxvd2VkKTsKKyNlbmRpZgorfQor
Cit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlUG9p
bnRlckxvY2tQb2xpY2llcyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdl
clJlZiwgV0tBcnJheVJlZiBvcmlnaW5zKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZFJlbW92ZVBvaW50ZXJMb2NrUG9saWNp
ZXModG9JbXBsKG9yaWdpbnMpKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIxNzE4YjQ5NTVlMDk5ZGQ4NmRkZTY2NDUzN2U5ZmNjMDRiZDQ5N2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05J
Q1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJfaAorI2RlZmluZSBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaAorCisj
aW5jbHVkZSAiV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIgorI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlckdl
dFR5cGVJRCgpOworV0tfRVhQT1JUIHZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
U2V0UHJvdmlkZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYs
IGNvbnN0IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpOworV0tf
RVhQT1JUIHZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRh
dGVQb2ludGVyTG9ja1BvbGljeShXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CitXS19F
WFBPUlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZVBvaW50ZXJMb2NrUG9saWNpZXMoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1h
bmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvLyBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50
ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZlODFkNzNhMTE5OTdlYTQ1
N2NjMDcwYzg4YjRmODdmYzMyNzhiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKKyNkZWZpbmUgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAo
KldLUG9pbnRlckxvY2tQZXJtaXNzaW9uQWRkTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrKShX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
UmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrKShXS1BvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJSZWYgbWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdL
RGljdGlvbmFyeVJlZiAoKldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJQZXJtaXNzaW9u
c0NhbGxiYWNrKShjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2
b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudEluZm87CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25BZGROb3RpZmljYXRpb25N
YW5hZ2VyQ2FsbGJhY2sgICAgICAgICAgICBhZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
OworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25N
YW5hZ2VyQ2FsbGJhY2sgcmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjsKKyAgICBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyUGVybWlzc2lvbnNDYWxsYmFjayAgICAgICAg
ICAgICAgIHBvaW50ZXJMb2NrUGVybWlzc2lvbnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
OworCitlbnVtIHsga1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVyc2lv
biA9IDAgfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBkNDk3ZmZiYzhhZTJiNjQyZjZiNzdiYWU0NWFhYTMzYjNj
M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxF
Q1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3RHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcmV0
dXJuIHRvQVBJKFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOworI2Vsc2UK
KyAgICByZXR1cm4gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdFJlZiBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KQoreworI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisgICAgcmV0dXJuIHRvSW1wbChwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
KS0+YWxsb3coKTsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdERlbnkoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4g
dG9JbXBsKHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpLT5kZW55KCk7CisjZW5kaWYKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTE4NmQ2NzAyMjA5ODFj
M2Q3Y2EwODE4ZjMyOGMwY2M2NjUzNGJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlw
ZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpOworCitXS19FWFBP
UlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk7CitXS19F
WFBPUlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3REZW55KFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMDg5OWI4NTYzODk0YTQwMDVhMTI4MzFmNjVl
M2Y5ZWIyYjY3MjhjOC4uZjhiNDVhZjcxMmI2ZWI4OWI4NTE4MDkyOGFhMjY4ZTg0ZDRhYmM1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcApAQCAtMjA5LDYgKzIwOSw3IEBAIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCiAgICAg
ICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBwbHVnaW5Mb2FkUG9saWN5
CisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QKICAgICB9OwogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSSh3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKTsKICAgICBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQod2tQYWdlLCAmd2tVSUNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCAxMjEzZmQ5YjIwMTg3Yjk5
NTkzZjQ1MDFmYzJkOTE2ZDU3YTI2NjFhLi44YTQ0ODBjZTJkZDExOTY5NjUzMzNjMjdjZjZjNmEx
YWY1NzNmYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKQEAgLTQ1LDYgKzQ1LDkgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5
LmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgInFnbG9i
YWwuaCIKICNpbmNsdWRlICJxcXVpY2tuZXR3b3JrcmVwbHlfcC5oIgpAQCAtMzM1LDYgKzMzOCwx
MCBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYQogICAgIHdlYlBhZ2VQcm94eS0+ZnVsbFNjcmVl
bk1hbmFnZXIoKS0+c2V0V2ViVmlldyhxX3B0cik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisgICAgd2ViUGFnZVByb3h5LT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c2V0V2Vi
VmlldyhxX3B0cik7CisjZW5kaWYKKwogICAgIHBhZ2VFdmVudEhhbmRsZXIucmVzZXQobmV3IFF0
V2ViUGFnZUV2ZW50SGFuZGxlcih3ZWJQYWdlLmdldCgpLCBwYWdlVmlldy5kYXRhKCksIHFfcHRy
KSk7CiAKICAgICB7CkBAIC01MjcsNiArNTM0LDE4IEBAIGJvb2wgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYlBhZ2VQcm94
eS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCitib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjpwb2ludGVyTG9ja2VkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2lu
dGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVubG9ja1BvaW50
ZXIoKQoreworICAgIHdlYlBhZ2VQcm94eS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmRpZExvc2VQ
b2ludGVyTG9jaygpOworfQorI2VuZGlmCisKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omxv
YWRQcm9ncmVzc0RpZENoYW5nZShpbnQgbG9hZFByb2dyZXNzKQogewogICAgIFFfUShRUXVpY2tX
ZWJWaWV3KTsKQEAgLTEwNzEsMTIgKzEwOTAsMzEgQEAgYm9vbCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOjp0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdAogICAgIFFfRChjb25zdCBRUXVp
Y2tXZWJWaWV3KTsKICAgICByZXR1cm4gZC0+dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7CiB9CisK
IHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGJvb2wgZW5hYmxlKQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKICAgICBkLT5zZXRUcmFu
c3BhcmVudEJhY2tncm91bmQoZW5hYmxlKTsKIH0KIAorYm9vbCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOjpwb2ludGVyTG9ja2VkKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cG9pbnRlckxv
Y2tlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1bmxvY2tQb2ludGVyKCkKK3sKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBkLT51bmxvY2tQb2ludGVy
KCk7CisjZW5kaWYKK30KKwogYm9vbCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VEZWZh
dWx0Q29udGVudEl0ZW1TaXplKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmll
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3AuaAppbmRleCA0Njg1MTVmY2ZmYTgxOTQ5MWIwYmRlZTM1MzY1NmUzODEwYTA4MDA5Li5mZjY1
ZmJhMGVkN2RlZTYzYjZmZTdhNDgzNjkxODQ4ODIwODVjZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTI1Niw3ICsyNTYs
NyBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDogcHVi
bGljIFFPYmplY3QgewogCiAgICAgUV9QUk9QRVJUWShib29sIHRyYW5zcGFyZW50QmFja2dyb3Vu
ZCBXUklURSBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQgUkVBRCB0cmFuc3BhcmVudEJhY2tncm91
bmQpCiAgICAgUV9QUk9QRVJUWShib29sIHVzZURlZmF1bHRDb250ZW50SXRlbVNpemUgV1JJVEUg
c2V0VXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZSBSRUFEIHVzZURlZmF1bHRDb250ZW50SXRlbVNp
emUpCi0KKyAgICBRX1BST1BFUlRZKGJvb2wgcG9pbnRlckxvY2tlZCBSRUFEIHBvaW50ZXJMb2Nr
ZWQpCiAgICAgUV9QUk9QRVJUWShpbnQgcHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGggV1JJ
VEUgc2V0UHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGggUkVBRCBwcmVmZXJyZWRNaW5pbXVt
Q29udGVudHNXaWR0aCBOT1RJRlkgcHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGhDaGFuZ2Vk
KQogICAgIFFfUFJPUEVSVFkoaW50IGRldmljZVdpZHRoIFdSSVRFIHNldERldmljZVdpZHRoIFJF
QUQgZGV2aWNlV2lkdGggTk9USUZZIGRldmljZVdpZHRoQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZ
KGludCBkZXZpY2VIZWlnaHQgV1JJVEUgc2V0RGV2aWNlSGVpZ2h0IFJFQUQgZGV2aWNlSGVpZ2h0
IE5PVElGWSBkZXZpY2VIZWlnaHRDaGFuZ2VkKQpAQCAtMjczLDcgKzI3Myw2IEBAIGNsYXNzIFFX
RUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7
CiAgICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBmaWxlUGlja2VyIFJFQUQgZmlsZVBpY2tl
ciBXUklURSBzZXRGaWxlUGlja2VyIE5PVElGWSBmaWxlUGlja2VyQ2hhbmdlZCkKICAgICBRX1BS
T1BFUlRZKFFRbWxDb21wb25lbnQqIGRhdGFiYXNlUXVvdGFEaWFsb2cgUkVBRCBkYXRhYmFzZVF1
b3RhRGlhbG9nIFdSSVRFIHNldERhdGFiYXNlUXVvdGFEaWFsb2cgTk9USUZZIGRhdGFiYXNlUXVv
dGFEaWFsb2dDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVFtbENvbXBvbmVudCogY29sb3JDaG9v
c2VyIFJFQUQgY29sb3JDaG9vc2VyIFdSSVRFIHNldENvbG9yQ2hvb3NlciBOT1RJRlkgY29sb3JD
aG9vc2VyQ2hhbmdlZCkKLQogICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJl
bmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFkoUVdl
YktpdFRlc3QqIHRlc3QgUkVBRCB0ZXN0IENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJPUEVSVFko
UVFtbExpc3RQcm9wZXJ0eTxRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZT4gdXJsU2NoZW1lRGVsZWdh
dGVzIFJFQUQgc2NoZW1lRGVsZWdhdGVzKQpAQCAtMzQ1LDYgKzM0NCw4IEBAIHB1YmxpYzoKICAg
ICBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKGJvb2wpOwogCisgICAgYm9vbCBwb2ludGVyTG9ja2VkKCkgY29uc3Q7
CisKICAgICBib29sIHVzZURlZmF1bHRDb250ZW50SXRlbVNpemUoKSBjb25zdDsKICAgICB2b2lk
IHNldFVzZURlZmF1bHRDb250ZW50SXRlbVNpemUoYm9vbCBlbmFibGUpOwogCkBAIC0zNjMsNiAr
MzY0LDcgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBRU3Ry
aW5nJik7CiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0
LCBjb25zdCBRSlNWYWx1ZSYgdmFsdWUgPSBRSlNWYWx1ZSgpKTsKICAgICB2b2lkIGZpbmRUZXh0
KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgRmluZEZsYWdzIG9wdGlvbnMgPSAwKTsKKyAgICB2b2lk
IHVubG9ja1BvaW50ZXIoKTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFZpc3VhbGx5Q29t
bWl0dGVkKCk7CkBAIC0zODgsNiArMzkwLDggQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgcHJlZmVy
cmVkTWluaW11bUNvbnRlbnRzV2lkdGhDaGFuZ2VkKCk7CiAgICAgdm9pZCByZW1vdGVJbnNwZWN0
b3JVcmxDaGFuZ2VkKCk7CiAgICAgdm9pZCB0ZXh0Rm91bmQoaW50IG1hdGNoQ291bnQpOworICAg
IHZvaWQgcG9pbnRlckxvY2tSZXF1ZXN0ZWQoKTsKKyAgICB2b2lkIHBvaW50ZXJVbmxvY2tSZXF1
ZXN0ZWQoKTsKIAogcHJpdmF0ZToKICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKFFRdWlj
a1dlYlZpZXcqIHdlYlZpZXcsIFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJWaWV3UHJpdmF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmgKaW5kZXggNDM0ZjQxMTI5ODdiNGUwMGE1NzRmNGYxNTdjMWVmOGUxNjRhNzFlYS4uZjRl
MDZhNDQ3MTM5NWRkNjFmZjFjYTBmODIzMDU3ZmM0OWIxYzdhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtMTIzLDYg
KzEyMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVVc2VyU2NyaXB0cygpOwogICAgIHZv
aWQgdXBkYXRlU2NoZW1lRGVsZWdhdGVzKCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgIGJvb2wgcG9pbnRlckxvY2tlZCgpIGNvbnN0OworICAgIHZvaWQgdW5sb2NrUG9pbnRlcigp
OworI2VuZGlmCisKICAgICBRUG9pbnRGIGNvbnRlbnRQb3MoKSBjb25zdDsKICAgICB2b2lkIHNl
dENvbnRlbnRQb3MoY29uc3QgUVBvaW50RiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAKaW5kZXggNDU2
OTdhMjJiNjYyYzI2OWUyM2I3NDlmNTlmOGZkMjI5ZjlhYmYzMi4uMzdiZDY5ZmVhMDUwODkxMzdi
NmVmZGY3MjcwMjRiY2Q5YmNkYTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcApAQCAtMjcsMTAgKzI3
LDExIEBACiAKIGNsYXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgOiBwdWJsaWMgUVNo
YXJlZERhdGEgewogcHVibGljOgotICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoV0tT
ZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90
aWZ5ID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSByZXFUeXBlID0gUVdl
YlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbikKKyAgICBRV2ViUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIG5vdGlmeSA9IDAsIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBw
b2ludGVyID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSByZXFUeXBlID0g
UVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbikKICAgICAgICAgOiBvcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pCiAgICAgICAgICwgZ2VvbG9jYXRpb25SZXF1ZXN0KGdlbykKICAgICAgICAg
LCBub3RpZmljYXRpb25SZXF1ZXN0KG5vdGlmeSkKKyAgICAgICAgLCBwb2ludGVyTG9ja1JlcXVl
c3QocG9pbnRlcikKICAgICAgICAgLCB0eXBlKHJlcVR5cGUpCiAgICAgICAgICwgYWxsb3coZmFs
c2UpCiAgICAgewpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0tSZXRhaW5QdHI8V0tT
ZWN1cml0eU9yaWdpblJlZj4gb3JpZ2luOwogICAgIFdLUmV0YWluUHRyPFdLR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFJlZj4gZ2VvbG9jYXRpb25SZXF1ZXN0OwogICAgIFdLUmV0YWluUHRy
PFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IG5vdGlmaWNhdGlvblJlcXVlc3Q7
CisgICAgV0tSZXRhaW5QdHI8V0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmPiBwb2lu
dGVyTG9ja1JlcXVlc3Q7CiAgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0
eXBlOwogICAgIFF0V2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlJbmZvOwogICAgIGJvb2wgYWxs
b3c7CkBAIC02MiwxNiArNjQsMTcgQEAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwKIAogUVdlYlBl
cm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1
ZXN0KQogewotICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwg
cmVxdWVzdCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpOb3RpZmljYXRpb24pOworICAgIHJldHVy
biBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwgcmVxdWVzdCwgMCwgUVdlYlBl
cm1pc3Npb25SZXF1ZXN0OjpOb3RpZmljYXRpb24pOwogfQogCi1RV2ViUGVybWlzc2lvblJlcXVl
c3Q6OlFXZWJQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJl
ZiBub3RpZnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
UVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFPYmplY3QqIHBhcmVudCkKK1FXZWJQZXJt
aXNzaW9uUmVxdWVzdCogUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV0tTZWN1cml0eU9y
aWdpblJlZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0
KQoreworICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwgMCwg
cmVxdWVzdCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpQb2ludGVyTG9jayk7Cit9CisKK1FXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5S
ZWYgc2VjdXJpdHlPcmlnaW4sIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8s
IFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5LCBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RSZWYgcG9pbnRlciwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1
ZXN0VHlwZSB0eXBlLCBRT2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2JqZWN0KHBhcmVudCkKLSAg
ICAsIGQobmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoc2VjdXJpdHlPcmlnaW4sIGdl
bywgbm90aWZ5LCB0eXBlKSkKKyAgICAsIGQobmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUoc2VjdXJpdHlPcmlnaW4sIGdlbywgbm90aWZ5LCBwb2ludGVyLCB0eXBlKSkKIHsKIH0KIApA
QCAtMTAyLDYgKzEwNSwxNCBAQCB2b2lkIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3co
Ym9vbCBhY2NlcHRlZCkKICAgICAgICAgICAgIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3REZW55KGQtPm5vdGlmaWNhdGlvblJlcXVlc3QuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBQb2ludGVyTG9jazogeworICAgICAgICBpZiAoYWNjZXB0ZWQpCisgICAg
ICAgICAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyhkLT5wb2ludGVyTG9j
a1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3REZW55KGQtPnBvaW50ZXJMb2NrUmVxdWVzdC5nZXQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KQEAgLTExOCw0ICsxMjksMyBAQCBRdFdlYlNlY3VyaXR5T3JpZ2luKiBR
V2ViUGVybWlzc2lvblJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICByZXR1cm4gJihk
LT5zZWN1cml0eUluZm8pOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgKaW5kZXggMDAwMjUyYmRiZTFh
YjhjNThhYWEyOTc3YTc5OTNkNWQzOTA2NDlhNC4uNmY2NGVhNjA3MTVlMWVmYTQ2ZDIzYTEyZWQ5
Yzk1ZWI4OWE3YjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgPFF0Q29yZS9xc2hhcmVkZGF0YS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VjdXJpdHlPcmlnaW4uaD4K
IAogY2xhc3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKQEAgLTQxLDExICs0MiwxMyBA
QCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgZW51bSBSZXF1ZXN0VHlwZSB7CiAgICAgICAgIEdlb2xvY2F0
aW9uLAotICAgICAgICBOb3RpZmljYXRpb24KKyAgICAgICAgTm90aWZpY2F0aW9uLAorICAgICAg
ICBQb2ludGVyTG9jawogICAgIH07CiAKICAgICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0
KiBjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKICAgICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1
cml0eU9yaWdpblJlZiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CisgICAg
c3RhdGljIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogY3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYs
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAgICAgdmlydHVhbCB+UVdlYlBl
cm1pc3Npb25SZXF1ZXN0KCk7CiAKICAgICBSZXF1ZXN0VHlwZSB0eXBlKCkgY29uc3Q7CkBAIC01
NywxNSArNjAsMTAgQEAgcHVibGljIFFfU0xPVFM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7Ci0gICAgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgZ2VvID0gMAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RS
ZWYgbm90aWZ5ID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFXZWJQZXJtaXNzaW9u
UmVxdWVzdDo6UmVxdWVzdFR5cGUgdHlwZSA9IEdlb2xvY2F0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICwgUU9iamVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmIG5vdGlmeSA9IDAsIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZiBwb2ludGVy
ID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlID0gR2VvbG9jYXRp
b24sIFFPYmplY3QqIHBhcmVudCA9IDApOwogCiBwcml2YXRlOgogICAgIFFFeHBsaWNpdGx5U2hh
cmVkRGF0YVBvaW50ZXI8UVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZT4gZDsKIH07CiAKLQog
I2VuZGlmIC8vIHF3ZWJwZXJtaXNzaW9ucmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJs
b2NrLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
V2ViVmlldy90c3RfcG9pbnRlcmxvY2sucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZjdiZTFkYjcxZjI1M2Mx
OTI1MDRiZjQzNGVmNzQxZThiNGUzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X3BvaW50ZXJsb2Nr
LnFtbApAQCAtMCwwICsxLDExNSBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0
IDEuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAx
LjAKKworV2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKyAgICB3aWR0aDogMjAwCisgICAgaGVp
Z2h0OiAyMDAKKworICAgIHByb3BlcnR5IGJvb2wgZXhwZWN0ZWRQZXJtaXNzaW9uOiBmYWxzZQor
CisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHBlcm1pc3Npb25TcHkKKyAgICAgICAgdGFy
Z2V0OiBleHBlcmltZW50YWwKKyAgICAgICAgc2lnbmFsTmFtZTogInBlcm1pc3Npb25SZXF1ZXN0
ZWQiCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHBvaW50ZXJMb2NrU3B5
CisgICAgICAgIHRhcmdldDogZXhwZXJpbWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJwb2lu
dGVyTG9ja1JlcXVlc3RlZCIKKyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDog
cG9pbnRlclVubG9ja1NweQorICAgICAgICB0YXJnZXQ6IGV4cGVyaW1lbnRhbAorICAgICAgICBz
aWduYWxOYW1lOiAicG9pbnRlclVubG9ja1JlcXVlc3RlZCIKKyAgICB9CisKKyAgICBleHBlcmlt
ZW50YWwub25QZXJtaXNzaW9uUmVxdWVzdGVkOiB7CisgICAgICAgIC8vIE11c3QgYmUgZmFsc2Ug
YnkgZGVmYXVsdAorICAgICAgICBpZiAoIXBlcm1pc3Npb24uYWxsb3cpIHsKKyAgICAgICAgICAg
cGVybWlzc2lvbi5hbGxvdyA9IHRydWUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgY29u
c29sZS5sb2coIkZhaWw6IHBlcm1pc3Npb24gbXVzdCBiZSBzZXQgdG8gZmFsc2UiKQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHBlcm1pc3Npb24udHlwZSA9PSBQZXJtaXNzaW9uUmVxdWVzdC5Q
b2ludGVyTG9jaykgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlBlcm1pc3Npb24gaXMgUG9p
bnRlckxvY2siKQorICAgICAgICB9CisgICAgfQorCisgICAgZXhwZXJpbWVudGFsLm9uUG9pbnRl
ckxvY2tSZXF1ZXN0ZWQ6IHsKKyAgICAgICAgY29uc29sZS5sb2coIlBvaW50ZXJMb2NrIGlzIHJl
cXVlc3RlZCIpCisgICAgfQorCisgICAgZXhwZXJpbWVudGFsLm9uUG9pbnRlclVubG9ja1JlcXVl
c3RlZDogeworICAgICAgICBjb25zb2xlLmxvZygiUG9pbnRlciBVbmxvY2sgaXMgcmVxdWVzdGVk
IikKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3UG9pbnRl
ckxvY2sgUmVxdWVzdCIKKworICAgICAgICAvLyBEZWxheWVkIHdpbmRvd1Nob3duIHRvIHdvcmth
cm91bmQgcHJvYmxlbXMgd2l0aCBRdDUgaW4gZGVidWcgbW9kZS4KKyAgICAgICAgd2hlbjogZmFs
c2UKKyAgICAgICAgVGltZXIgeworICAgICAgICAgICAgcnVubmluZzogcGFyZW50LndpbmRvd1No
b3duCisgICAgICAgICAgICByZXBlYXQ6IGZhbHNlCisgICAgICAgICAgICBpbnRlcnZhbDogMQor
ICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHBhcmVudC53aGVuID0gdHJ1ZQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfcG9pbnRlckxvY2tSZXF1ZXN0V2l0aEZvcmNlZEV4aXQoKSB7CisgICAgICAgICAgICBw
ZXJtaXNzaW9uU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFyKCkK
KworICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Bv
aW50ZXJsb2NrMS5odG1sIikKKyAgICAgICAgICAgIHBlcm1pc3Npb25TcHkud2FpdCgpCisgICAg
ICAgICAgICBwb2ludGVyTG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlz
c2lvblNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlckxvY2tTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCB0
cnVlKQorCisgICAgICAgICAgICBwb2ludGVyVW5sb2NrU3B5LmNsZWFyKCkKKyAgICAgICAgICAg
IGV4cGVyaW1lbnRhbC51bmxvY2tQb2ludGVyKCkKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tT
cHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJVbmxvY2tTcHkuY291bnQsIDEp
CisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCBmYWxzZSkK
KworICAgICAgICAgICAgLy8gT25seSB0aGUgUG9pbnRlckxvY2tSZXF1ZXN0ZWQgbm90aWZpY2F0
aW9uIGlzIGV4cGVjdGVkLgorICAgICAgICAgICAgLy8gQSBwZXJtaXNzaW9uIG11c3QgYmVlbiBj
YWNoZWQKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHdl
YlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbCIp
CisgICAgICAgICAgICBwb2ludGVyTG9ja1NweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUo
cG9pbnRlckxvY2tTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRh
bC5wb2ludGVyTG9ja2VkLCB0cnVlKQorCisgICAgICAgICAgICBwb2ludGVyVW5sb2NrU3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGV4cGVyaW1lbnRhbC51bmxvY2tQb2ludGVyKCkKKyAgICAgICAg
ICAgIHBvaW50ZXJVbmxvY2tTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJV
bmxvY2tTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2lu
dGVyTG9ja2VkLCBmYWxzZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcG9p
bnRlckxvY2tSZXF1ZXN0V2l0aFNlbGZFeGl0KCkgeworICAgICAgICAgICAgcGVybWlzc2lvblNw
eS5jbGVhcigpCisgICAgICAgICAgICBwb2ludGVyTG9ja1NweS5jbGVhcigpCisgICAgICAgICAg
ICBwb2ludGVyVW5sb2NrU3B5LmNsZWFyKCkKKworICAgICAgICAgICAgd2ViVmlldy51cmwgPSBR
dC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3BvaW50ZXJsb2NrMi5odG1sIikKKyAgICAgICAgICAg
IHBlcm1pc3Npb25TcHkud2FpdCgpCisgICAgICAgICAgICBwb2ludGVyTG9ja1NweS53YWl0KCkK
KyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHkud2FpdCgpCisKKyAgICAgICAgICAgIGNvbXBh
cmUocGVybWlzc2lvblNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlckxv
Y2tTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHBvaW50ZXJVbmxvY2tTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkLCBm
YWxzZSkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9p
bnRlcmxvY2sxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJmYTZjN2U4NzZlMDZmZDQ1Mzc3MWQzODU5MGJk
ZDIzYzQxNDc1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sCkBAIC0wLDAgKzEs
MTUgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5Qb2ludGVyIExvY2sgUmVxdWVzdCB0ZXN0
IChuZWVkcyBmb3JjZWQgdW5sb2NrKTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+Cisg
IDxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8L2Rpdj4KKyAgPHNjcmlwdD4KKyAgICB0YXJnZXRk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgdGFyZ2V0ZGl2Lndl
YmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOworICA8L3NjcmlwdD4KKyAgUG9pbnRlciBMb2NrIFJl
cXVlc3QgVGVzdCAobmVlZHMgZm9yY2VkIHVubG9jaykKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29t
bW9uL3BvaW50ZXJsb2NrMi5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE4ODkw
YTVjZDg0MWIwOWVjMWJlMWRmNTYzNTRlNjk3YWIwOTk0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3BvaW50
ZXJsb2NrMi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5Q
b2ludGVyIExvY2sgUmVxdWVzdCB0ZXN0ICh1bmxvY2tzIHNlbGYpPC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorICA8c2Ny
aXB0PgorICAgIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgIGlmIChkb2N1bWVudC53ZWJraXRQb2ludGVyTG9ja0VsZW1lbnQgPT0gdGFy
Z2V0ZGl2KQorICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdFBvaW50ZXJMb2NrKCk7Cisg
ICAgfTsKKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7
CisgICAgdGFyZ2V0ZGl2LndlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOworICA8L3NjcmlwdD4K
KyAgUG9pbnRlciBMb2NrIFJlcXVlc3QgVGVzdCAodW5sb2NrcyBzZWxmKQorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ3MmE0Y2U4NWQ0Njk3ZGM1MWNmZmJhMjc5MWFkMjU1Yjc0Nzc0ZGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVM
RUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5j
bHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
PiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV2ViS2l0OjpQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5ICptYW5hZ2VyKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChtYW5hZ2VyKSk7Cit9CisK
K1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QoUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbWFuYWdlcikKKyAg
ICA6IG1fbWFuYWdlcihtYW5hZ2VyKQoreworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3Q6OmFsbG93KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNp
b24odHJ1ZSk7CisgICAgbV9tYW5hZ2VyID0gMDsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0OjpkZW55KCkKK3sKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVj
aXNpb24oZmFsc2UpOworICAgIG1fbWFuYWdlciA9IDA7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9tYW5hZ2VyID0gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Q
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
MDU3MzA3NzY3OWQzN2M0YjQ5YTcwNzRlNTQ2ZDYwMTAwZjAzODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
TEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJP
TklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVm
aW5lIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RfaAorCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OworCitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSopOworCisgICAgdm9pZCBhbGxvdygpOworICAgIHZvaWQgZGVueSgpOworCisg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdChQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Kik7CisK
KyAgICBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtX21hbmFnZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBPSU5URVJfTE9DSwor
CisjZW5kaWYgLy8gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRl
ckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzAwNWNjMTFjZGRmNGE5NTMyMDQ0NmM4MGUzYjY0ZjE1NzM5ODkwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3QoKQoreworICAgIGlmIChtX3BlbmRp
bmdSZXF1ZXN0KSB7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3QtPmludmFsaWRhdGUoKTsKKyAg
ICAgICAgbV9wZW5kaW5nUmVxdWVzdC5jbGVhcigpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KCkKK3sKKyAgICBSZWZQdHI8UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6
OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9u
KGJvb2wgYWxsb3cpCit7CisgICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtX3BlbmRpbmdSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBv
aW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGFsbG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzJkMTM4ZTNkMzk3Y2I2NTUwMDExMmFkY2YwYzM2Mjli
M2VhZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50
ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAorI2RlZmluZSBQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IFBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Kik7CisK
KyAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0KCk7CisKKyAgICBQYXNzUmVmUHRyPFBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QoKTsKKworICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3cpOworCitwcml2YXRl
OgorICAgIFJlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBtX3BlbmRpbmdSZXF1
ZXN0OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQ
cm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE0MWJiMzE0ODU4ZTJjZWU2MTc2ZWJmNjlkZjRhZTZmYTk5
NjZkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcg
RUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eT4gV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eShwYWdlKSk7Cit9CisKK1dlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAg
OiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fd2ViVmlldygwKQorICAgICwgbV9pc1BvaW50ZXJMb2Nr
ZWQoZmFsc2UpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgdGhpcyk7Cit9CisKK1dl
YlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Ojp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkoKQor
eworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpzZXRXZWJWaWV3KFBsYXRm
b3JtV2ViVmlldyogd2ViVmlldykKK3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworfQorCiti
b29sIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Ojppc1BvaW50ZXJMb2NrZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzUG9pbnRlckxvY2tlZDsKK30KKwordm9pZCBXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlICYm
IG1fcGFnZS0+aXNWYWxpZCgpKQorICAgICAgICBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKK30K
Kwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2so
KQoreworICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgICAgIGRpZExv
c2VQb2ludGVyTG9jaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wODUwNzg5YWVkNGMxMGU1YWM5NWY0NjEwMjhmYTdkZWNhNDM5NzY4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dl
YlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05J
Q1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja01hbmFnZXJQ
cm94eV9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFz
cyBRUXVpY2tXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiBRUXVpY2tX
ZWJWaWV3IFBsYXRmb3JtV2ViVmlldzsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBX
ZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5PiwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk+IGNy
ZWF0ZShXZWJQYWdlUHJveHkqKTsKKyAgICB2aXJ0dWFsIH5XZWJQb2ludGVyTG9ja01hbmFnZXJQ
cm94eSgpOworCisgICAgdm9pZCBzZXRXZWJWaWV3KFBsYXRmb3JtV2ViVmlldyopOworCisgICAg
Ym9vbCBpc1BvaW50ZXJMb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVy
TG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWRMb3NlUG9pbnRlckxvY2soKTsKKworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKCk7Cisg
ICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworCitwcm90ZWN0ZWQ6CisKKyAgICBleHBs
aWNpdCBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqKTsKKworICAgIFdl
YlBhZ2VQcm94eSogbV9wYWdlOworICAgIFBsYXRmb3JtV2ViVmlldyogbV93ZWJWaWV3OworICAg
IGJvb2wgbV9pc1BvaW50ZXJMb2NrZWQ7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVj
b2RlciYpIE9WRVJSSURFOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHlfaAorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjEwZmQ5YjMwNTg1OGQ3NjA3MDUyMzIxNDRjMmU2YjkwYTU3
YjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEg
QEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKwor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCittZXNzYWdlcyAtPiBXZWJQb2ludGVyTG9ja01hbmFn
ZXJQcm94eSB7CisgICAgUmVxdWVzdFBvaW50ZXJMb2NrKCkKKyAgICBSZXF1ZXN0UG9pbnRlclVu
bG9jaygpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljY2U3NDAwYjk2YmNmYTc2ZjM5YTNlZmRm
MDQ2ODdmYzlhZWUwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNz
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiSW1t
dXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVk
ZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNl
Y3VyaXR5T3JpZ2luLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGNoYXIqIFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVy
biAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5IjsKK30KKworUGFzc1JlZlB0
cjxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+IFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHko
Y29udGV4dCkpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6Oldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQor
ICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQoY29udGV4dCkKK3sKK30KKwordm9pZCBXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyICpwcm92aWRlcikKK3sKKyAgICBtX3Byb3Zp
ZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOworICAgIG1fcHJvdmlkZXIuYWRkUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcih0aGlzKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIG1fcHJvdmlkZXIucmVt
b3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcih0aGlzKTsKK30KKwordm9pZCBXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNz
UHJveHkqKQoreworICAgIG1fcHJvdmlkZXIucmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcih0aGlzKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJv
eHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOwor
fQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJD
b250ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCit2b2lk
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cG9wdWxhdGVDb3B5T2ZQb2lu
dGVyTG9ja1Blcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYgcGVybWlzc2lvbnMpCit7
CisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGtub3duUGVybWlzc2lvbnMgPSBtX3By
b3ZpZGVyLnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKTsKKworICAgIGlmICgha25vd25QZXJtaXNz
aW9ucykKKyAgICAgICAgcmV0dXJuOworCisgICAgcGVybWlzc2lvbnMuY2xlYXIoKTsKKyAgICBS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGtub3duT3JpZ2lucyA9IGtub3duUGVybWlzc2lvbnMtPmtl
eXMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtub3duT3JpZ2lucy0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgV2ViU3RyaW5nKiBvcmlnaW4gPSBrbm93bk9yaWdpbnMtPmF0PFdlYlN0
cmluZz4oaSk7CisgICAgICAgIHBlcm1pc3Npb25zLnNldChvcmlnaW4tPnN0cmluZygpLCBrbm93
blBlcm1pc3Npb25zLT5nZXQ8V2ViQm9vbGVhbj4ob3JpZ2luLT5zdHJpbmcoKSktPnZhbHVlKCkp
OworICAgIH0KK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3koY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6RGlkVXBkYXRlUG9pbnRlckxvY2tEZWNp
c2lvbihvcmlnaW4tPnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKK30KKwordm9pZCBXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQ
b2xpY2llcyhJbW11dGFibGVBcnJheSogb3JpZ2lucykKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmln
aW5TdHJpbmdzOworICAgIG9yaWdpblN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXpl
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBvcmln
aW5TdHJpbmdzLmFwcGVuZChvcmlnaW5zLT5hdDxXZWJTZWN1cml0eU9yaWdpbj4oaSktPnRvU3Ry
aW5nKCkpOworCisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OkRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNp
b25zKG9yaWdpblN0cmluZ3MpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFkNWQyMzUyZmU5MzU1YTNm
ZGVlYjNlNWJlMDRiYTI4MjRjZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94
eS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ry
b25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5X2gKKyNkZWZp
bmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2Ns
YXNzIFdlYkNvbnRleHQ7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQ
SU9iamVjdDo6VHlwZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29u
dGV4dFN1cHBsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOworCisgICAgdm9pZCBpbml0aWFs
aXplUHJvdmlkZXIoY29uc3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciopOworCisg
ICAgdm9pZCBwb3B1bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMoSGFzaE1hcDxTdHJp
bmcsIGJvb2w+Jik7CisKKyAgICB2b2lkIHByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xp
Y3koY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4qLCBib29sKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlk
UmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyhJbW11dGFibGVBcnJheSogb3JpZ2lucyk7CisKKyAg
ICB1c2luZyBBUElPYmplY3Q6OnJlZjsKKyAgICB1c2luZyBBUElPYmplY3Q6OmRlcmVmOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94
eShXZWJDb250ZXh0Kik7CisKKyAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCisgICAgV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIgbV9wcm92aWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAzNmMwODRlMjY0YzA4NGZjYWJmZDYyOWE5
Y2M1MjNhNGVmYTk2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIk11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjphZGRQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSogbWFuYWdl
cikKK3sKKyAgICBpZiAobV9jbGllbnQuYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcikK
KyAgICAgICAgbV9jbGllbnQuYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcih0b0FQSSht
YW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5KiBtYW5hZ2VyKQoreworICAgIGlmICht
X2NsaWVudC5yZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX2Ns
aWVudC5yZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cG9pbnRlckxvY2tQZXJtaXNzaW9u
cygpCit7CisgICAgaWYgKG1fY2xpZW50LnBvaW50ZXJMb2NrUGVybWlzc2lvbnMpCisgICAgICAg
IHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQucG9pbnRlckxvY2tQZXJtaXNzaW9ucyht
X2NsaWVudC5jbGllbnRJbmZvKSkpOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6
OmNyZWF0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5ZWE0ZjU0NGQ3Yzc2NTc0MDZlNjYxNmU2ZjQ5ZTdkYzlmZmFlZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvblByb3ZpZGVyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXJfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgorI2luY2x1ZGUgIldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTsKKwor
Y2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgQVBJQ2xpZW50
PFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIsIGtXS1BvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyQ3VycmVudFZlcnNpb24+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZFBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5
Kik7CisgICAgdm9pZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eSopOworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gcG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQT0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eVF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9xdC9XZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWNlYTNkNDk5Njc4ZWNkNzM2Y2M1OTVhODNh
NTgyZGQ4MDk5NTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BvaW50ZXJMb2NrL3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgorCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBvaW50
ZXJMb2NrTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCisjaWYgSEFWRShRVFFVSUNLKQor
I2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9w
LmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpkaWRBY3F1aXJlUG9pbnRl
ckxvY2soKQoreworI2lmIEhBVkUoUVRRVUlDSykKKyAgICBpZiAobV93ZWJWaWV3KQorICAgICAg
ICBlbWl0IG1fd2ViVmlldy0+ZXhwZXJpbWVudGFsKCktPnBvaW50ZXJMb2NrUmVxdWVzdGVkKCk7
CisjZW5kaWYKKworICAgIG1faXNQb2ludGVyTG9ja2VkID0gdHJ1ZTsKKyAgICBpZiAobV9wYWdl
KQorICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpCit7CisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKKyAgICBpZiAobV9wYWdl
KQorICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZExvc2VQb2ludGVyTG9j
aygpCit7CisjaWYgSEFWRShRVFFVSUNLKQorICAgIGlmIChtX3dlYlZpZXcpCisgICAgICAgIGVt
aXQgbV93ZWJWaWV3LT5leHBlcmltZW50YWwoKS0+cG9pbnRlclVubG9ja1JlcXVlc3RlZCgpOwor
I2VuZGlmCisKKyAgICBtX2lzUG9pbnRlckxvY2tlZCA9IGZhbHNlOworICAgIGlmICAobV9wYWdl
KQorICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpEaWRMb3NlUG9pbnRlckxvY2soKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMzFlZDI5OTNi
OGFjNzE2MmRhYjA1NTUyOTdhYmI3YWMzY2UzOGQxYi4uYTdlOGI2MTFlYmI0YmNmNTA4YTAxMWFj
NDkwMDljMGU2NDMyMWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtNDcsMTAgKzQ3LDEzIEBACiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2Vi
TWVtb3J5U2FtcGxlci5oIgorI2luY2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5LmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xODAsNiArMTgzLDkgQEAgV2ViQ29udGV4dDo6V2ViQ29u
dGV4dChQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsLCBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVu
ZGxlUGEKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHk+KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5
PigpOworI2VuZGlmCiAKICAgICBjb250ZXh0cygpLmFwcGVuZCh0aGlzKTsKIApAQCAtNTQ3LDYg
KzU1MywxMCBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MoKQogICAgIHN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5wb3B1
bGF0ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKHBhcmFtZXRlcnMubm90aWZpY2F0aW9u
UGVybWlzc2lvbnMpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHN1
cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5PigpLT5wb3B1bGF0
ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMocGFyYW1ldGVycy5wb2ludGVyTG9ja1Blcm1p
c3Npb25zKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBwYXJh
bWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzcyA9IG1fdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRkMjIxZDQx
NzY0ZTg2YmYwMzQ2NjVmMzcwZjlmMzk5N2QzZmE0OGEuLjVjZTE1N2NhZTAzYTM5MjBjMjc1ZjEy
MGJkOTIxNjVlZWY5ZjczOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC03NCw2ICs3NCwxMCBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIK
ICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC0yNDEs
NiArMjQ1LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNs
aWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fdXNlckFnZW50KHN0
YW5kYXJkVXNlckFnZW50KCkpCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKHRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cih0aGlzKQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgLCBtX3BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKHRoaXMpCisjZW5kaWYKICAgICAsIG1fZXN0aW1hdGVkUHJv
Z3Jlc3MoMCkKICAgICAsIG1faXNJbldpbmRvdyhtX3BhZ2VDbGllbnQtPmlzVmlld0luV2luZG93
KCkpCiAgICAgLCBtX2lzVmlzaWJsZShtX3BhZ2VDbGllbnQtPmlzVmlld1Zpc2libGUoKSkKQEAg
LTMzNSw2ICszNDIsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBw
YWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICBtX3BvaW50ZXJMb2NrTWFuYWdlciA9IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Ojpj
cmVhdGUodGhpcyk7CisjZW5kaWYKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogICAgIG1fdmlicmF0
aW9uID0gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgpAQCAtNDg3LDcg
KzQ5Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7CiAjZW5kaWYKLQorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgbV9wb2ludGVyTG9ja01hbmFnZXIgPSBXZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworI2VuZGlmCiAgICAgaW5pdGlhbGl6ZVdlYlBhZ2Uo
KTsKIAogICAgIG1fcGFnZUNsaWVudC0+ZGlkUmVsYXVuY2hQcm9jZXNzKCk7CkBAIC0zMDQxLDYg
KzMwNTMsMTMgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxs
U2NyZWVuTWFuYWdlcigpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitX
ZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5Ojpwb2ludGVyTG9ja01hbmFn
ZXIoKQoreworICAgIHJldHVybiBtX3BvaW50ZXJMb2NrTWFuYWdlci5nZXQoKTsKK30KKyNlbmRp
ZgorCiAvLyBCYWNrRm9yd2FyZExpc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
QWRkSXRlbSh1aW50NjRfdCBpdGVtSUQpCkBAIC0zODkwLDYgKzM5MDksMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKQogCiAgICAgbV9ub3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3QoKTsKKyNlbmRpZgorCiAgICAgbV90b29sVGlwID0g
U3RyaW5nKCk7CiAKICAgICBtX21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmYWxz
ZTsKQEAgLTQwOTksNiArNDEyMiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlm
aWNhdGlvblBlcm1pc3Npb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbgogICAgICAg
ICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyTG9ja1Blcm1pc3Npb24oY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcpCit7CisgICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBX
ZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpOworICAgIFJl
ZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gbV9wb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KCk7CisKKyAgICBpZiAoIW1f
dWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCh0aGlz
LCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICByZXF1ZXN0LT5kZW55KCk7
Cit9CisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCisKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBj
b25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNv
blVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRkYjYyZTkxYTIyYTgzMTYy
YTYyMWM1MWM0ZDI3ZGYwNmRhOWM1NDAuLjM2ZDMzNjdiYTFkNTQ0ZTg4MmY1MjkwNjdhZDk0NGVl
OTE4ZmNhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM1
LDYgKzM1LDkgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNs
dWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjZW5kaWYK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCkBAIC0xNDYsNiArMTQ5LDcgQEAgY2xhc3MgV2ViS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOworY2xhc3MgV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJVUkxSZXF1
ZXN0OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKQEAgLTI2NCw2ICsyNjgsMTAgQEAgcHVibGljOgog
ICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHkqIHBvaW50ZXJMb2NrTWFuYWdlcigpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudCopOwogI2VuZGlmCkBAIC04ODAsNiArODg4LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
bm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2b2lk
IHJlcXVlc3RQb2ludGVyTG9ja1Blcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcp
OworI2VuZGlmCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHBhZ2VE
aWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKQEAgLTEwODgsNiArMTEwMCwxMCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5h
Z2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFJlZlB0cjxXZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eT4gbV9wb2ludGVyTG9ja01hbmFnZXI7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShWSUJSQVRJT04pCiAgICAgUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBtX3Zp
YnJhdGlvbjsKICNlbmRpZgpAQCAtMTExOSw2ICsxMTM1LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcjsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5IG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI7CisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCiAKICAgICBkb3VibGUgbV9lc3RpbWF0ZWRQcm9n
cmVzczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggOGMxZGU5MDhjY2Q2OGM5ZjUyZGMwMDBlYTk2MWM1MTNlMjc1MTJjMy4u
MzE3MTZkYmFhMjE1YjQxYTA1MzM2MGM5ZjgxODdiOGJmY2M4YTUzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMjQsNiAr
MjI0LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ2xlYXJOb3RpZmljYXRp
b25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQogICAgIERpZERlc3Ryb3lOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgIFJlcXVlc3RQb2ludGVyTG9ja1Blcm1pc3Npb24oV1RGOjpTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllcikKKyNlbmRpZgorCiAgICAgIyBTcGVsbGluZyBhbmQgZ3JhbW1hciBtZXNzYWdl
cwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpICAKICAgICBDaGVja1RleHRPZlBhcmFn
cmFwaChXVEY6OlN0cmluZyB0ZXh0LCB1aW50NjRfdCBjaGVja2luZ1R5cGVzKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVUlDbGllbnQuY3BwCmluZGV4IGJmYTRkOGU0M2U3ZWI0ZmY2NzUzYWNiM2ViZmM3
YzM4MWZiMjQxMWMuLmViYzZiYmM5NDllYTUyNjQ1ZTZiZGMwNzBjZGM3MzFiZGRmYTIxYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcApAQCAtMzEsNiArMzEsOSBA
QAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0LmgiCisjZW5kaWYKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJOdW1iZXIuaCIK
QEAgLTM2NSw2ICszNjgsMTUgQEAgYm9vbCBXZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWcKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBXZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYlNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KQor
eworICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCh0b0FQSShwYWdlKSwgdG9BUEkob3Jp
Z2luKSwgdG9BUEkocGVybWlzc2lvblJlcXVlc3QpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogZmxvYXQgV2ViVUlDbGllbnQ6OmhlYWRlckhlaWdodChXZWJQ
YWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQogewogICAgIGlmICghbV9jbGll
bnQuaGVhZGVySGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAppbmRl
eCA5ODEzZjU3NTRjODEzYmYxNjljNmIzYzkyOGI4ZTVhYTVmYmE0M2I3Li4yNTFhZDllMDZlZDEx
MTg3MDdiYjJlMWYyZWQ1YjljNmM5ODhiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VUlDbGllbnQuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5Owog
Y2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYldoZWVsRXZlbnQ7
CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK2NsYXNzIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk7CiBjbGFzcyBXZWJEYXRhOwogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTEwMyw2ICsxMDQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5Kik7CiAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJTZWN1cml0eU9yaWdp
biosIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopOwogICAgIGJvb2wgZGVjaWRl
UG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiwgV2Vi
U2VjdXJpdHlPcmlnaW4qLCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCopOworICAgIGJv
b2wgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eHkqLCBXZWJTZWN1cml0eU9yaWdpbiosIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QqKTsK
IAogICAgIC8vIFByaW50aW5nLgogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBlNzhiOGY2MmYyNzAzNGM4MGMzNGJhODZi
MDQxMDRhNzllN2EwNmYzLi4xYmYzMWZlYmRjZTBkNjJmMmFlYTJlMjMxOTljZWQ3ZmZkNjYyNGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KQEAgLTQ2Myw2ICs0NjMsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgICAgICAwLCAvLyBzaG93
Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIDAsIC8v
IHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xp
Y3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKIAogICAgIGluc3BlY3Rv
clBhZ2UtPmluaXRpYWxpemVVSUNsaWVudCgmdWlDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaAppbmRleCBiNzAwNDQwNzY4MzRlMjllM2JhNTkz
Zjc5YzUwMzAzODlkZjU5OTU2Li5hM2IwNGExY2NhZGZjZWNhNWYzZTRiMjU1OWM3ZTBlZGU5N2I1
ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5u
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaApA
QCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0Rm9yUHJveHlBdXRoZW50aWNh
dGlvbihjb25zdCBRU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgUVN0cmlu
ZyYgcHJlZmlsbGVkVXNlcm5hbWUpOwogICAgIGJvb2wgaW5pdEZvckZpbGVQaWNrZXIoY29uc3Qg
UVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZXMsIGJvb2wgYWxsb3dNdWx0aXBsZSk7CiAgICAgYm9v
bCBpbml0Rm9yRGF0YWJhc2VRdW90YURpYWxvZyhjb25zdCBRU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IGNvbnN0IFFTdHJpbmcmIGRpc3BsYXlOYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBxdWludDY0
IGN1cnJlbnRRdW90YSwgcXVpbnQ2NCBjdXJyZW50T3JpZ2luVXNhZ2UsIHF1aW50NjQgY3VycmVu
dERhdGFiYXNlVXNhZ2UsIHF1aW50NjQgZXhwZWN0ZWRVc2FnZSk7Ci0KICAgICB2b2lkIHJ1bigp
OwogCiAgICAgUVF1aWNrSXRlbSogZGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9kaWFsb2cuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VV
SUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuY3BwCmluZGV4IGFmODg0MjNjNmRhMGVkNGQ5YWM1M2VlODNjYTA2YzQwNzM4YmQ4NzguLmIy
M2U1MjZkNWU3OTg3NzlhYjY2NDc1ODYyYzRjNDlmMjliMmQ5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcApAQCAtNDksNiArNDks
NyBAQCBRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgdWlDbGllbnQuZXhjZWVkZWREYXRhYmFz
ZVF1b3RhID0gZXhjZWVkZWREYXRhYmFzZVF1b3RhOwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBwb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0OwogICAgIHVpQ2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0ID0gcG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q7CisgICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdCA9IHBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q7CiAgICAgV0tQYWdl
U2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CiAKQEAgLTE3Myw1ICsxNzQs
MTMgQEAgdm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNs
aWVudEluZm8pLT5wZXJtaXNzaW9uUmVxdWVzdChyZXEpOwogfQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKK3sKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKIAorICAgIFFX
ZWJQZXJtaXNzaW9uUmVxdWVzdCogcmVxID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUo
b3JpZ2luLCByZXF1ZXN0KTsKKyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5w
ZXJtaXNzaW9uUmVxdWVzdChyZXEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKaW5kZXggZThh
YWE4MjZiN2RkNjBhNjgxYmQ3NDhlZDMxNmJmMjZlMGRkOTA2OC4uODRhNDM5ZDE3MDk5MWE0MjMw
MmU4OTI5MzJlNDNlOTM0MTY1ZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFt
ZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVv
dGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNh
Z2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZv
aWQqKTsKICAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBwb2xpY3lGb3JQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJl
ZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAKICAg
ICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgUVVybCBtX2xhc3RIb3ZlcmVkVVJMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnByaQppbmRleCBhMWRhMDQ1MWFjNWFmOGYxZjIzZDE3ZDQzYzA1ZGFlOTE5OTY2ZDhm
Li5lZDkzZjFiODRkNzMyYTY3MTFjZWZmOTkwN2Y0ZDcyZmI0OWM4OTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
aQpAQCAtMzksNiArMzksNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1VJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3Mv
TGF1bmNoZXIgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCisg
ICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAgICAgJCRTT1VSQ0VfRElS
L1VJUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL1N0b3JhZ2Ug
XAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvcXQgXApAQCAtNTksNiArNjAsNyBAQCBJTkNM
VURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElS
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZSBcCisgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2sgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1Jlc291cmNlQ2Fj
aGUgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL1N0b3JhZ2UgXAogICAgICQkU09VUkNF
X0RJUi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcAppbmRleCBkNDVlNDhlODhkYWMxNDdjMGFmYmVjYzc2NTFhMDQ2ZjIzODNhYzIwLi5jODEz
ZDhlYWJiMjA0NDkyNGFiMjgxMzQ5MDEzMTIxZjhmMjBjZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCkBAIC00MSw2ICs0MSw5IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sKKyNp
bmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCkBAIC01MTYsMyArNTE5LDU2IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RvcEV4dGVu
ZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhCiB7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wRXh0ZW5kaW5nSW5jcmVtZW50YWxSZW5kZXJpbmdT
dXBwcmVzc2lvbih0b2tlbik7CiB9CisKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0UG9pbnRlckxvY2tD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xp
ZW50KiB3a0NsaWVudCkKK3sKKyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVO
QUJMRV9QT0lOVEVSX0xPQ0sKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KHdrQ2xpZW50KTsKKyNlbmRpZgorfQorCitib29sIFdL
QnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJf
TE9DSworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5z
dGFydFJlcXVlc3RQb2ludGVyTG9jaygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykg
JiYgRU5BQkxFX1BPSU5URVJfTE9DSworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnBvaW50
ZXJMb2NrTWFuYWdlcigpLT5zdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisjZW5kaWYKK30K
KworYm9vbCBXS0J1bmRsZVBhZ2VJc1BvaW50ZXJMb2NrZWQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRF
Ul9MT0NLCisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCkt
PmlzUG9pbnRlckxvY2tlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
Kwordm9pZCBXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVf
UE9JTlRFUl9MT0NLCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VE
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYg
ZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9MT0NLCisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+ZGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VEaWRMb3NlUG9pbnRlckxv
Y2soV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9MT0NLCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5wb2lu
dGVyTG9ja01hbmFnZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDEwM2Y0NzhhMTIzNWM4ZDc0OWMyNDZkNDA2YjgwMmE4
OWU3Zjk1MTEuLmU0YjI1NjQ2ZGY3ODU5YWVlNzM2OTc1MWVmMTU0MzUyYWI4ODZhMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtNDAzLDYgKzQwMywyNCBAQCB0eXBlZGVmIHN0cnVj
dCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQ7CiAKIGVudW0geyBrV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudEN1cnJlbnRWZXJzaW9u
ID0gMSB9OwogCisvLyBQb2ludGVyIExvY2sgY2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRs
ZVBhZ2VTdXBwb3J0c1BvaW50ZXJMb2NrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7Cit0eXBlZGVm
IGJvb2wgKCpXS0J1bmRsZVBhZ2VSZXF1ZXN0UG9pbnRlckxvY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlcXVlc3RQb2ludGVyVW5sb2NrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CisKK3N0cnVjdCBXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0Ns
aWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5m
bzsKKworICAgIC8vIFZlcnNpb24gMDoKKyAgICBXS0J1bmRsZVBhZ2VTdXBwb3J0c1BvaW50ZXJM
b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUG9pbnRlckxv
Y2s7CisgICAgV0tCdW5kbGVQYWdlUmVxdWVzdFBvaW50ZXJMb2NrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tCdW5kbGVQYWdl
UmVxdWVzdFBvaW50ZXJVbmxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0UG9pbnRlclVubG9jazsKK307Cit0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VQb2lu
dGVyTG9ja0NsaWVudCBXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudDsKKworZW51bSB7IGtX
S0J1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworCiAvLyBN
ZXNzYWdlVHJhY2UgY2xpZW50CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZSwgV0tTdHJpbmdSZWYgZGVzY3JpcHRpb24sIFdLU3RyaW5nUmVmIHN1Y2Nlc3MsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogCkBAIC00MzEsNiArNDQ5LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBh
Z2VQb2wKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VTZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQqIGNsaWVudCk7CitXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2ludGVyTG9ja0NsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQqIGNsaWVudCk7CiAKIFdLX0VYUE9SVCBX
S0J1bmRsZVBhZ2VHcm91cFJlZiBXS0J1bmRsZVBhZ2VHZXRQYWdlR3JvdXAoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKQEAgLTQ3Miw2ICs0OTEsMTMgQEAgV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tMYXkKIAogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVu
ZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBi
b29sIFdLQnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxv
Y2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNQ
b2ludGVyTG9ja2VkKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZURpZEFjcXVpcmVQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJM
b2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZWY0YTgyZjZlNWQwN2ZjZjdkOTg3NjU4NjA1
NDVlOWYyMWRlYTM2YS4uYjFhZDgzNmJiY2MzMmEzNzJhNzNmNThhZmY4NjAzNjhiZGI1OTgyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmgiCkBAIC02NDksNiArNjUyLDI2IEBAIFBhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5k
bGU6OmNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29uCiAgICAgcmV0
dXJuIFdlYkRhdGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYXJyYXlEYXRh
LT5iYXNlQWRkcmVzcygpKSwgYXJyYXlEYXRhLT5ieXRlTGVuZ3RoKCkpOwogfQogCit2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRQb2ludGVyTG9ja1Blcm1pc3Npb24oV2ViUGFnZSogcGFnZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKK3sKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIHBhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCktPnNldFBlcm1pc3Npb25MZXZlbEZvclRlc3Rpbmcob3JpZ2luU3RyaW5nLCBhbGxvd2VkKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShvcmlnaW5T
dHJpbmcpOworICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKKyNlbmRpZgorfQorCit2b2lkIElu
amVjdGVkQnVuZGxlOjpyZW1vdmVBbGxQb2ludGVyTG9ja1Blcm1pc3Npb25zKFdlYlBhZ2UqIHBh
Z2UpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBwYWdlLT5wb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5yZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3Rpbmco
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworI2VuZGlmCit9CisKIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdl
LCBib29sIGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVz
VGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM3ZDQxYzJk
MjIxOGNjNTdjODc5MDM1YzQwMmVlZjQ0OWUyNjE3MmIuLjFmMzFmMmJhYjNhMzBkMmY5YzdlNmFk
OTk2ZjI5ZDk4NDg1OGNmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTEyNyw2ICsxMjcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhX
ZWJQYWdlKik7CiAgICAgdWludDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmKTsKICAgICBQYXNzUmVmUHRyPFdlYkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWlu
dDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgc2V0UG9pbnRlckxv
Y2tQZXJtaXNzaW9uKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2b2lkIHJl
bW92ZUFsbFBvaW50ZXJMb2NrUGVybWlzc2lvbnMoV2ViUGFnZSopOwogCiAgICAgLy8gVXNlckNv
bnRlbnQgQVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJp
bmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNr
bGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWJmZjljZDJhZDgxYTIyODg1
MzIyY2VkMTljYzljYmJkYjhkM2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0Ns
aWVudC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNT
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgiCisKKyNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQ6OnN1cHBvcnRzUG9pbnRlckxvY2soV2Vi
UGFnZSAqcGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQucmVxdWVzdFBvaW50ZXJMb2NrKQorICAg
ICAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9ydHNQb2ludGVyTG9jayh0b0FQSShwYWdlKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tD
bGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlICpwYWdlKQoreworICAgIGlmIChtX2Ns
aWVudC5yZXF1ZXN0UG9pbnRlckxvY2spCisgICAgICAgIHJldHVybiBtX2NsaWVudC5yZXF1ZXN0
UG9pbnRlckxvY2sodG9BUEkocGFnZSkpOworICAgIHJldHVybiBwYWdlLT5wb2ludGVyTG9ja01h
bmFnZXIoKS0+c3RhcnRSZXF1ZXN0UG9pbnRlckxvY2soKTsKK30KKwordm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudDo6cmVxdWVzdFBvaW50ZXJVbmxvY2soV2ViUGFnZSAq
cGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQucmVxdWVzdFBvaW50ZXJVbmxvY2spCisgICAgICAg
IG1fY2xpZW50LnJlcXVlc3RQb2ludGVyVW5sb2NrKHRvQVBJKHBhZ2UpKTsKKyAgICBlbHNlCisg
ICAgICAgIHBhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zdGFydFJlcXVlc3RQb2ludGVyVW5s
b2NrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2lu
dGVyTG9ja0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNGUyM2YxNDMyMzkxNDkwOGQxMzVjYmUxNGI3
OGU4MzYwMjdkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudF9oCisjZGVmaW5lIEluamVj
dGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50X2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIK
KyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9pbnRlckxvY2tDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVBvaW50
ZXJMb2NrQ2xpZW50LCBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnRDdXJyZW50VmVyc2lv
bj4geworcHVibGljOgorICAgIGJvb2wgc3VwcG9ydHNQb2ludGVyTG9jayhXZWJQYWdlKik7Cisg
ICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZSopOworICAgIHZvaWQgcmVxdWVzdFBv
aW50ZXJVbmxvY2soV2ViUGFnZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9pbnRlckxvY2tDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTRlOWE4YTZmODYzNTVkODA2MTFj
NmU4OTAwY2RkNzJjZDY1MjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ry
b25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlBvaW50ZXJMb2NrTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIocGFn
ZSkpOworfQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShw
YWdlKQoreworfQorCitib29sIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpz
dGFydFJlcXVlc3QoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUGFzc1JlZlB0cjxQb2ludGVyTG9j
a1Blcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgaWYgKCFvcmlnaW4pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9ubHkgb25lIHJlcXVlc3QgY2FuIGJlIHByb2Nl
c3NlZCBmb3IgdGhlIHdlYnBhZ2Ugc2FtZSB0aW1lCisgICAgQVNTRVJUKG1fc2VjdXJpdHlPcmln
aW4pOworICAgIGlmIChtX3NlY3VyaXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3NlY3VyaXR5T3JpZ2luID0gb3JpZ2luOworICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFj
azsKKyAgICByZXR1cm4gbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVl
c3RQb2ludGVyTG9ja1Blcm1pc3Npb24ob3JpZ2luLT50b1N0cmluZygpKSk7Cit9CisKK3ZvaWQg
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoU2VjdXJp
dHlPcmlnaW4qKQoreworICAgIG1fc2VjdXJpdHlPcmlnaW4uY2xlYXIoKTsKKyAgICBtX2NhbGxi
YWNrLmNsZWFyKCk7Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1p
c3Npb24gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnBlcm1pc3Npb25MZXZl
bChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCit7CisgICAgcmV0dXJuIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4o
KS0+cG9saWN5Rm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKK30KKwordm9pZCBQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2V0UGVybWlzc2lvbkxldmVsRm9yVGVzdGluZyhj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnN1cHBsZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4o
KS0+ZGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihvcmlnaW5TdHJpbmcsIGFsbG93ZWQpOwor
fQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVBbGxQ
ZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBs
ZW1lbnQ8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4oKS0+cmVtb3ZlQWxsUGVybWlz
c2lvbnNGb3JUZXN0aW5nKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sIGFs
bG93ZWQpCit7CisgICAgaWYgKG1fc2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuc3VwcGxlbWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPigp
LT5kaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5n
KCksIGFsbG93ZWQpOworICAgICAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgICAgIG1fY2Fs
bGJhY2stPmhhbmRsZUV2ZW50KGFsbG93ZWQpOworICAgIH0KKworICAgIG1fc2VjdXJpdHlPcmln
aW4uY2xlYXIoKTsKKyAgICBtX2NhbGxiYWNrLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ4
NGZmNDcyYjRhYjI3YmU5NGRjNDg5NWUxMDRhYjNlZjFkZTI2YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcg
RUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyX2gKKyNkZWZpbmUgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU2VjdXJpdHlPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlOworCitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+UG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChib29sIHBlcm1pc3Npb24pID0gMDsKK307CisKK2NsYXNzIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4gY3JlYXRlKFdlYlBh
Z2UqKTsKKworICAgIGJvb2wgc3RhcnRSZXF1ZXN0KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
UGFzc1JlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4pOworICAgIHZvaWQgY2Fu
Y2VsUmVxdWVzdChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworCisgICAgV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbiBwZXJtaXNzaW9uTGV2ZWwoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qKTsKKworICAgIC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuCisg
ICAgdm9pZCBzZXRQZXJtaXNzaW9uTGV2ZWxGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYsIGJvb2wp
OworICAgIHZvaWQgcmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihib29sKTsKKworcHJpdmF0
ZToKKyAgICBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlKik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOworICAg
IFJlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBX
ZWJQYWdlKiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGIzMWZlMjhmZGNiOTBjNTc3NDg5OWJlZTZmN2E4MWNkMjJkYjNkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tN
YW5hZ2VyLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBM
RyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9O
SUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2Nr
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9j
a01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJM
b2NrTWFuYWdlcj4gV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50ZXJMb2NrTWFuYWdlcihwYWdlKSk7
Cit9CisKK1dlYlBvaW50ZXJMb2NrTWFuYWdlcjo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBh
Z2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fcG9pbnRlckxvY2tlZChmYWxz
ZSkKK3sKK30KKworV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjp+V2ViUG9pbnRlckxvY2tNYW5hZ2Vy
KCkKK3sKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN1cHBvcnRzUG9pbnRlckxv
Y2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlUG9pbnRlckxvY2tDbGllbnQoKS5zdXBwb3J0c1BvaW50ZXJMb2NrKG1fcGFnZS5nZXQo
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpy
ZXF1ZXN0UG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIHJldHVybiBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQoKS5yZXF1ZXN0UG9pbnRlckxv
Y2sobV9wYWdlLmdldCgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkK
KyAgICAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KCkucmVxdWVz
dFBvaW50ZXJVbmxvY2sobV9wYWdlLmdldCgpKTsKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01h
bmFnZXI6OmlzUG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZSAmJiBtX3BhZ2Ut
PmNvcmVQYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5lbGVtZW50KCk7Cit9CisKK3Zv
aWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAg
IGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250
cm9sbGVyKCktPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJM
b2NrTWFuYWdlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9wYWdl
KQorICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5k
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFn
ZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTG9zZVBvaW50ZXJM
b2NrKCk7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzdGFydFJlcXVlc3RQb2lu
dGVyTG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OlJlcXVlc3RQb2ludGVyTG9j
aygpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjpzdGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpSZXF1
ZXN0UG9pbnRlclVubG9jaygpKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJlY2VpdmVXZWJQb2ludGVyTG9j
a01hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCitXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiogV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzZWN1cml0eU9yaWdpbigpCit7Cisg
ICAgaWYgKG1fcGFnZSkgeworICAgICAgICBXZWJDb3JlOjpFbGVtZW50KiB0YXJnZXRFbGVtZW50
ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+dGFyZ2V0KCk7
CisgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldEVs
ZW1lbnQtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgfQorICAgIHJldHVybiAw
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVS
X0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2Nr
L1dlYlBvaW50ZXJMb2NrTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2lu
dGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDYzYjhiNjdiZjA2
NDNlMWVlYzY4MzFhYjdhNDNhMWI2NGJjMjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuaApAQCAt
MCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlBvaW50ZXJMb2NrTWFuYWdlcl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrTWFuYWdl
cl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkhhc2guaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsK
K2NsYXNzIE1lc3NhZ2VEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZTsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUG9pbnRlckxvY2tNYW5hZ2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHZpcnR1YWwg
fldlYlBvaW50ZXJMb2NrTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIGJv
b2wgc3VwcG9ydHNQb2ludGVyTG9jaygpOworCisgICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2so
KTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgYm9vbCBpc1BvaW50ZXJM
b2NrZWQoKTsKKworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygp
OworCisgICAgYm9vbCBzdGFydFJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIHZvaWQgc3RhcnRS
ZXF1ZXN0UG9pbnRlclVubG9jaygpOworCisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIo
V2ViUGFnZSopOworCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKwor
ICAgIFJlZlB0cjxXZWJQYWdlPiBtX3BhZ2U7CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrZWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja01hbmFnZXJfaAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDU1MmMwYjE5ZmJm
ODg4YTIzMDM1MmVhMjMwY2Y1MjQ4ZWE4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDMxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJv
bmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUExHIEVMRUNUUk9OSUNTUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCittZXNzYWdlcyAtPiBXZWJQb2ludGVyTG9ja01hbmFnZXIgTGVnYWN5UmVjZWl2ZXIg
eworICAgIERpZEFjcXVpcmVQb2ludGVyTG9jaygpCisgICAgRGlkTm90QWNxdWlyZVBvaW50ZXJM
b2NrKCkKKyAgICBEaWRMb3NlUG9pbnRlckxvY2soKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNWYwYzM1
N2FkOWQzNDgwZTlhNzA3ZWRiZjBjYzMxODM1YmZhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNp
bmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Bhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s+IFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBtYW5h
Z2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
Q2FsbGJhY2sobWFuYWdlcikpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFj
azo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2soV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
KiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCit7Cit9CisKK3ZvaWQgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KGJvb2wgYWxsb3dlZCkKK3sK
KyAgICBpZiAoYWxsb3dlZCkKKyAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0UG9pbnRlckxvY2so
KTsKKyAgICBlbHNlCisgICAgICAgIG1fbWFuYWdlci0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTZhNWUzZDQwMGY0NzhmN2RmZGVjYjc5NmE0NjVkNmRmYjNhMDRiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNU
Uk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uQ2FsbGJhY2tfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFj
a19oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
b2ludGVyTG9ja01hbmFnZXI7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxi
YWNrIDogcHVibGljIFBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gY3Jl
YXRlKFdlYlBvaW50ZXJMb2NrTWFuYWdlciopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChib29sKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25DYWxsYmFjayhXZWJQb2ludGVyTG9ja01hbmFnZXIqKTsKKyAgICBXZWJQb2ludGVyTG9ja01h
bmFnZXIqIG1fbWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbkNhbGxiYWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmNDQ5ZGY1MGFhYzlhNDk4MDllZmFhZTMwZWQyNzg5NTk5NTky
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsOTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NvbnN0IGNoYXIqIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6
OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIiOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKK3sKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
fldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFwID0gcGFy
YW1ldGVycy5wb2ludGVyTG9ja1Blcm1pc3Npb25zOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXI6OmRpZFVwZGF0ZVBvaW50ZXJMb2NrRGVjaXNpb24oY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFw
LnNldChvcmlnaW5TdHJpbmcsIGFsbG93ZWQpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXI6OmRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKQoreworICAgIHNpemVfdCBjb3VudCA9IG9yaWdpblN0
cmluZ3Muc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgbV9wZXJtaXNzaW9uc01hcC5yZW1vdmUob3JpZ2luU3RyaW5nc1tpXSk7Cit9CisKK1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb24gV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcjo6cG9saWN5Rm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4pIGNvbnN0Cit7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBQZXJt
aXNzaW9uTm90QWxsb3dlZDsKKworICAgIEFTU0VSVCghb3JpZ2luLT5pc1VuaXF1ZSgpKTsKKwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Blcm1pc3Np
b25zTWFwLmZpbmQob3JpZ2luLT50b1Jhd1N0cmluZygpKTsKKyAgICBpZiAoaXQgIT0gbV9wZXJt
aXNzaW9uc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZSA/IFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25BbGxvd2VkIDogV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbkRlbmllZDsKKyAgICByZXR1cm4gUGVybWlzc2lv
bk5vdEFsbG93ZWQ7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKK3sKKyAgICBtX3Blcm1pc3Npb25zTWFw
LmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2U5YzhlYWU3Zjg1Y2JmNzQxMWM4NTk4OTY0NjA0ZDUzM2E2NGQ2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVM
RUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcl9oCisjZGVmaW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUHJv
Y2VzczsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciA6IHB1YmxpYyBX
ZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik7
CitwdWJsaWM6CisgICAgZW51bSBQZXJtaXNzaW9uIHsKKyAgICAgICAgUGVybWlzc2lvbkFsbG93
ZWQsCisgICAgICAgIFBlcm1pc3Npb25Ob3RBbGxvd2VkLAorICAgICAgICBQZXJtaXNzaW9uRGVu
aWVkCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwor
CisgICAgZXhwbGljaXQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQcm9jZXNz
Kik7CisgICAgdmlydHVhbCB+V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcigpOworCisg
ICAgdm9pZCBkaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nLCBib29sIGFsbG93ZWQpOworICAgIFBlcm1pc3Npb24gcG9saWN5Rm9yT3JpZ2luKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CisKKyAgICB2b2lkIHJlbW92ZUFsbFBlcm1p
c3Npb25zRm9yVGVzdGluZygpOworCitwcml2YXRlOgorICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVt
ZW50CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpIE9WRVJSSURFOworCisgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOworCisgICAgdm9pZCBkaWRSZW1v
dmVQb2ludGVyTG9ja0RlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5n
cyk7CisKKyAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJv
b2w+IG1fcGVybWlzc2lvbnNNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjVjM2Y0OTg2N2FlMGYwYjg0
ZGE5Y2MyMjkyNzhhNzlmMzBmYTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIExHIEVs
ZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorbWVzc2FnZXMgLT4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
ciB7CisgICAgRGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihXVEY6OlN0cmluZyBvcmlnaW5T
dHJpbmcsIGJvb2wgYWxsb3dlZCk7CisgICAgRGlkUmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMo
VmVjdG9yPFdURjo6U3RyaW5nPiBvcmlnaW5TdHJpbmdzKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCmluZGV4IDA5ODU4YWVmZjk3OTM1MWU0MzE1YzNkNzYxYTQ2OTkwMTY2NzZj
ODQuLmU4NDBjNjUyN2RkNzBmZDkzYmVlYTMyODM5NzU3OWRjYWRlMDI1ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1
ZGUgIlBhZ2VCYW5uZXIuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjZW5kaWYKICNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNDMsNiArNDYsMTAgQEAKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRl
ICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjay5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTgyNCw2ICs4MzEsMzkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnQKICNlbmRpZgogfQogCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9p
bnRlckxvY2soKQoreworICAgIGlmICghbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+c3Vw
cG9ydHNQb2ludGVyTG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBtX3BhZ2UtPnBvaW50ZXJMb2NrTWFu
YWdlcigpLT5zZWN1cml0eU9yaWdpbigpOworICAgIHN3aXRjaCAobV9wYWdlLT5wb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5wZXJtaXNzaW9uTGV2ZWwoc2VjdXJpdHlPcmln
aW4pKSB7CisgICAgY2FzZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNz
aW9uQWxsb3dlZDoKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCkt
PnJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIGNhc2UgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlcjo6UGVybWlzc2lvbk5vdEFsbG93ZWQ6IHsKKyAgICAgICAgUmVmUHRyPFdlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvbkNhbGxiYWNrOjpjcmVhdGUobV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKSk7CisgICAg
ICAgIHJldHVybiBtX3BhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkt
PnN0YXJ0UmVxdWVzdChzZWN1cml0eU9yaWdpbiwgY2FsbGJhY2spOworICAgIH0KKyAgICBjYXNl
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25EZW5pZWQ6CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9j
aygpCit7CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+cmVxdWVzdFBvaW50ZXJV
bmxvY2soKTsKK30KKworYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCgpCit7
CisgICAgcmV0dXJuIG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPmlzUG9pbnRlckxvY2tl
ZCgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpub3RpZnlTY3JvbGxlclRo
dW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiB7CiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok5vdGlmeVNjcm9sbGVyVGh1bWJJ
c1Zpc2libGVJblJlY3Qoc2Nyb2xsZXJUaHVtYikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
NGYyOGJiMzc0NzJmYWMxYjhmM2Q3YjgwZjk5ODNmYjIzN2VlNzg3Mi4uYmJiOTdjNGM5YTFkYTY1
M2M2NDMxOWJmMjM2YzZjZmJmYWU0NGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDgs
NiArMjA4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soKSBPVkVSUklERTsK
KyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgT1ZFUlJJREU7CisgICAgYm9vbCBpc1Bv
aW50ZXJMb2NrZWQoKSBPVkVSUklERTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBPVkVSUklERTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAxZTBj
MDA0NThiYTI5ZDMxOTNiNWUxYzg2NmRmNjE5OTRlNzYwOGQuLjRhMzgyMzVmZDRlYTgyZGM2NWEy
OGI1OTcwYmQzNTAxMGMwMzkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ0LDYgKzQ0LDkgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlByaW50SW5m
by5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgpAQCAtNzcsNiArODAsMTAgQEAKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBsdWdJbkNsaWVu
dC5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2FnZXMuaCIKKyNl
bmRpZgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC0xMTIsNiArMTE5LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJp
bnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyTGF5ZXIuaD4KQEAgLTQwNyw2ICs0MTUsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgdGhpcyk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlELCB0aGlzKTsKKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VDb3Vu
dGVyLmluY3JlbWVudCgpOwpAQCAtNDQzLDcgKzQ1NCw5IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKLQorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlSUQpOworI2VuZGlmCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VDb3VudGVyLmRlY3Jl
bWVudCgpOwogI2VuZGlmCkBAIC01MjgsNiArNTQxLDEzIEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tCdW5kbGVQYWdlRGlh
Z25vCiAgICAgbV9sb2dEaWFnbm9zdGljTWVzc2FnZUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7
CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQYWdlOjppbml0aWFsaXpl
SW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVudChXS0J1bmRsZVBhZ2VQb2ludGVyTG9ja0Ns
aWVudCogY2xpZW50KQoreworICAgIG1fcG9pbnRlckxvY2tDbGllbnQuaW5pdGlhbGl6ZShjbGll
bnQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIFBhc3NS
ZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1M
UGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBTdHJpbmcmIG5ld01JTUVUeXBlKQogewpAQCAtODIwLDYgKzg0MCw5IEBAIHZv
aWQgV2ViUGFnZTo6Y2xvc2UoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1
bGxTY3JlZW5NYW5hZ2VyID0gMDsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgbV9wb2ludGVyTG9ja01hbmFnZXIgPSAwOworI2VuZGlmCiAKICAgICBpZiAobV9hY3RpdmVQ
b3B1cE1lbnUpIHsKICAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpc2Nvbm5lY3RGcm9tUGFn
ZSgpOwpAQCAtMTY0Nyw2ICsxNjcwLDI3IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgV2ViUGFnZSogcGFnZSwgYm9vCiAKICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VF
dmVudCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlLT5wb2ludGVy
TG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCkpIHsKKyAgICAgICAgQXRvbWljU3RyaW5n
IGV2ZW50VHlwZTsKKyAgICAgICAgc3dpdGNoIChtb3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAg
ICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9
IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgICAgICBldmVudFR5cGUgPSBl
dmVudE5hbWVzKCkubW91c2V1cEV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZl
bnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
ICAgICBwYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hM
b2NrZWRNb3VzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCwgZXZlbnRUeXBlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VF
dmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6
IHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTI1OTgsNiArMjY0MiwyMiBAQCBXZWJG
dWxsU2NyZWVuTWFuYWdlciogV2ViUGFnZTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorV2ViUG9pbnRlckxvY2tNYW5hZ2VyKiBXZWJQ
YWdlOjpwb2ludGVyTG9ja01hbmFnZXIoKQoreworICAgIGlmICghbV9wb2ludGVyTG9ja01hbmFn
ZXIpCisgICAgICAgIG1fcG9pbnRlckxvY2tNYW5hZ2VyID0gV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tNYW5hZ2VyLmdldCgpOwor
fQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6cG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQoreworICAgIGlmICghbV9wb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgbV9wb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlciA9IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpj
cmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKiBXZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQog
ewogICAgIGlmIChtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKQEAgLTI5
MTUsNiArMjk3NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJt
aXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsCiAgICAgbm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNz
aW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpOwogfQogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lv
bkRlY2lzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYWxs
b3dlZCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTMxNjcsNiAr
MzIzNCwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZwogICAgIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIHBvaW50ZXJMb2NrTWFuYWdlcigpLT5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAg
ICAgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3YmRmMDY5
Y2MwYjAwNjEzYjYxOGQxOGY4MGQ0MzBmMmVlNWM4OTQxLi5kNzU2YzI4NWIwYzU3ZDBiNGM5ZGVm
OTkyNjkyNDExMTEyOTQzYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTQwLDYgKzQwLDkgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBh
Z2VGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIgorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRl
ckxvY2tDbGllbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvbGlj
eUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCkBAIC0xMzQsNiAr
MTM3LDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogY2xh
c3MgUGFnZUJhbm5lcjsKIGNsYXNzIFBhZ2VPdmVybGF5OwogY2xhc3MgUGx1Z2luVmlldzsKK2Ns
YXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogY2xhc3MgU2Vzc2lvblN0
YXRlOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogY2xhc3MgV2ViQ29udGV4dE1lbnU7CkBAIC0x
NDksNiArMTUzLDcgQEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlv
bkNsaWVudDsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogY2xhc3MgV2ViUGFn
ZUdyb3VwUHJveHk7CitjbGFzcyBXZWJQb2ludGVyTG9ja01hbmFnZXI7CiBjbGFzcyBXZWJQb3B1
cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50Owogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CkBA
IC0yMDIsNiArMjA3LDExIEBAIHB1YmxpYzoKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlciogZnVs
bFNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBXZWJQb2ludGVyTG9ja01hbmFnZXIqIHBvaW50ZXJMb2NrTWFuYWdlcigpOworICAgIFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpOworI2VuZGlmCisKICAgICAvLyAtLSBDYWxsZWQgYnkgdGhlIERyYXdpbmdB
cmVhLgogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBnZW5lcmljaXplIHRoZXNlIGludG8gYSBEcmF3
aW5nQXJlYSBjbGllbnQgaW50ZXJmYWNlLiBXb3VsZCB0aGF0IGJlIGJlbmVmaWNpYWw/CiAgICAg
dm9pZCBkcmF3UmVjdChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CkBAIC0yNTgsNiArMjY4LDkgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50Kik7CiAjZW5kaWYKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Kik7Cisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRs
ZVBvaW50ZXJMb2NrQ2xpZW50KFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50Kik7CisjZW5k
aWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1
cm4gbV9jb250ZXh0TWVudUNsaWVudDsgfQpAQCAtMjcyLDYgKzI4NSw5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkgeyByZXR1cm4gbV9mdWxs
U2NyZWVuQ2xpZW50OyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIElu
amVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50JiBpbmplY3RlZEJ1bmRsZVBvaW50ZXJM
b2NrQ2xpZW50KCkgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NsaWVudDsgfQorI2VuZGlmCiAKICAg
ICB2b2lkIHNldFVuZGVybGF5UGFnZShQYXNzUmVmUHRyPFdlYlBhZ2U+IHVuZGVybGF5UGFnZSkg
eyBtX3VuZGVybGF5UGFnZSA9IHVuZGVybGF5UGFnZTsgfQogCkBAIC04MTksNiArODM1LDEwIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVj
aXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dlZCk7CiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lv
bkRlY2lzaW9uKGJvb2wgYWxsb3dlZCk7CisjZW5kaWYKKwogICAgIHZvaWQgYWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdl
U3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKICNpZiBVU0UoQVBQS0lUKQpAQCAt
OTUwLDYgKzk3MCw5IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CiAjZW5kaWYKICAgICBJbmplY3RlZEJ1bmRsZVBh
Z2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCBtX2xvZ0RpYWdub3N0aWNNZXNzYWdlQ2xpZW50Owor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxv
Y2tDbGllbnQgbV9wb2ludGVyTG9ja0NsaWVudDsKKyNlbmRpZgogCiAgICAgRmluZENvbnRyb2xs
ZXIgbV9maW5kQ29udHJvbGxlcjsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9S
TShRVCkKQEAgLTk2NSw2ICs5ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyPiBtX2Z1bGxTY3JlZW5NYW5h
Z2VyOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBSZWZQdHI8V2ViUG9p
bnRlckxvY2tNYW5hZ2VyPiBtX3BvaW50ZXJMb2NrTWFuYWdlcjsKKyAgICBSZWZQdHI8UG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI7CisjZW5kaWYKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51PiBtX2FjdGl2ZVBv
cHVwTWVudTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBSZWZQdHI8V2ViQ29udGV4
dE1lbnU+IG1fY29udGV4dE1lbnU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDI1ZWJkODY4OGI2MjI1MTlmNGQ3
ZDIzZGJhMTQyZjhiYTNiMTM5OGQuLjcyY2Y1NWRiNmMxZjlkMGU0NDIwZDljN2YzMjM0OTcyNzlm
MmM1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTgsNiArMjE4LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgTm90aWZpY2F0aW9uCiAgICAgRGlkUmVjZWl2ZU5v
dGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9v
bCBhbGxvd2VkKQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBEaWRSZWNlaXZlUG9p
bnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvd2VkKQorI2VuZGlmCisKICAgICBT
ZXRXaW5kb3dSZXNpemVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGludGVyc2VjdHNWaWV3KQogCiAg
ICAgIyBQcmludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGI1YjIxNGFhZWVjM2UwMDQxM2QxNTk4NmE0NWJhZTkwYWRiY2E4Y2IuLmNhNTY5OTAxYWQ5
OTc3ZjEzMWZkNTI4ZjVmZTliZTk0MmEyZTQzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNiArNDgsOSBAQAogI2luY2x1ZGUgIldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisjZW5k
aWYKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpA
QCAtMjA5LDYgKzIxMiw5IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFVTRShTT1VQ
KQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpOwogI2VuZGlmCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBhZGRTdXBwbGVtZW50PFdlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXI+KCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMDAzY2Y2MjRhODAwMzhjZDRkMTU1ZDllYjY1NTcxZjhjMTk3YjhkZS4uOWE0MjM2
NjRhMTdmYmUxZDIwYjhhMDFiMjQzMzY4MDY1NDk2ZmZjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTA2LTIx
ICBTdGFuaXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAg
ICAgW1F0XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHBvaW50ZXIg
bG9jayBwZXJtaXNzaW9uIHN1cHBvcnQgaW4gV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBhZGQg
cG9pbnRlciBsb2NrIHN1cHBvcnQgaW4gV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBwcm92aWRl
IHVzYWdlIHNhbXBsZSBpbiBNaW5pQnJvd3NlciAobm90IGNsaXAgYW5kIG5vdCBoaWRlIGN1cnNv
ciBub3cpCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9t
TmliXSk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5j
cHA6CisgICAgICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3RpZnkpOgorICAgICAgICAq
IE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2Up
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnN1cHBvcnRzUG9pbnRlckxvY2sp
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlcXVlc3RQb2ludGVyTG9jayk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0UG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6aGFzUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpoYXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSk6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhhc1BvaW50ZXJMb2NrV2lsbFJlc3BvbmRB
c3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6YWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAg
IChXVFI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RS
Ojpwb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKToKKyAg
ICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnByb3ZpZGVyKToK
KyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RSOjpXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcik6Cisg
ICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9j
a1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXI6OnJlc2V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJpOgorCiAyMDEzLTA2LTIxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2gu
ZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTUwNjYzKTog
VXNpbmcgd2Via2l0QXVkaW9Db250ZXh0IGluIEluc3BlY3RvciBtYWtlcyBpdCB1bmRlZmluZWQg
ZXZlcnl3aGVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQppbmRleCA3MmFlOGIyNGRkZTdhNjU5MmQ3YzI3MGYxOWFiZDUxMjIwN2U4
NGM2Li44NzU3YTZiZGNjNzlmMjBmOTg5YTA2NjM0ODgzZDE0M2ZjNjAwYjkwIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAt
NzI0LDYgKzcyNCw3IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIDAsIC8vIHNob3dD
b2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8g
dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGlj
eUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChfd2ViVmlldy5wYWdlUmVmLCAmdWlDbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAppbmRleCA2ZDVjNmE2MzAy
Yzc3ZmEzZGY0MDBiOTc1YTNkNmMyNmEzZWNhMGU2Li40MjE4OGJmNGRiOTgwYjY2MjFlMzRlYzYx
ZTk2MjdjNmYxMDIxNjcwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uLmNwcApAQCAtMTY3LDEyICsxNjcsMjAgQEAgYm9vbCBNaW5pQnJvd3NlckFw
cGxpY2F0aW9uOjpub3RpZnkoUU9iamVjdCogdGFyZ2V0LCBRRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1vdmU6CiAgICAgICAgICAg
ICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRvbnMoKSkgeworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgICAgICAgICAgICAgaWYgKG1faG9sZGluZ0NvbnRyb2wgJiYgbV90b3VjaFBvaW50cy5z
aXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmFjY2VwdCgpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOworI2Vsc2UK
ICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHN3YWxsb3cgdGhlIGV2ZW50IGluc3RlYWQg
b2YgcHJvcGFnYXRpbmcgaXQsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgYXZvaWQgc2Vu
ZGluZyB0aGUgbW91c2UgcmVsZWFzZSBldmVudHMgYW5kIGlmIHRoZQogICAgICAgICAgICAgICAg
IC8vIEZsaWNrYWJsZSBpcyB0aGUgbW91c2UgZ3JhYmJlciBpdCB3b3VsZCByZWNlaXZlIHRoZSBl
dmVudAogICAgICAgICAgICAgICAgIC8vIGFuZCB3b3VsZCBtb3ZlIHRoZSBjb250ZW50LgogICAg
ICAgICAgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG91Y2hUeXBlID0gUUV2ZW50
OjpUb3VjaFVwZGF0ZTsKICAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQobW91c2VFdmVudC0+
YnV0dG9ucygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2Vy
V2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApp
bmRleCBiNGI1YmMwOTI2OGNiYjNjZjM0OWMwOGEwNmM3YzJhOTVkY2NlYTY1Li5hYmNkOGFjMzQx
MTU5NTdlMGE2MTc2M2MxNDEwZTM3OWViY2UwNzQzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
cW1sL0Jyb3dzZXJXaW5kb3cucW1sCkBAIC01NjQsNiArNTY0LDIwIEBAIFJlY3RhbmdsZSB7CiAg
ICAgICAgICAgICBXaW5kb3cuc2hvd05vcm1hbCgpOwogICAgICAgICAgICAgbmF2aWdhdGlvbkJh
ci52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBleHBlcmltZW50YWwub25QZXJt
aXNzaW9uUmVxdWVzdGVkIDogeworICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24udHlwZSA9PT0g
UGVybWlzc2lvblJlcXVlc3QuUG9pbnRlckxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoIXBl
cm1pc3Npb24uYWxsb3cpCisgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24uYWxsb3cgPSB0
cnVlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXhwZXJpbWVudGFsLm9uUG9p
bnRlckxvY2tSZXF1ZXN0ZWQgOiB7CisgICAgICAgIH0KKyAgICAgICAgZXhwZXJpbWVudGFsLm9u
UG9pbnRlclVubG9ja1JlcXVlc3RlZCA6IHsKKyAgICAgICAgfQorICAgICAgICBLZXlzLm9uRXNj
YXBlUHJlc3NlZDogeworICAgICAgICAgICAgaWYgKHdlYlZpZXcuZXhwZXJpbWVudGFsLnBvaW50
ZXJMb2NrZWQpCisgICAgICAgICAgICAgICBleHBlcmltZW50YWwudW5sb2NrUG9pbnRlcigpCisg
ICAgICAgIH0KICAgICB9CiAKICAgICBTY3JvbGxJbmRpY2F0b3IgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggY2U2NDdlMjY3Y2FlMWQxZWYyOGZmZDFmZjc3MDkzMzg3YjU4YTYzZS4u
ZThmYjIzNjMxM2I5OGUwYjM3MzJhZGY1OWJkY2UyOGM2YWUwZWE5ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0xOTAsNSArMTkwLDExIEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
IAogICAgIC8vIFNlY3VyZSB0ZXh0IGlucHV0IG1vZGUgKE1hYyBvbmx5KQogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIHNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQ7Ci19OwogCisgICAg
Ly8gUG9pbnRlckxvY2sKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQg
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7Cisg
ICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKK307CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggZWI1MGNlMGUwNTAyMGYwMDkzMDUwOTU3OTk4NmFj
ODAyZDMxOGNlYy4uNzM5OTM4YWQ1ZDFiYTEzNzI4YmM1MTdhNzlmZTg3MzAxNjg2Y2YwMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNDE1LDYgKzQxNSwxNyBAQCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB9Owog
ICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQobV9wYWdlLCAmZnVsbFNjcmVlbkNs
aWVudCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV0tCdW5kbGVQ
YWdlUG9pbnRlckxvY2tDbGllbnQgcG9pbnRlckxvY2tDbGllbnQgPSB7CisgICAgICAgIGtXS0J1
bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudEN1cnJlbnRWZXJzaW9uLAorICAgICAgICB0aGlzLAor
ICAgICAgICBzdXBwb3J0c1BvaW50ZXJMb2NrLAorICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2ss
CisgICAgICAgIDAsIC8vIHJlcXVlc3RQb2ludGVyVW5sb2NrLAorICAgIH07CisgICAgV0tCdW5k
bGVQYWdlU2V0UG9pbnRlckxvY2tDbGllbnQobV9wYWdlLCAmcG9pbnRlckxvY2tDbGllbnQpOwor
I2VuZGlmCiB9CiAKIEluamVjdGVkQnVuZGxlUGFnZTo6fkluamVjdGVkQnVuZGxlUGFnZSgpCkBA
IC0xNzk2LDYgKzE4MDcsMzIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmNsb3NlRnVsbFNj
cmVlbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzdXBwb3J0c1BvaW50ZXJMb2Nr
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkudGVzdFJ1bm5lcigpLT5oYXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpKSB7
CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNldFBvaW50
ZXJMb2NrVXN1YWxCZWhhdmlvcigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEluamVjdGVkQnVuZGxlUGFnZTo6cmVxdWVzdFBvaW50
ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5oYXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNs
eSgpKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNl
dFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fSAKKworICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5oYXNQ
b2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZp
b3IoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIFdLQnVuZGxl
UGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKHBhZ2UpOworfQorI2VuZGlmCisKIHN0YXRpYyBi
b29sIGNvbXBhcmVCeVRhcmdldE5hbWUoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0
ZW0xLCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTIpCiB7CiAgICAgcmV0dXJu
IHRvU1REKGFkb3B0V0soV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRhcmdldChpdGVt
MSkpKSA8IHRvU1REKGFkb3B0V0soV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRhcmdl
dChpdGVtMikpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCmluZGV4IGQwOWEyMDRkZDllY2VlNWRiMGM2
NGM2YzNiZmU0OWNjNjg5MTNlMWEuLjdkNTgwOWU5ZjJhMDVmNmZlMDMyYWQ1YmI5Y2FhNGRiMDAw
YTZmNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApAQCAtMTQwLDYgKzE0MCwxMiBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGNsb3NlRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIC8vIFBvaW50ZXIgTG9jayBjbGll
bnQKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZik7
CisgICAgc3RhdGljIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZik7Cisj
ZW5kaWYKKwogICAgIC8vIEVkaXRvciBjbGllbnQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCZWdp
bkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCBhNjk2NjAwNTE3YjY5ZTgyOWIwZWU5MmQ2NWU1NGRmMmNmODFiZTA3
Li5iYjE4Y2E2MTFmMDE2ODVlY2YyNDEyOTkxODcwNzJmOWIyMjk2NDc1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTk1LDYgKzk1LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX2N1c3RvbUZ1
bGxTY3JlZW5CZWhhdmlvcihmYWxzZSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRFbmFibGVkKGZh
bHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIiIpKSkKKyAgICAsIG1fcG9pbnRlckxvY2tSZXNwb25zZVN0YXR1
cyhQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CiB9CkBAIC04MTIsNCArODEzLDE5IEBAIGJvb2wgVGVzdFJ1bm5lcjo6c2VjdXJlRXZlbnRJbnB1
dElzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmRp
ZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgV0tCdW5kbGVQYWdlRGlkTG9zZVBvaW50ZXJMb2Nr
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBXS0J1bmRsZVBhZ2VEaWRB
Y3F1aXJlUG9pbnRlckxvY2soSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgp
KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQorewor
ICAgIFdLQnVuZGxlUGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggZWYwZWE4YzcwOGQxYzJmYTk1YWM1N2IwMGQyYWQ3NjYyMzdmNjcyYS4uODM4MDlmMzBmMzQ2
MTQzZmEyZjcxZThhOTFiOGJkZDA5YmFkZDIxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI3NSw2ICsyNzUsMTggQEAg
cHVibGljOgogCiAgICAgYm9vbCBzZWN1cmVFdmVudElucHV0SXNFbmFibGVkKCkgY29uc3Q7CiAK
KyAgICAvLyBDdXN0b20gUG9pbnRlckxvY2sgYmVoYXZpb3IKKyAgICB2b2lkIGRpZExvc2VQb2lu
dGVyTG9jaygpOworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tVc3Vh
bEJlaGF2aW9yKCkgeyBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPSBQb2ludGVyTG9ja1Vz
dWFsQmVoYXZpb3I7IH0KKyAgICBib29sIGhhc1BvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tSZXNwb25zZVN0YXR1cyA9PSBQb2ludGVyTG9ja1Vz
dWFsQmVoYXZpb3I7IH0KKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KCkgeyBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPSBQb2ludGVyTG9ja1Jlc3BvbnNl
RmFpbDsgfQorICAgIGJvb2wgaGFzUG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKSBj
b25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPT0gUG9pbnRlckxvY2tS
ZXNwb25zZUZhaWw7IH0KKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hy
b25vdXNseSgpIHsgbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzID0gUG9pbnRlckxvY2tSZXNw
b25zZUFzeW5jOyB9CisgICAgYm9vbCBoYXNQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9u
b3VzbHkoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPT0gUG9p
bnRlckxvY2tSZXNwb25zZUFzeW5jOyB9CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCkBAIC0zMjUsNiArMzM3LDE0
IEBAIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1fdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbjsKIAogICAgIFBsYXRmb3JtVGltZXJSZWYgbV93YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lcjsKKworICAgIGVudW0gUG9pbnRlckxvY2tSZXNwb25zZVN0YXR1cyB7CisgICAgICAgIFBv
aW50ZXJMb2NrVXN1YWxCZWhhdmlvciwKKyAgICAgICAgUG9pbnRlckxvY2tSZXNwb25zZUZhaWws
CisgICAgICAgIFBvaW50ZXJMb2NrUmVzcG9uc2VBc3luYworICAgIH07CisKKyAgICBQb2ludGVy
TG9ja1Jlc3BvbnNlU3RhdHVzIG1fcG9pbnRlckxvY2tSZXNwb25zZVN0YXR1czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJn
ZXQucHJpIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCmluZGV4IDM5ODAwYWI4
ZGNmZjNjZDQ0ZWMyOTE2NmQzNzFiY2RlMmQ0NDBhNjMuLjFjYmEzZDE2NDQ5MDEyZGZmZjk1NGJk
MjVmMWU5ODMxOTEwOTIzYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFy
Z2V0LnByaQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKQEAgLTE1LDYg
KzE1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVGVzdENvbnRyb2xsZXIuaCBcCiAgICAgVGVzdElu
dm9jYXRpb24uaCBcCiAgICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBcCisgICAgV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCBcCiAgICAgV29ya1F1ZXVlTWFuYWdlci5oCiAK
IFNPVVJDRVMgKz0gXApAQCAtMjcsNiArMjgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBUZXN0Q29u
dHJvbGxlci5jcHAgXAogICAgIFRlc3RJbnZvY2F0aW9uLmNwcCBcCiAgICAgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwIFwKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5j
cHAgXAogICAgIFdvcmtRdWV1ZU1hbmFnZXIuY3BwCiAKIERFU1RESVIgPSAkJHtST09UX0JVSUxE
X0RJUn0vYmluCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDA5NjQ3YTE2MDE3Mzg0MTdjZmZkZjAzNjZlNGQ5OTE4MDNkNjQ5MjMuLmQ1N2QxZDIxYTA3NTAz
ZDE1N2ZjNzgwZDg3MDRmZWMyNWRmNGQxNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tO
dW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VQcml2YXRlLmg+CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Lmg+CisjZW5kaWYKICNpbmNsdWRl
IDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI0Nyw2ICsyNTEsNyBAQCBXS1Bh
Z2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwg
V0tVUkxSZXF1ZXN0UmVmLCBXSwogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAg
ICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFn
ZSwgJm90aGVyUGFnZVVJQ2xpZW50KTsKIApAQCAtMzg4LDYgKzM5MywxMiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAg
V0tOb3RpZmljYXRpb25Qcm92aWRlciBub3RpZmljYXRpb25LaXQgPSBtX3dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLnByb3ZpZGVyKCk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlk
ZXIobm90aWZpY2F0aW9uTWFuYWdlciwgJm5vdGlmaWNhdGlvbktpdCk7CiAKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBwb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0UG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcihtX2NvbnRleHQuZ2V0KCkpOworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
UHJvdmlkZXIgcG9pbnRlckxvY2tQZXJtaXNzaW9uS2l0ID0gbV93ZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlci5wcm92aWRlcigpOworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclNldFByb3ZpZGVyKHBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsICZwb2ludGVyTG9j
a1Blcm1pc3Npb25LaXQpOworI2VuZGlmCisKICAgICBpZiAodGVzdFBsdWdpbkRpcmVjdG9yeSgp
KQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2NvbnRl
eHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CiAKQEAgLTQ0Niw2ICs0NTcsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoV0tEaWN0aW9uYXJ5
UmVmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAv
LyBoaWRlQ29sb3JQaWNrZXIKICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2Vk
LAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0CiAg
ICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAm
cGFnZVVJQ2xpZW50KTsKIApAQCAtNjE1LDYgKzYyNywxMSBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBtX2lzR2VvbG9jYXRpb25QZXJt
aXNzaW9uU2V0ID0gZmFsc2U7CiAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvbkFsbG93ZWQg
PSBmYWxzZTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgLy8gUmVzZXQgUG9pbnRl
ckxvY2sgcGVybWlzc2lvbnMuCisgICAgbV93ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ci5yZXNldCgpOworI2VuZGlmCisKICAgICAvLyBSZXNldCBDdXN0b20gUG9saWN5IERlbGVnYXRl
LgogICAgIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGZhbHNlLCBmYWxzZSk7CiAKQEAgLTEyMDMs
NiArMTIyMCwxOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLUwogICAgIFdLTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0KTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYg
cGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkuZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChwYWdl
LCBvcmlnaW4sIHJlcXVlc3QpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xp
Y3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7Cisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhyZXF1ZXN0KTsKKyNlbmRpZgorfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjp1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV0tQYWdlUmVmLCBXS1BsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIHByaW50Zigi
TUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNTRURcbiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCmluZGV4IGRlZTI2ODM0NmRmOWMyOGQ3M2NlYmUzOWE4MDM0MjA1ZGNh
M2Q0YjcuLjk4ODQxOGMzZjM3Y2I3YmJjNTk1Y2ZmZWU0YjM3MjcwMTJhOGIyNDkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI3LDYgKzI3LDkgQEAKICNkZWZp
bmUgVGVzdENvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJXb3JrUXVldWVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSA8R2VvbG9jYXRpb25Qcm92aWRlck1vY2suaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CkBAIC0xMzcsNiArMTQwLDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VS
ZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RS
ZWYsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAKKyAgICBzdGF0aWMgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7
CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0UmVmKTsKKwogICAgIHN0YXRpYyB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZChXS1BhZ2VSZWYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFdLRGljdGlvbmFyeVJl
ZiwgY29uc3Qgdm9pZCopOwogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSW5GcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTcwLDYgKzE3Niwx
MCBAQCBwcml2YXRlOgogCiAgICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgbV93ZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgbV93ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
cjsKKyNlbmRpZgorCiAgICAgT3duUHRyPFBsYXRmb3JtV2ViVmlldz4gbV9tYWluV2ViVmlldzsK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29udGV4dDsKICAgICBXS1JldGFpblB0
cjxXS1BhZ2VHcm91cFJlZj4gbV9wYWdlR3JvdXA7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0OTk0ZGJmMzUwYmNkMWUzMTFhN2MzYjUyZDYyNjc1ZTRjOWFiZmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZUFycmF5Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1Nl
Y3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNl
IFdUUiB7CisKK3N0YXRpYyB2b2lkIGFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmFkZFBvaW50ZXJMb2NrUGVybWlz
c2lvbk1hbmFnZXIobWFuYWdlcik7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZVBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFn
ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8V2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobWFuYWdlcik7Cit9CisKK3N0YXRp
YyBXS0RpY3Rpb25hcnlSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+cG9pbnRlckxvY2tQ
ZXJtaXNzaW9ucygpOworfQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6V2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIoKQoreworfQorCitXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwcm92aWRl
cigpCit7CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBwb2ludGVyTG9ja1By
b3ZpZGVyID0geworICAgICAgICBrV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlckN1cnJl
bnRWZXJzaW9uLAorICAgICAgICB0aGlzLAorICAgICAgICBXVFI6OmFkZFBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXIsCisgICAgICAgIFdUUjo6cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlciwKKyAgICAgICAgV1RSOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zLAorICAgIH07Cisg
ICAgcmV0dXJuIHBvaW50ZXJMb2NrUHJvdmlkZXI7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIpCit7CisgICAgQVNTRVJUKCFtX3Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOworICAgIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlciA9IG1hbmFnZXI7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXIpCit7CisgICAgQVNTRVJUKG1fcG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlci5nZXQoKSA9PSBtYW5hZ2VyKTsKKyAgICBtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXIgPSAwOworfQorCitXS0RpY3Rpb25hcnlSZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXI6OnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKQoreworICAgIC8vIEZJWE1FIDogSXQgc2hv
dWxkIGJlIHJlYWwgY2FjaGUgZm9yIHBlcm1pc3Npb25zCisgICAgcmV0dXJuIFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92
aWRlcjo6cmVzZXQoKQoreworICAgIC8vIEZJWE1FIDogcmVzZXQgcmVhbCBjYWNoZQorfQorCit9
IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJjMTk0MzczMTAzNmFmMjRkZDJiYTA4NTAyZTEyODQ4
OThmMzQzNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJP
TklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrUGVybWlz
c2lvblByb3ZpZGVyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJf
aAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgPFdlYktpdDIvV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXVFIgeworCitjbGFzcyBX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIoKTsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyIHByb3ZpZGVyKCk7CisKKyAgICB2b2lkIGFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmKTsKKyAgICB2b2lkIHJlbW92
ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5h
Z2VyUmVmKTsKKyAgICBXS0RpY3Rpb25hcnlSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9ucygpOwor
CisgICAgdm9pZCByZXNldCgpOworcHJpdmF0ZToKKyAgICBXS1JldGFpblB0cjxXS1BvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJSZWY+IG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaSBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJpCmluZGV4IDEwNzg4NTA0ZDdjMTMyZDU3OWU2YTE3ZmU1YzVhZDJj
N2ZkNThjYTYuLmIzNDYzYTA4MTNkYjU5MGZkN2ExNzM3ZjhiMzNjNzVjOTZlNDkxMTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCisrKyBiL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpCkBAIC0xMjYsMyArMTI2LDUg
QEAgRkVBVFVSRV9ERUZBVUxUUyA9IFwKICAgICBFTkFCTEVfV09SS0VSUz0xIFwKICAgICBFTkFC
TEVfWEhSX1RJTUVPVVQ9MSBcCiAgICAgRU5BQkxFX1hTTFQ9MCBcCisgICAgRU5BQkxFX1BPSU5U
RVJfTE9DSz0xIFwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0MzBjOGUxNDEzY2MzNGE4ZmI2NmJjOTk1OGMwOTBjMDJk
MzdiYzcuLjIwNTAyODQ2NzE1NzliMjk4MmQyOGExYTczM2E1ZmUwNjIyOTQ4MGYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMy0wNi0yMSAgU3RhbmlzbGF2IFBpa3VsaWsgIDxzdGFuaXNsYXYu
cGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBBZGQgV2ViS2l0MiBQb2ludGVy
IExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgdGVzdCBpcyBwZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LCBidXQgYWZ0
ZXIgdGhhdCBmaXJzdCBydW4gb2YgYWxsIHRlc3RzIGNvbXBsZXRlIHdpdGg6IAorICAgICAgICBm
YWlsZWQgdGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkOgorICAg
ICAgICBwb2ludGVyLWxvY2svYnVnOTAzOTEtbW92ZS10aGVuLXdpbmRvdy1vcGVuLWNyYXNoLmh0
bWwKKworICAgICAgICBPbmUgdGVzdCBmYWlsLCBubyBkb3VibGVjbGljayBzdXBwb3J0IG5vdzoK
KyAgICAgICAgcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wNi0yMSAg
UmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogSW50ZWdyYXRlIG5ldyByZWdpb25PdmVyc2V0Q2hhbmdlIGV2ZW50IGludG8gaW5zcGVjdG9y
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggMGQxYzA5OWI3YTZiNzU0YTU0ZWVmNDA1NTg0ZTExYWQzYzdmODBmMC4uMTIyYjdiMzJi
MTU1ZWFlMzEyZjFlYzI4MmNmNDMyZDAyMTZiZjk0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0LTUuMC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjU4LDYgKzY1OCw5IEBAIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvbG9nb3V0Lmh0bWwKIHBsYXRmb3JtL3F0L3BsdWdpbnMv
YXBwbGljYXRpb24tcGx1Z2luLXBsdWdpbnMtZGlzYWJsZWQuaHRtbAogcGxhdGZvcm0vcXQvcGx1
Z2lucy9xdC1xd2lkZ2V0LXBsdWdpbi5odG1sCiAKKyMgW1F0XVtXSzJdIFJFR1JFU1NJT04ocjE1
MTczNykKK3dlYmtpdC5vcmcvYi8xMTc4MjQgZmFzdC9yZXBsYWNlZC93aWR0aDEwMHBlcmNlbnQt
aW1hZ2UuaHRtbCBbIFNraXAgXQorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIFByaW50aW5n
IHRlc3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCkBAIC04MTksMyArODIyLDEyIEBA
IHdlYmtpdC5vcmcvYi83Njk4NiBzY3JvbGxiYXJzL3Njcm9sbC1ydGwtb3ItYnQtbGF5ZXIuaHRt
bAogCiAjIFtRdF0gSW1hZ2VzIHNjYWxlIGRpZmZlcmVudGx5IGluIFdLMSBhbmQgV0syCiB3ZWJr
aXQub3JnL2IvOTIwMTUgdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvYnVncy9idWc4
NTAxNi5odG1sCisKKyMgW1F0XVtXSzJdIGVuYWJsZSBwb2ludGVyIGxvY2sgdGVzdHMKK2h0dHAv
dGVzdHMvcG9pbnRlci1sb2NrLyBbIFBhc3MgXQorcG9pbnRlci1sb2NrLyBbIFBhc3MgXQorCisj
IFtRdF1bV0syXSBUaGUgdGVzdCBpcyBwZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aG91
dCAtLXNpbmdseSBhZnRlciB0aGF0IHRlc3QgYWxsIHRlc3RzIGNvbXBsZXRlIHdpdGg6IGZhaWxl
ZCB0aW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQuCitwb2ludGVy
LWxvY2svYnVnOTAzOTEtbW92ZS10aGVuLXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwgWyBTa2lwIF0K
KyMgW1F0XVtXSzJdIEl0IGFsd2F5IGZhaWwuIE5vIGRvdWJsZWNsaWNrIHByb2Nlc3Npbmcgbm93
LiBJdCBuZWVkcyBpbnZlc3RpZ2F0aW9uLgorcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2
ZXJ5Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205285</attachid>
            <date>2013-06-24 04:58:34 -0700</date>
            <delta_ts>2013-10-02 21:37:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117789-20130624155632.patch</filename>
            <type>text/plain</type>
            <size>202584</size>
            <attacher name="Stanislav Pikulik">stanislav.pikulik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1NTY1NDFkMjRkMWVm
MjYzOTQ4NWEzZTM1NDVjNGQyZmJlNDc1Ny4uYWU5NmEwMjkyYWQ3NzZlNDdhYzk2NDdiNjUzZjU3
ZjY4OGEzNTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA2LTI0ICBTdGFu
aXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxnZS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRhcmdldCBtZXRob2QgdG8gZ2V0IHNlY3VyaXR5IG9yaWdpbiBv
ZiBkb2N1bWVudCB0byB3aGljaCB0aGUgZWxlbWVudCBiZWxvbmdzLCAKKyAgICAgICAgYmVmb3Jl
IHBvaW50ZXIgbG9jayB3aWxsIGJlIHJlcXVlc3RlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6CisKIDIwMTMtMDYtMjQgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNTEwMjEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzU0MzYxYWU5ZjhlMmFlZWM4ZmE1
OGZlMzlmMjg0Y2NlODA2NWZmOC4uNWJiYmIwMDE5NDA0YzRiYmY1MjA5MWRiZjA0NWFmZDljMDM0
OWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMyBAQAorMjAxMy0wNi0yNCAgU3RhbmlzbGF2
IFBpa3VsaWsgIDxzdGFuaXNsYXYucGlrdWxpa0BsZ2UuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBBZGQgV2ViS2l0MiBQb2ludGVyIExvY2sgSW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzc4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBwb2ludGVyIGxvY2sgcGVybWlz
c2lvbiByZXF1ZXN0IHByb2Nlc3NpbmcKKyAgICAgICAgYWRkIHBvaW50ZXIgbG9jayByZXF1ZXN0
cyBwcm9jZXNzaW5nCisgICAgICAgIGFkZCBxbWwgQVBJCisgICAgICAgIGFkZCBxbWwgdGVzdHMg
Zm9yIHBvaW50ZXIgbG9jaworCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJh
aXRzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmg6CisgICAgICAgICog
U2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3kpOgorICAgICAgICAoV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGlj
aWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2Nr
UGVybWlzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCk6CisgICAgICAgIChXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgIChXS1BvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OnBvaW50ZXJMb2NrZWQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVu
bG9ja1BvaW50ZXIpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6cG9pbnRl
ckxvY2tlZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1bmxvY2tQb2lu
dGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHA6CisgICAgICAgIChRV2Vi
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlOjpRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToK
KyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFFXZWJQ
ZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3cpOgorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1
ZXN0OjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVy
bWlzc2lvbnJlcXVlc3RfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvV2ViVmlldy90c3RfcG9pbnRlcmxvY2sucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9p
bnRlcmxvY2syLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9Q
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjphbGxv
dyk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkp
OgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0OjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpQb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBvaW50ZXJMb2NrUGVybWlzc2lv
bkRlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpXZWJQb2ludGVyTG9ja01h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5
Ojp+V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eTo6c2V0V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrTWFuYWdlclByb3h5Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OnJlcXVlc3RQb2ludGVyVW5s
b2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5h
Z2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UHJveHk6OnBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRV
cGRhdGVQb2ludGVyTG9ja1BvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGlj
aWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVy
TG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6YWRkUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyOjpyZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnBvaW50ZXJM
b2NrUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlRdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkQWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnBvaW50ZXJMb2NrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVxdWVzdFBvaW50ZXJMb2NrUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OjpR
dFdlYlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50Ojpw
b2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBXZWJLaXQyLnByaToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQb2ludGVyTG9ja0NsaWVudCk6CisgICAgICAgIChXS0J1
bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
dGFydFJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUlzUG9pbnRl
ckxvY2tlZCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2spOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2NrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxQb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9j
a0NsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQ
b2ludGVyTG9ja0NsaWVudDo6c3VwcG9ydHNQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2sp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudDo6
cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OnN0YXJ0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnBlcm1pc3Npb25MZXZlbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZXRQZXJtaXNzaW9u
TGV2ZWxGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZl
UG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9p
bnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjp+UG9pbnRlckxv
Y2tQZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBv
aW50ZXJMb2NrTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpXZWJQb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b2ludGVyTG9ja01hbmFnZXI6On5XZWJQb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN1cHBvcnRzUG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnJlcXVlc3RQb2ludGVyTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6cmVxdWVzdFBvaW50ZXJVbmxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmlzUG9pbnRlckxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9j
a01hbmFnZXI6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50
ZXJMb2NrTWFuYWdlcjo6c3RhcnRSZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpzZWN1cml0eU9yaWdpbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9j
a01hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUG9pbnRl
ckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6fldl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6ZGlkVXBkYXRlUG9pbnRlckxvY2tEZWNp
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6
OmRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cG9saWN5Rm9yT3JpZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lv
bnNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVu
bG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9ja2Vk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6On5XZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
UG9pbnRlckxvY2tDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbmplY3RlZEJ1
bmRsZVBvaW50ZXJMb2NrQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKwogMjAxMy0wNi0yNCAg
S3J6eXN6dG9mIFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIEltcGxlbWVudCB1bml0IHRlc3QgY2FsbGJhY2s6IG9uV29yZEd1ZXNzZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQppbmRleCBjYmE0MjZjNTRmOTIxN2VmYzM4MDQzNzM5ODliN2RhOTAwZmZkOTEzLi43
Yjk3OTc0YWExN2RkY2QwZTZlMGIyNDkxM2NiYzk5MDJkYjFiMDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAg
LTk0MSw2ICs5NDEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5jcHAgXAogICAgIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgXAogICAg
IHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIFwKKyAgICBwYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAgXAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4u
Y3BwIFwKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgXApAQCAt
MjA5Nyw2ICsyMDk4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9QYWdlVGhyb3R0bGVyLmgg
XAogICAgIHBhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5oIFwKICAgICBwYWdlL1BsdWdJbkNsaWVu
dC5oIFwKKyAgICBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIFwKICAgICBwYWdlL1BvcHVw
T3BlbmluZ09ic2VydmVyLmggXAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmggXAogICAgIHBhZ2Uv
U2NyZWVuLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwCmluZGV4IDk3NGI5OGRhNWY0ZWEzM2ExZGUzNGViZGNjZmY5OTBlNmZiMTM5YjIuLjRhZTZj
OWYyZGY5MGRkOTkyNDFkYzk0ZTY2NTVlMmEzODU2YTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTY4LDExICs2OCwxOSBAQCB2b2lk
IFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdl
dCkKICAgICAgICAgfQogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBv
aW50ZXJsb2NrY2hhbmdlRXZlbnQsIHRhcmdldCk7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdl
dDsKLSAgICB9IGVsc2UgaWYgKG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2lu
dGVyTG9jaygpKSB7Ci0gICAgICAgIG1fbG9ja1BlbmRpbmcgPSB0cnVlOwotICAgICAgICBtX2Vs
ZW1lbnQgPSB0YXJnZXQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50
TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2Vycm9yRXZlbnQsIHRhcmdldCk7CisgICAgICAgIC8v
IFRvIGRvIHBlcm1pc3Npb24gcmVxdWVzdCBpdCBuZWVkcyB0byBoYXZlIGEgc2VjdXJpdHkgb3Jp
Z2luIG9mCisgICAgICAgIC8vIGRvY3VtZW50IHRoYXQgb3ducyBlbGVtZW50LiBGb3IgdGhpcyBy
ZWFzb24gSSBzYXZlIHRhcmdldCwgdGhhdAorICAgICAgICAvLyBjYW4gYmUgb2J0YWluZWQgZHVy
aW5nIGV4ZWN1dGluZyByZXF1ZXN0LgorICAgICAgICBtX3RhcmdldCA9IHRhcmdldDsKKyAgICAg
ICAgaWYgKG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7
CisgICAgICAgICAgICBtX2xvY2tQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZWxlbWVu
dCA9IHRhcmdldDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHJlcXVlc3Qg
ZmFpbGVkIHN5bmNocm9ub3VzbHksIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRvIHN0b3JlIHRhcmdl
dAorICAgICAgICAgICAgbV90YXJnZXQgPSAwOworICAgICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2
ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2Vycm9yRXZlbnQsIHRhcmdldCk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTExMCwxMCArMTE4LDE2IEBAIEVsZW1lbnQqIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsK
IH0KIAorRWxlbWVudCogUG9pbnRlckxvY2tDb250cm9sbGVyOjp0YXJnZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKK30KKwogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xs
ZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCiB7CiAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFt
ZXMoKS53ZWJraXRwb2ludGVybG9ja2NoYW5nZUV2ZW50LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAg
IG1fbG9ja1BlbmRpbmcgPSBmYWxzZTsKKyAgICBtX3RhcmdldCA9IDA7CiB9CiAKIHZvaWQgUG9p
bnRlckxvY2tDb250cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQpAQCAtMTQ1LDYg
KzE1OSw3IEBAIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQoKQogewog
ICAgIG1fbG9ja1BlbmRpbmcgPSBmYWxzZTsKICAgICBtX2VsZW1lbnQgPSAwOworICAgIG1fdGFy
Z2V0ID0gMDsKIH0KIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAppbmRleCBjODIwNzU0YWUxYTRlY2M1M2Qx
MTZhOGQ0MjFkYjRmNjZjNDRlMzc0Li5kZWE0MTE0ZGJkMjNiMmVkN2U3M2Y0ZWJkYjhlMWU5NWMz
YWM5MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgK
QEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1
bWVudCopOwogICAgIGJvb2wgbG9ja1BlbmRpbmcoKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVt
ZW50KCkgY29uc3Q7CisgICAgRWxlbWVudCogdGFyZ2V0KCkgY29uc3Q7CiAKICAgICB2b2lkIGRp
ZEFjcXVpcmVQb2ludGVyTG9jaygpOwogICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KCk7CkBAIC02NSw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvY2tQZW5kaW5nOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50T2ZSZW1vdmVkRWxlbWVudFdoaWxlV2FpdGluZ0ZvclVubG9jazsKKyAgICBSZWZQdHI8
RWxlbWVudD4gbV90YXJnZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGMxN2ZhYWFjMGI5Y2NmZjgyOGI0YmNkNzYxNGJiYWE2
M2YxZGQ5Yy4uYWJlMWRlZDUwMDkyYjQ5NjY4MDFjZmNlNTI5NGE1Y2FmZTFiZDBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNDgsNiArNDgsNyBAQCBWUEFUSCA9IFwKICAgICBX
ZWJQcm9jZXNzL05ldHdvcmtJbmZvIFwKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAog
ICAgIFdlYlByb2Nlc3MvUGx1Z2lucyBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAg
ICAgV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwKICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UgXAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQgXApAQCAtNTksNiArNjAsNyBAQCBWUEFUSCA9
IFwKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzIFwKICAgICBVSVByb2Nlc3MvTm90aWZpY2F0aW9u
cyBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jayBc
CiAgICAgVUlQcm9jZXNzL1N0b3JhZ2UgXAogICAgIFNoYXJlZCBcCiAgICAgU2hhcmVkL0F1dGhl
bnRpY2F0aW9uIFwKQEAgLTEwMCw2ICsxMDIsOSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJGdWxsU2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBcCisgICAgV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAor
ICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlci5tZXNzYWdlcy5pbiBcCisgICAgV2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Lm1lc3NhZ2VzLmluIFwKICAgICBEcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBcCiAgICAg
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAppbmRleCBlYThlMmYxYmE3NDFhNzVhMjQyMGQ5MWQzMjA5MzYwMjMzNzRhNGZiLi40OTk3MGZi
YzJkMDk4MzUyMTBmYmZhZWExNjIzYTFkNjBkM2E5OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCkBAIC0xMzQsNiArMTM0LDkgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tQYWdlKiBXS1BhZ2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VH
cm91cCogV0tQYWdlR3JvdXBSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BsdWdp
blNpdGVEYXRhTWFuYWdlciogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKiBXS1Bv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QqIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXIqIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3Bh
Y2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyKiBXS1RleHRD
aGVja2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJyYXRpb24qIFdLVmli
cmF0aW9uUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAppbmRl
eCA5YWY3Yzc2ZTNiZDI4NGVjZmY5OTBkOWMzM2VjMjY4ODYyZTk1MTNmLi45NWY4YzkxNDJiZGYy
Mjc3Y2JhMzJiNDNmMzExMmNmNDIwZjY5ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50
VHJhaXRzPFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVy
cwogICAgIG9mZnNldG9mKFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQsIGJlZ2FuRW50ZXJG
dWxsU2NyZWVuKSwKICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCkKIH07
Ci0gICAgCisKIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVD
bGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50LCBjb250ZXh0TWVudURpc21pc3NlZCksCiAgICAgb2Zmc2V0b2Yo
V0tQYWdlQ29udGV4dE1lbnVDbGllbnQsIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSks
CkBAIC03Miw2ICs3Miw3IEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlTG9h
ZGVyQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKIGNvbnN0IHNpemVfdCBB
UElDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltd
ID0gewogICAgIG9mZnNldG9mKFdLUGFnZVVJQ2xpZW50LCBjcmVhdGVOZXdQYWdlKSwKICAgICBv
ZmZzZXRvZihXS1BhZ2VVSUNsaWVudCwgc2hvd0NvbG9yUGlja2VyKSwKKyAgICBvZmZzZXRvZihX
S1BhZ2VVSUNsaWVudCwgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dCksCiAgICAgc2l6ZW9mKFdLUGFnZVVJQ2xpZW50KQogfTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaAppbmRleCA0YTY2YTRlZTgwMjhlOWQ3ZDc0ZTE0M2I2M2Nj
ZTAxYjk0Mzk3ODY3Li4xNDM4MGZiMTEyMmNkMzQyMGUxYTU0MzYxZDAzNWYxZjEzODNlYjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC02OCw3ICs2OCw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VMb2FkZXJDbGllbnQ+IHsK
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudD4g
ewotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggNGJlMzk5YTcxM2JmOTJiYzdiOTgy
MDZjN2ViMTEyOTg0MDdjNWU4Zi4uYjk2NDlkNDcyYmViNjFkMWNjYzkyMDBhNWRmN2MzNGEyZTU2
NTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTA2LDYgKzEwNiw4IEBAIHB1
YmxpYzoKICAgICAgICAgVHlwZVBhZ2UsCiAgICAgICAgIFR5cGVQYWdlR3JvdXAsCiAgICAgICAg
IFR5cGVQbHVnaW5TaXRlRGF0YU1hbmFnZXIsCisgICAgICAgIFR5cGVQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0LAorICAgICAgICBUeXBlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciwK
ICAgICAgICAgVHlwZVByZWZlcmVuY2VzLAogICAgICAgICBUeXBlVGV4dENoZWNrZXIsCiAgICAg
ICAgIFR5cGVWaWJyYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwCmluZGV4IDgxYWY3ZWIyNzAyZTY0MDYyMWUyOGNiYTc1MDhhNjgzNmNlNDM2ZjYu
LjlmMWU1N2JmNzMxZWU1OGUzZjJlNDhjYTRmZDU5NzMzMjk2ZDRlYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC04Myw2ICs4MywxMCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlv
bigpOwogICAgICAgICBtX2NsaWNrQ291bnQgPSB3ZWJFdmVudC5jbGlja0NvdW50KCk7CiAKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBtX21vdmVtZW50RGVsdGEgPSBXZWJDb3Jl
OjpJbnRQb2ludCh3ZWJFdmVudC5kZWx0YVgoKSwgd2ViRXZlbnQuZGVsdGFZKCkpOworI2VuZGlm
CisKICAgICAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYgKHdlYkV2ZW50LnNo
aWZ0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0
S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IDU2ZjE0NGQ2ZGE0YjI1NzNjOWRmZTU2MDZhYzM0MjkzMjA4
MTk0NmYuLjAxZjRjNmIzZWVjM2RhZTIwNDE2MGI3ZTI4MWJiMTllODg2OTJlYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKQEAgLTEwNiw2ICsxMDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBl
bmNvZGVyIDw8IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIGVuY29kZXIgPDwgcG9pbnRlckxvY2tQZXJtaXNzaW9uczsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBlbmNvZGVyIDw8IHVzZXNO
ZXR3b3JrUHJvY2VzczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDIxOTNjNzQ2NzY3ODhlZjJkZTZl
YTc5MWFmNzkzZjc0ODZmMWViMC4uMDJhNWJiZGNlMTY0MmY0YjIyMDk3MjI3YTM3NjhjMGEzNDMy
NGI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9u
UGVybWlzc2lvbnM7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+IHBvaW50ZXJMb2NrUGVybWlzc2lvbnM7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3M7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCmluZGV4IGZlNjMzNmExMDE1NjNmMWJlMTZkNWIwZDgxNzM0OGQ1N2U1
NWQ0MzcuLmZkMDIyMDBlMjdhZWIxY2M1MmVjODQ4ODgyZjBjNGMxMDRjN2UxYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaQpAQCAtMTg4LDYgKzE4OCw5IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VHcm91cC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCisgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIFwKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIFwKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2Uu
aCBcCkBAIC0yNzksNiArMjgyLDExIEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9j
ay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVy
TG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggXAorICAgIFVJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIFwKKyAgICBV
SVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5
LmggXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Q
cm92aWRlci5oIFwKICAgICBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmggXAogICAgIFVJUHJv
Y2Vzcy9XZWJQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
XApAQCAtMzE2LDYgKzMyNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggXApAQCAtMzM5
LDYgKzM0OCwxMCBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmggXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJM
b2NrTWFuYWdlci5oIFwKKyAgICBXZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
UGVybWlzc2lvbkNhbGxiYWNrLmggXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkJhdHRlcnlDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xv
ckNob29zZXIuaCBcCkBAIC01NDksNiArNTYyLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3BwIFwK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNv
dXJjZUNhY2hlTWFuYWdlci5jcHAgXApAQCAtNTg5LDYgKzYwNCwxMiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIFwKICAg
ICBVSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBcCisgICAg
VUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2ViUG9pbnRlckxvY2tN
YW5hZ2VyUHJveHlRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja01hbmFnZXJQcm94eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvUG9pbnRl
ckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwIFwKICAgICBVSVByb2Nl
c3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVx
dWVzdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cCBcCkBAIC02ODksNiArNzEwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwIFwKQEAgLTcxNSw2ICs3MzcsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvUG9pbnRlckxvY2sv
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwKKyAgICBXZWJQcm9jZXNz
L1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3Mv
UG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwIFwKKyAgICBX
ZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKaW5kZXggNjRjOGQxYWJmYjEwMGM4ZTk2MjU1Nzc5MTE5YmE3YjRl
MTZlYjliMy4uOTYxNmYxMWI2NjIyMmNiNzljMzc0ZDU5N2U0MDYyNzI3OTA4YjllNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNTcsNiArNTcsNyBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFBy
b3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC05MCw2
ICs5MSw4IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXI7CitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk7Citj
bGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjsKIGNsYXNzIFdlYlByZWZlcmVu
Y2VzOwogY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgV2ViUmVuZGVyTGF5ZXI7CkBA
IC0xMzYsNiArMTM5LDkgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJSZWYsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1BhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
UGFnZVJlZiwgV2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyUmVmLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmLCBXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyUHJveHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0UmVmLCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZWYsIFdlYlBvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNS
ZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNl
UmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJMYXll
clJlZiwgV2ViUmVuZGVyTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCmluZGV4IDE2MjlhNTYyNzM5OGVmNjYzNWZjM2I0MGZlOGQ1M2ViYmFmYjQ0
NmEuLjE0NzBmMGI3YzAyMGUyMDEzNjZkYjZhNzhkODhiODY1YjliZDJjYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC00MSw2ICs0MSw5IEBA
CiAjaW5jbHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJQcm94eS5oIgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVk
ZSAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCIKQEAgLTI2MCw2ICsyNjMsMTUgQEAgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7CiB9CiAKK1dLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+KCkpOworI2Vsc2UKKyAgICByZXR1
cm4gMDsKKyNlbmRpZgorfQorCiBXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXRQbHVnaW5TaXRlRGF0YU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmgKaW5kZXggM2NlNzMxZTc4ZjBmY2Q4MGI4YTlhZDdlNGZhMDVkMTU1Yzkz
MDBlMC4uZGU0NDhjYTk1OWRiYjhmNjQyNzU3ZmVlNTkwNzRlNDA0ZDRhNmNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMTk1LDcgKzE5NSw4IEBA
IFdLX0VYUE9SVCBXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBXS0NvbnRleHRHZXROZXR3b3JrSW5m
b01hbmFnZXIoV0tDb250ZXh0UmVmIGNvCiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQp
OwogV0tfRVhQT1JUIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFBsdWdp
blNpdGVEYXRhTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0Nv
bnRleHRSZWYgY29udGV4dCk7Ci0gICAgCitXS19FWFBPUlQgV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV0tD
b250ZXh0UmVmIGNvbnRleHQpOworCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0aXN0
aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVycm9y
LCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3Rh
dGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Nv
bnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0R2V0U3RhdGlzdGljc1dpdGhPcHRpb25zKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0
YXRpc3RpY3NPcHRpb25zIHN0YXRpc3RpY3NNYXNrLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdL
Q29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbiBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggMTc2NTc4ZmVlOTUyZDVmZTZhMTc0NWE3MzljY2Mw
ODI1MDBmNDM4Yi4uOGExZjNlZjkzYmYyN2Y1NGRlZWIwMDkzOWUwMmExZDUzYzlkMWQ4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtMjIwLDYgKzIyMCw3IEBA
IHR5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTaG93Q29sb3JQ
aWNrZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwg
V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24sIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGljdGlvbmFyeSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3Jp
Z2luUmVmIG9yaWdpbiwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Np
b25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogLy8gRGVwcmVjYXRlZCAgICAK
IHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApKFdLUGFnZVJlZiBwYWdlLCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMs
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0
b24sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMjgyLDEwICsyODMsMTMgQEAgc3RydWN0
IFdLUGFnZVVJQ2xpZW50IHsKICAgICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKICAgICBX
S1BhZ2VIaWRlQ29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhpZGVDb2xvclBpY2tlcjsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMworICAgIFdLUGFnZURlY2lkZVBv
bGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsKIH07CiB0eXBlZGVmIHN0
cnVjdCBXS1BhZ2VVSUNsaWVudCBXS1BhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS1BhZ2VVSUNs
aWVudEN1cnJlbnRWZXJzaW9uID0gMiB9OworZW51bSB7IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRW
ZXJzaW9uID0gMyB9OwogCiAvLyBGaW5kIGNsaWVudC4KIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZEZpbmRTdHJpbmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywg
dW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2Nr
UGVybWlzc2lvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxODJiNGI0ZmU4MDdlYTg2M2Q0OTBk
M2MyMThjMTZhZjQ1M2ZiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgiCisK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworCitXS1R5cGVJ
RCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJHZXRUeXBlSUQoKQoreworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgcmV0dXJuIHRvQVBJKFdlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bk1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiBBUElPYmplY3Q6OlR5
cGVOdWxsOworI2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
U2V0UHJvdmlkZXIoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYs
IGNvbnN0IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqIHdrUHJvdmlkZXIpCit7Cisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPmluaXRpYWxp
emVQcm92aWRlcih3a1Byb3ZpZGVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3koV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBib29sIGFsbG93ZWQpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkVXBkYXRlUG9pbnRlckxvY2tQb2xpY3ko
dG9JbXBsKG9yaWdpbiksIGFsbG93ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGljaWVzKFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG9y
aWdpbnMpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwobWFuYWdlclJl
ZiktPnByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2llcyh0b0ltcGwob3JpZ2lucykp
OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE3
MThiNDk1NWUwOTlkZDg2ZGRlNjY0NTM3ZTlmY2MwNGJkNDk3ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVs
ZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisjZGVmaW5l
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisKKyNpbmNsdWRlICJXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblByb3ZpZGVyLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tU
eXBlSUQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBP
UlQgdm9pZCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcihXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlciogd2tQcm92aWRlcik7CitXS19FWFBPUlQgdm9pZCBXS1BvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZVBvaW50ZXJMb2NrUG9saWN5
KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlUG9pbnRlckxvY2tQb2xpY2ll
cyhXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJl
ZiBvcmlnaW5zKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8v
IFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNmU4MWQ3M2ExMTk5N2VhNDU3Y2MwNzBjODhiNGY4N2ZjMzI3
OGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVD
VFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUG9pbnRlckxvY2tQZXJt
aXNzaW9uUHJvdmlkZXJfaAorI2RlZmluZSBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiB2b2lkICgqV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25BZGROb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2spKFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJSZW1vdmVOb3RpZmljYXRpb25N
YW5hZ2VyQ2FsbGJhY2spKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2Vy
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tEaWN0aW9uYXJ5UmVmICgqV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlclBlcm1pc3Npb25zQ2FsbGJhY2spKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ciB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbkFkZE5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayAgICAg
ICAgICAgIGFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI7CisgICAgV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlclJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXJDYWxsYmFjayByZW1v
dmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOworICAgIFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXJQZXJtaXNzaW9uc0NhbGxiYWNrICAgICAgICAgICAgICAgcG9pbnRlckxvY2tQ
ZXJtaXNzaW9uczsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI7CisKK2VudW0geyBrV0tQb2lu
dGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9OworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25Qcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3MGQ0OTdmZmJjOGFlMmI2NDJmNmI3N2JhZTQ1YWFhMzNiM2MzZmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK1dLVHlwZUlEIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgp
Cit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1cm4gdG9BUEkoUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdDo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiBBUElPYmpl
Y3Q6OlR5cGVOdWxsOworI2VuZGlmCit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25S
ZXF1ZXN0QWxsb3coV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXR1
cm4gdG9JbXBsKHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpLT5hbGxvdygpOworI2VuZGlm
Cit9CisKK3ZvaWQgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0RGVueShXS1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCkKK3sK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHJldHVybiB0b0ltcGwocG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdCktPmRlbnkoKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MTg2ZDY3MDIyMDk4MWMzZDdjYTA4MThmMzI4YzBjYzY2
NTM0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxF
Q1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Rf
aAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJl
ZiBwb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcAppbmRleCAwODk5Yjg1NjM4OTRhNDAwNWExMjgzMWY2NWUzZjllYjJiNjcyOGM4Li5mOGI0
NWFmNzEyYjZlYjg5Yjg1MTgwOTI4YWEyNjhlODRkNGFiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMDksNiAr
MjA5LDcgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9y
UGlja2VyCiAgICAgICAgIDAsIC8vIHBsdWdpbkxvYWRQb2xpY3kKKyAgICAgICAgMCwgLy8gZGVj
aWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAgICAgV0tQ
YWdlUmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VC
X1ZJRVdfQkFTRSh3ZWJWaWV3KSkpOwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh3a1BhZ2Us
ICZ3a1VJQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwCmluZGV4IDEyMTNmZDliMjAxODdiOTk1OTNmNDUwMWZjMmQ5MTZkNTdh
MjY2MWEuLjhhNDQ4MGNlMmRkMTE5Njk2NTMzM2MyN2NmNmM2YTFhZjU3M2ZhOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAt
NDUsNiArNDUsOSBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNl
bmRpZgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAicWdsb2JhbC5oIgogI2luY2x1ZGUgInFx
dWlja25ldHdvcmtyZXBseV9wLmgiCkBAIC0zMzUsNiArMzM4LDEwIEBAIHZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhCiAgICAgd2ViUGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJW
aWV3KHFfcHRyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB3ZWJQ
YWdlUHJveHktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zZXRXZWJWaWV3KHFfcHRyKTsKKyNlbmRp
ZgorCiAgICAgcGFnZUV2ZW50SGFuZGxlci5yZXNldChuZXcgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
KHdlYlBhZ2UuZ2V0KCksIHBhZ2VWaWV3LmRhdGEoKSwgcV9wdHIpKTsKIAogICAgIHsKQEAgLTUy
Nyw2ICs1MzQsMTggQEAgYm9vbCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKCkgY29uc3QKICAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50
QmFja2dyb3VuZCgpOwogfQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OnBvaW50ZXJMb2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiB3ZWJQ
YWdlUHJveHktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwor
dm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dW5sb2NrUG9pbnRlcigpCit7CisgICAgd2ViUGFn
ZVByb3h5LT5wb2ludGVyTG9ja01hbmFnZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZFByb2dyZXNzRGlkQ2hhbmdl
KGludCBsb2FkUHJvZ3Jlc3MpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwpAQCAtMTA3MSwx
MiArMTA5MCwzMSBAQCBib29sIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnRyYW5zcGFyZW50
QmFja2dyb3VuZCgpIGNvbnN0CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwogICAgIHJl
dHVybiBkLT50cmFuc3BhcmVudEJhY2tncm91bmQoKTsKIH0KKwogdm9pZCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCBlbmFibGUpCiB7CiAg
ICAgUV9EKFFRdWlja1dlYlZpZXcpOwogICAgIGQtPnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChl
bmFibGUpOwogfQogCitib29sIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBvaW50ZXJMb2Nr
ZWQoKSBjb25zdAoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUV9EKGNvbnN0IFFR
dWlja1dlYlZpZXcpOworICAgIHJldHVybiBkLT5wb2ludGVyTG9ja2VkKCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6OnVubG9ja1BvaW50ZXIoKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUV9E
KFFRdWlja1dlYlZpZXcpOworICAgIGQtPnVubG9ja1BvaW50ZXIoKTsKKyNlbmRpZgorfQorCiBi
b29sIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnVzZURlZmF1bHRDb250ZW50SXRlbVNpemUo
KSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDQ2ODUxNWZj
ZmZhODE5NDkxYjBiZGVlMzUzNjU2ZTM4MTBhMDgwMDkuLmZmNjVmYmEwZWQ3ZGVlNjNiNmZlN2E0
ODM2OTE4NDg4MjA4NWNkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApAQCAtMjU2LDcgKzI1Niw3IEBAIGNsYXNzIFFXRUJLSVRf
RVhQT1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAKICAg
ICBRX1BST1BFUlRZKGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kIFdSSVRFIHNldFRyYW5zcGFy
ZW50QmFja2dyb3VuZCBSRUFEIHRyYW5zcGFyZW50QmFja2dyb3VuZCkKICAgICBRX1BST1BFUlRZ
KGJvb2wgdXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZSBXUklURSBzZXRVc2VEZWZhdWx0Q29udGVu
dEl0ZW1TaXplIFJFQUQgdXNlRGVmYXVsdENvbnRlbnRJdGVtU2l6ZSkKLQorICAgIFFfUFJPUEVS
VFkoYm9vbCBwb2ludGVyTG9ja2VkIFJFQUQgcG9pbnRlckxvY2tlZCkKICAgICBRX1BST1BFUlRZ
KGludCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCBXUklURSBzZXRQcmVmZXJyZWRNaW5p
bXVtQ29udGVudHNXaWR0aCBSRUFEIHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoIE5PVElG
WSBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aENoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShp
bnQgZGV2aWNlV2lkdGggV1JJVEUgc2V0RGV2aWNlV2lkdGggUkVBRCBkZXZpY2VXaWR0aCBOT1RJ
RlkgZGV2aWNlV2lkdGhDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoaW50IGRldmljZUhlaWdodCBX
UklURSBzZXREZXZpY2VIZWlnaHQgUkVBRCBkZXZpY2VIZWlnaHQgTk9USUZZIGRldmljZUhlaWdo
dENoYW5nZWQpCkBAIC0yNzMsNyArMjczLDYgQEAgY2xhc3MgUVdFQktJVF9FWFBPUlQgUVF1aWNr
V2ViVmlld0V4cGVyaW1lbnRhbCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFR
bWxDb21wb25lbnQqIGZpbGVQaWNrZXIgUkVBRCBmaWxlUGlja2VyIFdSSVRFIHNldEZpbGVQaWNr
ZXIgTk9USUZZIGZpbGVQaWNrZXJDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVFtbENvbXBvbmVu
dCogZGF0YWJhc2VRdW90YURpYWxvZyBSRUFEIGRhdGFiYXNlUXVvdGFEaWFsb2cgV1JJVEUgc2V0
RGF0YWJhc2VRdW90YURpYWxvZyBOT1RJRlkgZGF0YWJhc2VRdW90YURpYWxvZ0NoYW5nZWQpCiAg
ICAgUV9QUk9QRVJUWShRUW1sQ29tcG9uZW50KiBjb2xvckNob29zZXIgUkVBRCBjb2xvckNob29z
ZXIgV1JJVEUgc2V0Q29sb3JDaG9vc2VyIE5PVElGWSBjb2xvckNob29zZXJDaGFuZ2VkKQotCiAg
ICAgUV9QUk9QRVJUWShRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzIFJFQUQgcHJlZmVyZW5j
ZXMgQ09OU1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRV2ViS2l0VGVzdCogdGVzdCBSRUFE
IHRlc3QgQ09OU1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRUW1sTGlzdFByb3BlcnR5PFFR
dWlja1VybFNjaGVtZURlbGVnYXRlPiB1cmxTY2hlbWVEZWxlZ2F0ZXMgUkVBRCBzY2hlbWVEZWxl
Z2F0ZXMpCkBAIC0zNDUsNiArMzQ0LDggQEAgcHVibGljOgogICAgIGJvb2wgdHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9v
bCk7CiAKKyAgICBib29sIHBvaW50ZXJMb2NrZWQoKSBjb25zdDsKKwogICAgIGJvb2wgdXNlRGVm
YXVsdENvbnRlbnRJdGVtU2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VXNlRGVmYXVsdENvbnRl
bnRJdGVtU2l6ZShib29sIGVuYWJsZSk7CiAKQEAgLTM2Myw2ICszNjQsNyBAQCBwdWJsaWMgUV9T
TE9UUzoKICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFFTdHJpbmcmKTsKICAgICB2b2lkIGV2
YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiB2
YWx1ZSA9IFFKU1ZhbHVlKCkpOwogICAgIHZvaWQgZmluZFRleHQoY29uc3QgUVN0cmluZyYgc3Ry
aW5nLCBGaW5kRmxhZ3Mgb3B0aW9ucyA9IDApOworICAgIHZvaWQgdW5sb2NrUG9pbnRlcigpOwog
CiBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkVmlzdWFsbHlDb21taXR0ZWQoKTsKQEAgLTM4OCw2
ICszOTAsOCBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNX
aWR0aENoYW5nZWQoKTsKICAgICB2b2lkIHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQoKTsKICAg
ICB2b2lkIHRleHRGb3VuZChpbnQgbWF0Y2hDb3VudCk7CisgICAgdm9pZCBwb2ludGVyTG9ja1Jl
cXVlc3RlZCgpOworICAgIHZvaWQgcG9pbnRlclVubG9ja1JlcXVlc3RlZCgpOwogCiBwcml2YXRl
OgogICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwoUVF1aWNrV2ViVmlldyogd2ViVmlldywg
UVF1aWNrV2ViVmlld1ByaXZhdGUqIHdlYlZpZXdQcml2YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAppbmRleCA0MzRmNDEx
Mjk4N2I0ZTAwYTU3NGY0ZjE1N2MxZWY4ZTE2NGE3MWVhLi5mNGUwNmE0NDcxMzk1ZGQ2MWZmMWNh
MGY4MjMwNTdmYzQ5YjFjN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC0xMjMsNiArMTIzLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZVVzZXJTY3JpcHRzKCk7CiAgICAgdm9pZCB1cGRhdGVTY2hlbWVEZWxl
Z2F0ZXMoKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgYm9vbCBwb2ludGVyTG9j
a2VkKCkgY29uc3Q7CisgICAgdm9pZCB1bmxvY2tQb2ludGVyKCk7CisjZW5kaWYKKwogICAgIFFQ
b2ludEYgY29udGVudFBvcygpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGVudFBvcyhjb25zdCBR
UG9pbnRGJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcAppbmRleCA0NTY5N2EyMmI2NjJjMjY5ZTIzYjc0
OWY1OWY4ZmQyMjlmOWFiZjMyLi4zN2JkNjlmZWEwNTA4OTEzN2I2ZWZkZjcyNzAyNGJjZDliY2Rh
NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJt
aXNzaW9ucmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcsMTEgQEAKIAogY2xhc3MgUVdl
YlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSA6IHB1YmxpYyBRU2hhcmVkRGF0YSB7CiBwdWJsaWM6
Ci0gICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgZ2VvID0gMCwg
V0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkgPSAwLCBRV2ViUGVybWlz
c2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHJlcVR5cGUgPSBRV2ViUGVybWlzc2lvblJlcXVlc3Q6
Okdlb2xvY2F0aW9uKQorICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0g
MCwgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXIgPSAwLCBRV2ViUGVy
bWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHJlcVR5cGUgPSBRV2ViUGVybWlzc2lvblJlcXVl
c3Q6Okdlb2xvY2F0aW9uKQogICAgICAgICA6IG9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAg
ICAgLCBnZW9sb2NhdGlvblJlcXVlc3QoZ2VvKQogICAgICAgICAsIG5vdGlmaWNhdGlvblJlcXVl
c3Qobm90aWZ5KQorICAgICAgICAsIHBvaW50ZXJMb2NrUmVxdWVzdChwb2ludGVyKQogICAgICAg
ICAsIHR5cGUocmVxVHlwZSkKICAgICAgICAgLCBhbGxvdyhmYWxzZSkKICAgICB7CkBAIC01MCw2
ICs1MSw3IEBAIHB1YmxpYzoKICAgICBXS1JldGFpblB0cjxXS1NlY3VyaXR5T3JpZ2luUmVmPiBv
cmlnaW47CiAgICAgV0tSZXRhaW5QdHI8V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVm
PiBnZW9sb2NhdGlvblJlcXVlc3Q7CiAgICAgV0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZj4gbm90aWZpY2F0aW9uUmVxdWVzdDsKKyAgICBXS1JldGFpblB0cjxX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWY+IHBvaW50ZXJMb2NrUmVxdWVzdDsKICAg
ICBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5cGU7CiAgICAgUXRXZWJTZWN1
cml0eU9yaWdpbiBzZWN1cml0eUluZm87CiAgICAgYm9vbCBhbGxvdzsKQEAgLTYyLDE2ICs2NCwx
NyBAQCBRV2ViUGVybWlzc2lvblJlcXVlc3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRl
KFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLAogCiBRV2ViUGVybWlzc2lvblJlcXVlc3QqIFFX
ZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJu
IG5ldyBRV2ViUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCAwLCByZXF1ZXN0LCBRV2ViUGVybWlz
c2lvblJlcXVlc3Q6Ok5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lv
blJlcXVlc3Qob3JpZ2luLCAwLCByZXF1ZXN0LCAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Ok5v
dGlmaWNhdGlvbik7CiB9CiAKLVFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Npb25S
ZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIGdlbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIG5vdGlmeQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRV2ViUGVybWlzc2lvblJlcXVl
c3Q6OlJlcXVlc3RUeXBlIHR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgUU9iamVjdCogcGFyZW50KQorUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2Vi
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIG5l
dyBRV2ViUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCAwLCAwLCByZXF1ZXN0LCBRV2ViUGVybWlz
c2lvblJlcXVlc3Q6OlBvaW50ZXJMb2NrKTsKK30KKworUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpR
V2ViUGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwg
V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbywgV0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiBub3RpZnksIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJl
ZiBwb2ludGVyLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5cGUsIFFPYmpl
Y3QqIHBhcmVudCkKICAgICA6IFFPYmplY3QocGFyZW50KQotICAgICwgZChuZXcgUVdlYlBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZShzZWN1cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHR5cGUpKQor
ICAgICwgZChuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShzZWN1cml0eU9yaWdpbiwg
Z2VvLCBub3RpZnksIHBvaW50ZXIsIHR5cGUpKQogewogfQogCkBAIC0xMDIsNiArMTA1LDE0IEBA
IHZvaWQgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpzZXRBbGxvdyhib29sIGFjY2VwdGVkKQogICAg
ICAgICAgICAgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkoZC0+bm90aWZpY2F0
aW9uUmVxdWVzdC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBvaW50
ZXJMb2NrOiB7CisgICAgICAgIGlmIChhY2NlcHRlZCkKKyAgICAgICAgICAgIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdEFsbG93KGQtPnBvaW50ZXJMb2NrUmVxdWVzdC5nZXQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdERl
bnkoZC0+cG9pbnRlckxvY2tSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAt
MTE4LDQgKzEyOSwzIEBAIFF0V2ViU2VjdXJpdHlPcmlnaW4qIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dDo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIHJldHVybiAmKGQtPnNlY3VyaXR5SW5mbyk7CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1p
c3Npb25yZXF1ZXN0X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBl
cm1pc3Npb25yZXF1ZXN0X3AuaAppbmRleCAwMDAyNTJiZGJlMWFiOGM1OGFhYTI5NzdhNzk5M2Q1
ZDM5MDY0OWE0Li42ZjY0ZWE2MDcxNWUxZWZhNDZkMjNhMTJlZDljOTVlYjg5YTdiMmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVx
dWVzdF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlz
c2lvbnJlcXVlc3RfcC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8UXRDb3JlL3FzaGFy
ZWRkYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1cml0eU9yaWdpbi5oPgogCiBjbGFzcyBRV2ViUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlOwpAQCAtNDEsMTEgKzQyLDEzIEBAIGNsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBRT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBlbnVtIFJlcXVlc3RUeXBlIHsKICAgICAgICAgR2VvbG9jYXRpb24sCi0gICAgICAgIE5vdGlm
aWNhdGlvbgorICAgICAgICBOb3RpZmljYXRpb24sCisgICAgICAgIFBvaW50ZXJMb2NrCiAgICAg
fTsKIAogICAgIHN0YXRpYyBRV2ViUGVybWlzc2lvblJlcXVlc3QqIGNyZWF0ZShXS1NlY3VyaXR5
T3JpZ2luUmVmLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYpOwogICAgIHN0YXRp
YyBRV2ViUGVybWlzc2lvblJlcXVlc3QqIGNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKKyAgICBzdGF0aWMgUVdlYlBlcm1pc3Np
b25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiwgV0tQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5RV2ViUGVybWlzc2lvblJlcXVlc3QoKTsK
IAogICAgIFJlcXVlc3RUeXBlIHR5cGUoKSBjb25zdDsKQEAgLTU3LDE1ICs2MCwxMCBAQCBwdWJs
aWMgUV9TTE9UUzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZTsKLSAgICBRV2ViUGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdp
blJlZiBzZWN1cml0eU9yaWdpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkgPSAwCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlw
ZSB0eXBlID0gR2VvbG9jYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2JqZWN0
KiBwYXJlbnQgPSAwKTsKKyAgICBRV2ViUGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdp
blJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdl
byA9IDAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMCwgV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0UmVmIHBvaW50ZXIgPSAwLCBRV2ViUGVybWlzc2lv
blJlcXVlc3Q6OlJlcXVlc3RUeXBlIHR5cGUgPSBHZW9sb2NhdGlvbiwgUU9iamVjdCogcGFyZW50
ID0gMCk7CiAKIHByaXZhdGU6CiAgICAgUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV2Vi
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlPiBkOwogfTsKIAotCiAjZW5kaWYgLy8gcXdlYnBlcm1p
c3Npb25yZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfcG9pbnRlcmxvY2sucW1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9wb2ludGVy
bG9jay5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBmN2JlMWRiNzFmMjUzYzE5MjUwNGJmNDM0ZWY3NDFlOGI0
ZTM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfcG9pbnRlcmxvY2sucW1sCkBAIC0wLDAgKzEsMTE1
IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJL
aXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAorCitXZWJWaWV3IHsKKyAg
ICBpZDogd2ViVmlldworICAgIHdpZHRoOiAyMDAKKyAgICBoZWlnaHQ6IDIwMAorCisgICAgcHJv
cGVydHkgYm9vbCBleHBlY3RlZFBlcm1pc3Npb246IGZhbHNlCisKKyAgICBTaWduYWxTcHkgewor
ICAgICAgICBpZDogcGVybWlzc2lvblNweQorICAgICAgICB0YXJnZXQ6IGV4cGVyaW1lbnRhbAor
ICAgICAgICBzaWduYWxOYW1lOiAicGVybWlzc2lvblJlcXVlc3RlZCIKKyAgICB9CisKKyAgICBT
aWduYWxTcHkgeworICAgICAgICBpZDogcG9pbnRlckxvY2tTcHkKKyAgICAgICAgdGFyZ2V0OiBl
eHBlcmltZW50YWwKKyAgICAgICAgc2lnbmFsTmFtZTogInBvaW50ZXJMb2NrUmVxdWVzdGVkIgor
ICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBwb2ludGVyVW5sb2NrU3B5Cisg
ICAgICAgIHRhcmdldDogZXhwZXJpbWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJwb2ludGVy
VW5sb2NrUmVxdWVzdGVkIgorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5vblBlcm1pc3Npb25S
ZXF1ZXN0ZWQ6IHsKKyAgICAgICAgLy8gTXVzdCBiZSBmYWxzZSBieSBkZWZhdWx0CisgICAgICAg
IGlmICghcGVybWlzc2lvbi5hbGxvdykgeworICAgICAgICAgICBwZXJtaXNzaW9uLmFsbG93ID0g
dHJ1ZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbDogcGVy
bWlzc2lvbiBtdXN0IGJlIHNldCB0byBmYWxzZSIpCisgICAgICAgIH0KKworICAgICAgICBpZiAo
cGVybWlzc2lvbi50eXBlID09IFBlcm1pc3Npb25SZXF1ZXN0LlBvaW50ZXJMb2NrKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmxvZygiUGVybWlzc2lvbiBpcyBQb2ludGVyTG9jayIpCisgICAgICAg
IH0KKyAgICB9CisKKyAgICBleHBlcmltZW50YWwub25Qb2ludGVyTG9ja1JlcXVlc3RlZDogewor
ICAgICAgICBjb25zb2xlLmxvZygiUG9pbnRlckxvY2sgaXMgcmVxdWVzdGVkIikKKyAgICB9CisK
KyAgICBleHBlcmltZW50YWwub25Qb2ludGVyVW5sb2NrUmVxdWVzdGVkOiB7CisgICAgICAgIGNv
bnNvbGUubG9nKCJQb2ludGVyIFVubG9jayBpcyByZXF1ZXN0ZWQiKQorICAgIH0KKworICAgIFRl
c3RDYXNlIHsKKyAgICAgICAgbmFtZTogIldlYlZpZXdQb2ludGVyTG9jayBSZXF1ZXN0IgorCisg
ICAgICAgIC8vIERlbGF5ZWQgd2luZG93U2hvd24gdG8gd29ya2Fyb3VuZCBwcm9ibGVtcyB3aXRo
IFF0NSBpbiBkZWJ1ZyBtb2RlLgorICAgICAgICB3aGVuOiBmYWxzZQorICAgICAgICBUaW1lciB7
CisgICAgICAgICAgICBydW5uaW5nOiBwYXJlbnQud2luZG93U2hvd24KKyAgICAgICAgICAgIHJl
cGVhdDogZmFsc2UKKyAgICAgICAgICAgIGludGVydmFsOiAxCisgICAgICAgICAgICBvblRyaWdn
ZXJlZDogcGFyZW50LndoZW4gPSB0cnVlCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBp
bml0KCkgeworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wb2ludGVyTG9ja1Jl
cXVlc3RXaXRoRm9yY2VkRXhpdCgpIHsKKyAgICAgICAgICAgIHBlcm1pc3Npb25TcHkuY2xlYXIo
KQorICAgICAgICAgICAgcG9pbnRlckxvY2tTcHkuY2xlYXIoKQorCisgICAgICAgICAgICB3ZWJW
aWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vcG9pbnRlcmxvY2sxLmh0bWwiKQor
ICAgICAgICAgICAgcGVybWlzc2lvblNweS53YWl0KCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2Nr
U3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShwZXJtaXNzaW9uU3B5LmNvdW50LCAxKQor
ICAgICAgICAgICAgY29tcGFyZShwb2ludGVyTG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAg
IGNvbXBhcmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIHRydWUpCisKKyAgICAgICAgICAg
IHBvaW50ZXJVbmxvY2tTcHkuY2xlYXIoKQorICAgICAgICAgICAgZXhwZXJpbWVudGFsLnVubG9j
a1BvaW50ZXIoKQorICAgICAgICAgICAgcG9pbnRlclVubG9ja1NweS53YWl0KCkKKyAgICAgICAg
ICAgIGNvbXBhcmUocG9pbnRlclVubG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBh
cmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIGZhbHNlKQorCisgICAgICAgICAgICAvLyBP
bmx5IHRoZSBQb2ludGVyTG9ja1JlcXVlc3RlZCBub3RpZmljYXRpb24gaXMgZXhwZWN0ZWQuCisg
ICAgICAgICAgICAvLyBBIHBlcm1pc3Npb24gbXVzdCBiZWVuIGNhY2hlZAorICAgICAgICAgICAg
cG9pbnRlckxvY2tTcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNv
bHZlZFVybCgiLi4vY29tbW9uL3BvaW50ZXJsb2NrMS5odG1sIikKKyAgICAgICAgICAgIHBvaW50
ZXJMb2NrU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShwb2ludGVyTG9ja1NweS5jb3Vu
dCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIHRy
dWUpCisKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHkuY2xlYXIoKQorICAgICAgICAgICAg
ZXhwZXJpbWVudGFsLnVubG9ja1BvaW50ZXIoKQorICAgICAgICAgICAgcG9pbnRlclVubG9ja1Nw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUocG9pbnRlclVubG9ja1NweS5jb3VudCwgMSkK
KyAgICAgICAgICAgIGNvbXBhcmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIGZhbHNlKQor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wb2ludGVyTG9ja1JlcXVlc3RXaXRo
U2VsZkV4aXQoKSB7CisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5LmNsZWFyKCkKKyAgICAgICAg
ICAgIHBvaW50ZXJMb2NrU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHBvaW50ZXJVbmxvY2tTcHku
Y2xlYXIoKQorCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9j
b21tb24vcG9pbnRlcmxvY2syLmh0bWwiKQorICAgICAgICAgICAgcGVybWlzc2lvblNweS53YWl0
KCkKKyAgICAgICAgICAgIHBvaW50ZXJMb2NrU3B5LndhaXQoKQorICAgICAgICAgICAgcG9pbnRl
clVubG9ja1NweS53YWl0KCkKKworICAgICAgICAgICAgY29tcGFyZShwZXJtaXNzaW9uU3B5LmNv
dW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShwb2ludGVyTG9ja1NweS5jb3VudCwgMSkKKyAg
ICAgICAgICAgIGNvbXBhcmUocG9pbnRlclVubG9ja1NweS5jb3VudCwgMSkKKyAgICAgICAgICAg
IGNvbXBhcmUoZXhwZXJpbWVudGFsLnBvaW50ZXJMb2NrZWQsIGZhbHNlKQorICAgICAgICB9Cisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2sxLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wb2ludGVybG9jazEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMmZhNmM3ZTg3NmUwNmZkNDUzNzcxZDM4NTkwYmRkMjNjNDE0NzU4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vcG9pbnRlcmxvY2sxLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPHRpdGxlPlBvaW50ZXIgTG9jayBSZXF1ZXN0IHRlc3QgKG5lZWRzIGZvcmNlZCB1bmxv
Y2spPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48
L2Rpdj4KKzwvZGl2PgorICA8c2NyaXB0PgorICAgIHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICB0YXJnZXRkaXYud2Via2l0UmVxdWVzdFBvaW50ZXJM
b2NrKCk7CisgIDwvc2NyaXB0PgorICBQb2ludGVyIExvY2sgUmVxdWVzdCBUZXN0IChuZWVkcyBm
b3JjZWQgdW5sb2NrKQorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2syLmh0
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1v
bi9wb2ludGVybG9jazIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTg4OTBhNWNkODQxYjA5ZWMxYmUxZGY1
NjM1NGU2OTdhYjA5OTRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcG9pbnRlcmxvY2syLmh0bWwKQEAgLTAs
MCArMSwxOSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHRpdGxlPlBvaW50ZXIgTG9jayBSZXF1ZXN0
IHRlc3QgKHVubG9ja3Mgc2VsZik8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8
ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisgIDxzY3JpcHQ+CisgICAgZG9jdW1lbnQu
b253ZWJraXRwb2ludGVybG9ja2NoYW5nZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKGRv
Y3VtZW50LndlYmtpdFBvaW50ZXJMb2NrRWxlbWVudCA9PSB0YXJnZXRkaXYpCisgICAgICAgICAg
ICBkb2N1bWVudC53ZWJraXRFeGl0UG9pbnRlckxvY2soKTsKKyAgICB9OworICAgIHRhcmdldGRp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICB0YXJnZXRkaXYud2Vi
a2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CisgIDwvc2NyaXB0PgorICBQb2ludGVyIExvY2sgUmVx
dWVzdCBUZXN0ICh1bmxvY2tzIHNlbGYpCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcyYTRjZTg1ZDQ2OTdkYzUx
Y2ZmYmEyNzkxYWQyNTViNzQ3NzRkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNz
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dC5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQ
YXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IFBvaW50ZXJMb2NrUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZShXZWJLaXQ6OlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkgKm1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0KG1hbmFnZXIpKTsKK30KKworUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdDo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCit7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coKQor
eworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXIt
PmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbih0cnVlKTsKKyAgICBtX21h
bmFnZXIgPSAwOworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q6OmRlbnko
KQoreworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFn
ZXItPmRpZFJlY2VpdmVQb2ludGVyTG9ja1Blcm1pc3Npb25EZWNpc2lvbihmYWxzZSk7CisgICAg
bV9tYW5hZ2VyID0gMDsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0Ojpp
bnZhbGlkYXRlKCkKK3sKKyAgICBtX21hbmFnZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwNTczMDc3Njc5ZDM3YzRiNDlh
NzA3NGU1NDZkNjAxMDBmMDM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdF9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk7
CisKK2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgVHlwZWRBUElP
YmplY3Q8QVBJT2JqZWN0OjpUeXBlUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdD4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+
IGNyZWF0ZShQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Kik7CisKKyAg
ICB2b2lkIGFsbG93KCk7CisgICAgdm9pZCBkZW55KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUo
KTsKKworcHJpdmF0ZToKKyAgICBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFBvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqKTsKKworICAgIFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gUE9JTlRFUl9MT0NLCisKKyNlbmRpZiAvLyBQb2ludGVy
TG9ja1Blcm1pc3Npb25SZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDA1Y2MxMWNkZGY0
YTk1MzIwNDQ2YzgwZTNiNjRmMTU3Mzk4OTAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVD
VFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1
ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkK
K3sKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpp
bnZhbGlkYXRlUmVxdWVzdCgpCit7CisgICAgaWYgKG1fcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAg
ICAgbV9wZW5kaW5nUmVxdWVzdC0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX3BlbmRpbmdSZXF1
ZXN0LmNsZWFyKCk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3Q+IFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZVJlcXVlc3QoKQoreworICAgIFJlZlB0cjxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0PiBy
ZXF1ZXN0ID0gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMpOworICAg
IG1fcGVuZGluZ1JlcXVlc3QgPSByZXF1ZXN0OworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2Uo
KTsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
aWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvdykKK3sKKyAg
ICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
cGVuZGluZ1JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9u
RGVjaXNpb24oYWxsb3cpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRl
ckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFjMmQxMzhlM2QzOTdjYjY1NTAwMTEyYWRjZjBjMzYyOWIzZWFlZjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNU
Uk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1
ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqKTsKKworICAgIHZvaWQgaW52YWxpZGF0
ZVJlcXVlc3QoKTsKKworICAgIFBhc3NSZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVz
dD4gY3JlYXRlUmVxdWVzdCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJt
aXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvdyk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFBvaW50
ZXJMb2NrUGVybWlzc2lvblJlcXVlc3Q+IG1fcGVuZGluZ1JlcXVlc3Q7CisgICAgV2ViUGFnZVBy
b3h5KiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBP
SU5URVJfTE9DSworCisjZW5kaWYgLy8gUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTQxYmIzMTQ4NThlMmNlZTYxNzZlYmY2OWRmNGFlNmZhOTk2NmRhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxF
Q1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5PiBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFn
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5
KHBhZ2UpKTsKK30KKworV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OldlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAg
ICwgbV93ZWJWaWV3KDApCisgICAgLCBtX2lzUG9pbnRlckxvY2tlZChmYWxzZSkKK3sKKyAgICBp
ZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCB0aGlzKTsKK30KKworV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHk6On5XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViUG9p
bnRlckxvY2tNYW5hZ2VyUHJveHk6OnNldFdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7Cit9CisKK2Jvb2wgV2ViUG9pbnRlckxvY2tN
YW5hZ2VyUHJveHk6OmlzUG9pbnRlckxvY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNQ
b2ludGVyTG9ja2VkOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpyZXF1
ZXN0UG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5pc1ZhbGlkKCkp
CisgICAgICAgIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJM
b2NrTWFuYWdlclByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fcGFn
ZSAmJiBtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
b2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NTA3
ODlhZWQ0YzEwZTVhYzk1ZjQ2MTAyOGZhN2RlY2E0Mzk3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2Vy
UHJveHkuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVs
ZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1Mg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKwor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIFFRdWlja1dlYlZpZXcgUGxhdGZvcm1XZWJW
aWV3OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk+LCBw
dWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSop
OworICAgIHZpcnR1YWwgfldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5KCk7CisKKyAgICB2b2lk
IHNldFdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3Kik7CisKKyAgICBib29sIGlzUG9pbnRlckxvY2tl
ZCgpIGNvbnN0OworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygp
OworCisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCk7CisKK3Byb3RlY3RlZDoKKworICAgIGV4cGxpY2l0IFdlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSopOworCisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7
CisgICAgUGxhdGZvcm1XZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgYm9vbCBtX2lzUG9pbnRlckxv
Y2tlZDsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisKKyNlbmRpZiAvLyBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eV9oCisKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2Nr
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFmMTBmZDliMzA1ODU4ZDc2MDcwNTIzMjE0NGMyZTZiOTBhNTdiOGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQg
KEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKK21lc3NhZ2VzIC0+IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5IHsKKyAgICBSZXF1
ZXN0UG9pbnRlckxvY2soKQorICAgIFJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jOWNjZTc0MDBiOTZiY2ZhNzZmMzlhM2VmZGYwNDY4N2ZjOWFlZTA0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExH
IEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIKKworI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2lu
Y2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY29uc3QgY2hhciogV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
clByb3h5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyUHJveHkiOworfQorCitQYXNzUmVmUHRyPFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvbk1hbmFnZXJQcm94eT4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eShjb250ZXh0KSk7Cit9CisKK1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3Vw
cGxlbWVudChjb250ZXh0KQoreworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXIgKnByb3ZpZGVyKQoreworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92
aWRlcik7CisgICAgbV9wcm92aWRlci5hZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRo
aXMpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6Y29u
dGV4dERlc3Ryb3llZCgpCit7CisgICAgbV9wcm92aWRlci5yZW1vdmVQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyKHRoaXMpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCit7CisgICAgbV9w
cm92aWRlci5yZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRoaXMpOworfQorCit2
b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6cmVmKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkK
K3sKKyAgICBBUElPYmplY3Q6OmRlcmVmKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0ZUNvcHlPZlBvaW50ZXJMb2NrUGVybWlzc2lvbnMo
SGFzaE1hcDxTdHJpbmcsIGJvb2w+JiBwZXJtaXNzaW9ucykKK3sKKyAgICBSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4ga25vd25QZXJtaXNzaW9ucyA9IG1fcHJvdmlkZXIucG9pbnRlckxvY2tQ
ZXJtaXNzaW9ucygpOworCisgICAgaWYgKCFrbm93blBlcm1pc3Npb25zKQorICAgICAgICByZXR1
cm47CisKKyAgICBwZXJtaXNzaW9ucy5jbGVhcigpOworICAgIFJlZlB0cjxJbW11dGFibGVBcnJh
eT4ga25vd25PcmlnaW5zID0ga25vd25QZXJtaXNzaW9ucy0+a2V5cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga25vd25PcmlnaW5zLT5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJT
dHJpbmcqIG9yaWdpbiA9IGtub3duT3JpZ2lucy0+YXQ8V2ViU3RyaW5nPihpKTsKKyAgICAgICAg
cGVybWlzc2lvbnMuc2V0KG9yaWdpbi0+c3RyaW5nKCksIGtub3duUGVybWlzc2lvbnMtPmdldDxX
ZWJCb29sZWFuPihvcmlnaW4tPnN0cmluZygpKS0+dmFsdWUoKSk7CisgICAgfQorfQorCit2b2lk
IFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVQ
b2ludGVyTG9ja1BvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFs
bG93ZWQpCit7CisgICAgaWYgKCFjb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNv
bnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyOjpEaWRVcGRhdGVQb2ludGVyTG9ja0RlY2lzaW9uKG9yaWdpbi0+dG9TdHJp
bmcoKSwgYWxsb3dlZCkpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1BvbGljaWVzKEltbXV0YWJsZUFy
cmF5KiBvcmlnaW5zKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzaXplX3Qgc2l6ZSA9IG9yaWdpbnMtPnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3M7CisgICAgb3Jp
Z2luU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG9yaWdpblN0cmluZ3MuYXBwZW5kKG9y
aWdpbnMtPmF0PFdlYlNlY3VyaXR5T3JpZ2luPihpKS0+dG9TdHJpbmcoKSk7CisKKyAgICBjb250
ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcjo6RGlkUmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMob3JpZ2luU3RyaW5ncykp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVhMWQ1ZDIzNTJmZTkzNTVhM2ZkZWViM2U1YmUwNGJhMjgyNGNk
ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxv
Y2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHlfaAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCisj
aW5jbHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3MgV2ViQ29udGV4dDsKK2Ns
YXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUG9pbnRl
ckxvY2tQZXJtaXNzaW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+IGNy
ZWF0ZShXZWJDb250ZXh0Kik7CisKKyAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKik7CisKKyAgICB2b2lkIHBvcHVsYXRlQ29w
eU9mUG9pbnRlckxvY2tQZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4mKTsKKworICAg
IHZvaWQgcHJvdmlkZXJEaWRVcGRhdGVQb2ludGVyTG9ja1BvbGljeShjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiosIGJvb2wpOworICAgIHZvaWQgcHJvdmlkZXJEaWRSZW1vdmVQb2ludGVyTG9ja1Bv
bGljaWVzKEltbXV0YWJsZUFycmF5KiBvcmlnaW5zKTsKKworICAgIHVzaW5nIEFQSU9iamVjdDo6
cmVmOworICAgIHVzaW5nIEFQSU9iamVjdDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKKwor
ICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkgT1ZFUlJJREU7CisKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ciBtX3Byb3ZpZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
T0lOVEVSX0xPQ0sKKworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJQ
cm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MDM2YzA4NGUyNjRjMDg0ZmNhYmZkNjI5YTljYzUyM2E0ZWZhOTY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBFTEVD
VFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVk
ZSAiTXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJp
dHlPcmlnaW4uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUHJvdmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUG9p
bnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5KiBtYW5hZ2VyKQoreworICAgIGlmIChtX2Ns
aWVudC5hZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX2NsaWVudC5h
ZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKHRvQVBJKG1hbmFnZXIpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6
cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcihXZWJQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCit7CisgICAgaWYgKG1fY2xpZW50LnJlbW92ZVBvaW50
ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fY2xpZW50LnJlbW92ZVBvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXIodG9BUEkobWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8p
OworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYlBvaW50ZXJMb2NrUGVy
bWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zKCkKK3sKKyAgICBpZiAobV9j
bGllbnQucG9pbnRlckxvY2tQZXJtaXNzaW9ucykKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKHRv
SW1wbChtX2NsaWVudC5wb2ludGVyTG9ja1Blcm1pc3Npb25zKG1fY2xpZW50LmNsaWVudEluZm8p
KSk7CisKKyAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODll
YTRmNTQ0ZDdjNzY1NzQwNmU2NjE2ZTZmNDllN2RjOWZmYWVkOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVD
VFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJf
aAorI2RlZmluZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
SW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2Vi
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclByb3h5OworCitjbGFzcyBXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25Qcm92aWRlciA6IHB1YmxpYyBBUElDbGllbnQ8V0tQb2ludGVyTG9ja1Blcm1p
c3Npb25Qcm92aWRlciwga1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVy
c2lvbj4geworcHVibGljOgorICAgIHZvaWQgYWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
cihXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkqKTsKKyAgICB2b2lkIHJlbW92
ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIoV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclByb3h5Kik7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwb2ludGVy
TG9ja1Blcm1pc3Npb25zKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFBPSU5URVJfTE9DSworCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BvaW50ZXJMb2Nr
L3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrL3F0L1dlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5UXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhY2VhM2Q0OTk2NzhlY2Q3MzZjYzU5NWE4M2E1ODJkZDgwOTk1OTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUG9pbnRlckxvY2svcXQvV2Vi
UG9pbnRlckxvY2tNYW5hZ2VyUHJveHlRdC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RS
T05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2Nr
TWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisKKyNpZiBIQVZFKFFUUVVJQ0spCisjaW5jbHVkZSAicXF1aWNrd2Vi
dmlld19wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKyNlbmRpZgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUG9p
bnRlckxvY2tNYW5hZ2VyUHJveHk6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisjaWYgSEFW
RShRVFFVSUNLKQorICAgIGlmIChtX3dlYlZpZXcpCisgICAgICAgIGVtaXQgbV93ZWJWaWV3LT5l
eHBlcmltZW50YWwoKS0+cG9pbnRlckxvY2tSZXF1ZXN0ZWQoKTsKKyNlbmRpZgorCisgICAgbV9p
c1BvaW50ZXJMb2NrZWQgPSB0cnVlOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZEFjcXVp
cmVQb2ludGVyTG9jaygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQb2ludGVy
TG9ja01hbmFnZXJQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBtX2lz
UG9pbnRlckxvY2tlZCA9IGZhbHNlOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZE5vdEFj
cXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyNpZiBIQVZFKFFU
UVVJQ0spCisgICAgaWYgKG1fd2ViVmlldykKKyAgICAgICAgZW1pdCBtX3dlYlZpZXctPmV4cGVy
aW1lbnRhbCgpLT5wb2ludGVyVW5sb2NrUmVxdWVzdGVkKCk7CisjZW5kaWYKKworICAgIG1faXNQ
b2ludGVyTG9ja2VkID0gZmFsc2U7CisgICAgaWYgIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6OkRpZExvc2VQ
b2ludGVyTG9jaygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAzMWVkMjk5M2I4YWM3MTYyZGFiMDU1NTI5N2Fi
YjdhYzNjZTM4ZDFiLi5hN2U4YjYxMWViYjRiY2Y1MDhhMDExYWM0OTAwOWMwZTY0MzIxZWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC00NywxMCArNDcsMTMg
QEAKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKLSNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCisj
aW5jbHVkZSAiV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgiCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHkuaCIK
KyNlbmRpZgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
QEAgLTE4MCw2ICsxODMsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBw
cm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJMRShO
RVRXT1JLX0lORk8pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eT4oKTsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgYWRkU3VwcGxlbWVu
dDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+KCk7CisjZW5kaWYKIAogICAg
IGNvbnRleHRzKCkuYXBwZW5kKHRoaXMpOwogCkBAIC01NDcsNiArNTUzLDEwIEBAIFdlYlByb2Nl
c3NQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgc3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnBvcHVsYXRlQ29weU9mTm90aWZpY2F0
aW9uUGVybWlzc2lvbnMocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgc3VwcGxlbWVudDxXZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyUHJveHk+KCktPnBvcHVsYXRlQ29weU9mUG9pbnRlckxvY2tQ
ZXJtaXNzaW9ucyhwYXJhbWV0ZXJzLnBvaW50ZXJMb2NrUGVybWlzc2lvbnMpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHBhcmFtZXRlcnMudXNlc05ldHdvcmtQ
cm9jZXNzID0gbV91c2VzTmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGQyMjFkNDE3NjRlODZiZjAzNDY2NWYzNzBm
OWYzOTk3ZDNmYTQ4YS4uNWNlMTU3Y2FlMDNhMzkyMGMyNzVmMTIwYmQ5MjE2NWVlZjlmNzM5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc0LDYgKzc0
LDEwIEBACiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTI0MSw2ICsyNDUsOSBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gcAogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkK
ICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIodGhpcykKICAgICAs
IG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKHRoaXMpCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICAsIG1fcG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIodGhpcykKKyNlbmRpZgogICAgICwgbV9lc3RpbWF0ZWRQcm9ncmVzcygwKQogICAgICwgbV9p
c0luV2luZG93KG1fcGFnZUNsaWVudC0+aXNWaWV3SW5XaW5kb3coKSkKICAgICAsIG1faXNWaXNp
YmxlKG1fcGFnZUNsaWVudC0+aXNWaWV3VmlzaWJsZSgpKQpAQCAtMzM1LDYgKzM0Miw5IEBAIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBhc3NSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1f
ZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUodGhp
cyk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIG1fcG9pbnRlckxvY2tN
YW5hZ2VyID0gV2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyNlbmRp
ZgogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAgICAgbV92aWJyYXRpb24gPSBXZWJWaWJyYXRpb25Q
cm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCkBAIC00ODcsNyArNDk3LDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBt
X3BvaW50ZXJMb2NrTWFuYWdlciA9IFdlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5OjpjcmVhdGUo
dGhpcyk7CisjZW5kaWYKICAgICBpbml0aWFsaXplV2ViUGFnZSgpOwogCiAgICAgbV9wYWdlQ2xp
ZW50LT5kaWRSZWxhdW5jaFByb2Nlc3MoKTsKQEAgLTMwNDEsNiArMzA1MywxMyBAQCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK1dlYlBvaW50ZXJMb2NrTWFuYWdl
clByb3h5KiBXZWJQYWdlUHJveHk6OnBvaW50ZXJMb2NrTWFuYWdlcigpCit7CisgICAgcmV0dXJu
IG1fcG9pbnRlckxvY2tNYW5hZ2VyLmdldCgpOworfQorI2VuZGlmCisKIC8vIEJhY2tGb3J3YXJk
TGlzdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0
ZW1JRCkKQEAgLTM4OTAsNiArMzkwOSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAKICAgICBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRl
UmVxdWVzdCgpOworI2VuZGlmCisKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIAogICAgIG1f
bWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IGZhbHNlOwpAQCAtNDA5OSw2ICs0MTIy
LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluCiAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsK
IH0KIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFBvaW50ZXJMb2NrUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAg
ICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZyk7CisgICAgUmVmUHRyPFBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBtX3BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNyZWF0ZVJlcXVlc3QoKTsKKworICAgIGlmICghbV91aUNsaWVudC5kZWNpZGVQb2xp
Y3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KHRoaXMsIG9yaWdpbi5nZXQoKSwgcmVx
dWVzdC5nZXQoKSkpCisgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKK30KKyNlbmRpZiAvLyBQT0lO
VEVSX0xPQ0sKKwogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNv
bnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAg
ICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5PigpLT5zaG93KHRoaXMsIHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRp
ciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNGRiNjJlOTFhMjJhODMxNjJhNjIxYzUxYzRkMjdkZjA2ZGE5
YzU0MC4uMzZkMzM2N2JhMWQ1NDRlODgyZjUyOTA2N2FkOTQ0ZWU5MThmY2E0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzUsNiArMzUsOSBAQAogI2luY2x1
ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIuaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS0Jh
c2UuaCIKQEAgLTE0Niw2ICsxNDksNyBAQCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3Mg
V2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBj
bGFzcyBXZWJQYWdlR3JvdXA7CitjbGFzcyBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eTsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJXaGVl
bEV2ZW50OwpAQCAtMjY0LDYgKzI2OCwxMCBAQCBwdWJsaWM6CiAgICAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eSogZnVsbFNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXJQcm94eSogcG9pbnRlckxvY2tN
YW5hZ2VyKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQg
aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50
Kik7CiAjZW5kaWYKQEAgLTg4MCw2ICs4ODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwog
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2Nr
UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZyk7CisjZW5kaWYKKwogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRS
ZWFkeSgpOwpAQCAtMTA4OCw2ICsxMTAwLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk+IG1fZnVsbFNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUmVmUHRyPFdlYlBvaW50ZXJMb2NrTWFuYWdlclBy
b3h5PiBtX3BvaW50ZXJMb2NrTWFuYWdlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJQlJBVElP
TikKICAgICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IG1fdmlicmF0aW9uOwogI2VuZGlmCkBA
IC0xMTE5LDYgKzExMzUsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogICAgIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKKyNlbmRpZiAvLyBQT0lO
VEVSX0xPQ0sKIAogICAgIGRvdWJsZSBtX2VzdGltYXRlZFByb2dyZXNzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4YzFk
ZTkwOGNjZDY4YzlmNTJkYzAwMGVhOTYxYzUxM2UyNzUxMmMzLi4zMTcxNmRiYWEyMTViNDFhMDUz
MzYwYzlmODE4N2I4YmZjYzhhNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyNCw2ICsyMjQsMTAgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90
PiBub3RpZmljYXRpb25JRHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBu
b3RpZmljYXRpb25JRCkKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgUmVxdWVzdFBv
aW50ZXJMb2NrUGVybWlzc2lvbihXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQorI2VuZGlm
CisKICAgICAjIFNwZWxsaW5nIGFuZCBncmFtbWFyIG1lc3NhZ2VzCiAjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykgIAogICAgIENoZWNrVGV4dE9mUGFyYWdyYXBoKFdURjo6U3RyaW5nIHRl
eHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpIC0+IChWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5j
cHAKaW5kZXggYmZhNGQ4ZTQzZTdlYjRmZjY3NTNhY2IzZWJmYzdjMzgxZmIyNDExYy4uZWJjNmJi
Yzk0OWVhNTI2NDVlNmJkYzA3MGNkYzczMWJkZGZhMjFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVUlDbGllbnQuY3BwCkBAIC0zMSw2ICszMSw5IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYk51bWJlci5oIgpAQCAtMzY1LDYgKzM2OCwxNSBA
QCBib29sIFdlYlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdl
YlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpCit7CisgICAgaWYgKCFtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShwZXJtaXNz
aW9uUmVxdWVzdCksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiB0cnVlOworfQor
CiBmbG9hdCBXZWJVSUNsaWVudDo6aGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5oZWFkZXJIZWlnaHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCmluZGV4IDk4MTNmNTc1NGM4MTNiZjE2
OWM2YjNjOTI4YjhlNWFhNWZiYTQzYjcuLjI1MWFkOWUwNmVkMTExODcwN2JiMmUxZjJlZDViOWM2
Yzk4OGJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCkBAIC00OSw2
ICs0OSw3IEBAIGNsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50OwogY2xhc3MgTmF0aXZlV2ViV2hlZWxFdmVudDsKIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkRhdGE7
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTAzLDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBh
bmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKTsKICAgICBi
b29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5Kik7CiAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiosIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Kik7CisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSosIFdlYlNlY3VyaXR5T3Jp
Z2luKiwgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdCopOwogCiAgICAgLy8gUHJpbnRpbmcu
CiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCmluZGV4IGU3OGI4ZjYyZjI3MDM0YzgwYzM0YmE4NmIwNDEwNGE3OWU3YTA2ZjMuLjFi
ZjMxZmViZGNlMGQ2MmYyYWVhMmUyMzE5OWNlZDdmZmQ2NjI0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDYz
LDYgKzQ2Myw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAg
ICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkCisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvclBvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3QKICAgICB9OwogCiAgICAgaW5zcGVjdG9yUGFnZS0+aW5pdGlhbGl6ZVVJ
Q2xpZW50KCZ1aUNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXREaWFsb2dSdW5uZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxv
Z1J1bm5lci5oCmluZGV4IGI3MDA0NDA3NjgzNGUyOWUzYmE1OTNmNzljNTAzMDM4OWRmNTk5NTYu
LmEzYjA0YTFjY2FkZmNlY2E1ZjNlNGIyNTU5YzdlMGVkZTk3YjVmMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oCkBAIC01MCw3ICs1MCw2IEBAIHB1
YmxpYzoKICAgICBib29sIGluaXRGb3JQcm94eUF1dGhlbnRpY2F0aW9uKGNvbnN0IFFTdHJpbmcm
IGhvc3RuYW1lLCB1aW50MTZfdCBwb3J0LCBjb25zdCBRU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFt
ZSk7CiAgICAgYm9vbCBpbml0Rm9yRmlsZVBpY2tlcihjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0
ZWRGaWxlcywgYm9vbCBhbGxvd011bHRpcGxlKTsKICAgICBib29sIGluaXRGb3JEYXRhYmFzZVF1
b3RhRGlhbG9nKGNvbnN0IFFTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgUVN0cmluZyYgZGlz
cGxheU5hbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIHF1aW50NjQgY3VycmVudFF1b3RhLCBxdWlu
dDY0IGN1cnJlbnRPcmlnaW5Vc2FnZSwgcXVpbnQ2NCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgcXVp
bnQ2NCBleHBlY3RlZFVzYWdlKTsKLQogICAgIHZvaWQgcnVuKCk7CiAKICAgICBRUXVpY2tJdGVt
KiBkaWFsb2coKSBjb25zdCB7IHJldHVybiBtX2RpYWxvZy5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKaW5kZXggYWY4ODQy
M2M2ZGEwZWQ0ZDlhYzUzZWU4M2NhMDZjNDA3MzhiZDg3OC4uYjIzZTUyNmQ1ZTc5ODc3OWFiNjY0
NzU4NjJjNGM0OWYyOWIyZDllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFF0V2ViUGFnZVVJQ2xp
ZW50OjpRdFdlYlBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyog
d2ViVmlldykKICAgICB1aUNsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEgPSBleGNlZWRlZERh
dGFiYXNlUXVvdGE7CiAgICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCA9IHBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiAg
ICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qg
PSBwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICB1aUNsaWVudC5k
ZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0ID0gcG9saWN5Rm9yUG9p
bnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFn
ZVJlZiwgJnVpQ2xpZW50KTsKIH0KIApAQCAtMTczLDUgKzE3NCwxMyBAQCB2b2lkIFF0V2ViUGFn
ZVVJQ2xpZW50Ojpwb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VS
ZWYgcGFnZSwgVwogICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnBlcm1pc3Np
b25SZXF1ZXN0KHJlcSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAordm9pZCBRdFdlYlBh
Z2VVSUNsaWVudDo6cG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VS
ZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlm
ICghcmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOwogCisgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0
KiByZXEgPSBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIHJlcXVlc3QpOwor
ICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnBlcm1pc3Npb25SZXF1ZXN0KHJl
cSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaAppbmRleCBlOGFhYTgyNmI3ZGQ2MGE2ODFiZDc0
OGVkMzE2YmYyNmUwZGQ5MDY4Li44NGE0MzlkMTcwOTkxYTQyMzAyZTg5MjkzMmU0M2U5MzQxNjVm
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuaApAQCAtNjAsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB1bnNpZ25lZCBsb25n
IGxvbmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1
cml0eU9yaWdpblJlZiwgV0tTdHJpbmdSZWYgZGF0YWJhc2VOYW1lLCBXS1N0cmluZ1JlZiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgcG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2
b2lkIHBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tT
ZWN1cml0eU9yaWdpblJlZiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29u
c3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIHBvbGljeUZvclBvaW50ZXJMb2NrUGVybWlzc2lv
blJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1BvaW50ZXJMb2NrUGVy
bWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKIAogICAgIFFRdWlja1dlYlZpZXcqIG1f
d2ViVmlldzsKICAgICBRVXJsIG1fbGFzdEhvdmVyZWRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnByaSBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCmluZGV4IGEx
ZGEwNDUxYWM1YWY4ZjFmMjNkMTdkNDNjMDVkYWU5MTk5NjZkOGYuLmVkOTNmMWI4NGQ3MzJhNjcx
MWNlZmY5OTA3ZjRkNzJmYjQ5Yzg5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCkBAIC0zOSw2ICszOSw3IEBA
IElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9MYXVuY2hlciBcCiAgICAgJCRT
T1VSQ0VfRElSL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKKyAgICAkJFNPVVJDRV9ESVIvVUlQ
cm9jZXNzL1BvaW50ZXJMb2NrIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL1BsdWdpbnMg
XAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvU3RvcmFnZSBcCiAgICAgJCRTT1VSQ0VfRElS
L1VJUHJvY2Vzcy9xdCBcCkBAIC01OSw2ICs2MCw3IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jayBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYlByb2Nlc3MvU3RvcmFnZSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGQ0NWU0OGU4
OGRhYzE0N2MwYWZiZWNjNzY1MWEwNDZmMjM4M2FjMjAuLmM4MTNkOGVhYmIyMDQ0OTI0YWIyODEz
NDkwMTMxMjFmOGYyMGNlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQx
LDYgKzQxLDkgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2lmIGRlZmluZWQoRU5BQkxFX1BP
SU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSworI2luY2x1ZGUgIldlYlBvaW50ZXJM
b2NrTWFuYWdlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2ViUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJXZWJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKQEAgLTUxNiwz
ICs1MTksNTYgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTdG9wRXh0ZW5kaW5nSW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGEKIHsKICAgICB0b0ltcGwocGFnZVJl
ZiktPnN0b3BFeHRlbmRpbmdJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKHRva2VuKTsK
IH0KKwordm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2ludGVyTG9ja0NsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQqIHdrQ2xpZW50KQorewor
I2lmIGRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykgJiYgRU5BQkxFX1BPSU5URVJfTE9DSwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9pbnRlckxvY2tD
bGllbnQod2tDbGllbnQpOworI2VuZGlmCit9CisKK2Jvb2wgV0tCdW5kbGVQYWdlU3RhcnRSZXF1
ZXN0UG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgZGVmaW5lZChF
TkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9MT0NLCisgICAgcmV0dXJuIHRv
SW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnN0YXJ0UmVxdWVzdFBvaW50ZXJM
b2NrKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdLQnVu
ZGxlUGFnZVN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYp
Cit7CisjaWYgZGVmaW5lZChFTkFCTEVfUE9JTlRFUl9MT0NLKSAmJiBFTkFCTEVfUE9JTlRFUl9M
T0NLCisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnN0
YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKKyNlbmRpZgorfQorCitib29sIFdLQnVuZGxlUGFn
ZUlzUG9pbnRlckxvY2tlZChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyNpZiBkZWZpbmVk
KEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sKKyAgICByZXR1cm4g
dG9JbXBsKHBhZ2VSZWYpLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdLQnVuZGxlUGFn
ZURpZEFjcXVpcmVQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyNpZiBk
ZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sKKyAgICB0
b0ltcGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5kaWRBY3F1aXJlUG9pbnRlckxv
Y2soKTsKKyNlbmRpZgorfQorCit2b2lkIFdLQnVuZGxlUGFnZURpZE5vdEFjcXVpcmVQb2ludGVy
TG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lO
VEVSX0xPQ0spICYmIEVOQUJMRV9QT0lOVEVSX0xPQ0sKKyAgICB0b0ltcGwocGFnZVJlZiktPnBv
aW50ZXJMb2NrTWFuYWdlcigpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyNlbmRpZgor
fQorCit2b2lkIFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZikKK3sKKyNpZiBkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICYmIEVOQUJMRV9Q
T0lOVEVSX0xPQ0sKKyAgICB0b0ltcGwocGFnZVJlZiktPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5k
aWRMb3NlUG9pbnRlckxvY2soKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
aW5kZXggMTAzZjQ3OGExMjM1YzhkNzQ5YzI0NmQ0MDZiODAyYTg5ZTdmOTUxMS4uZTRiMjU2NDZk
Zjc4NTlhZWU3MzY5NzUxZWYxNTQzNTJhYjg4NmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5oCkBAIC00MDMsNiArNDAzLDI0IEBAIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUZ1bGxT
Y3JlZW5DbGllbnQgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDsKIAogZW51bSB7IGtXS0J1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Q3VycmVudFZlcnNpb24gPSAxIH07CiAKKy8vIFBvaW50
ZXIgTG9jayBjbGllbnQKK3R5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVN1cHBvcnRzUG9pbnRl
ckxvY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK3R5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFn
ZVJlcXVlc3RQb2ludGVyTG9jaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwordHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KTsKKworc3RydWN0IFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50IHsKKyAgICBpbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworCisgICAgLy8gVmVyc2lv
biAwOgorICAgIFdLQnVuZGxlUGFnZVN1cHBvcnRzUG9pbnRlckxvY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNQb2ludGVyTG9jazsKKyAgICBXS0J1bmRsZVBh
Z2VSZXF1ZXN0UG9pbnRlckxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RQb2ludGVyTG9jazsKKyAgICBXS0J1bmRsZVBhZ2VSZXF1ZXN0UG9pbnRlclVubG9j
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RQb2ludGVyVW5sb2Nr
OworfTsKK3R5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50IFdLQnVu
ZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50OworCitlbnVtIHsga1dLQnVuZGxlUGFnZVBvaW50ZXJM
b2NrQ2xpZW50Q3VycmVudFZlcnNpb24gPSAwIH07CisKIC8vIE1lc3NhZ2VUcmFjZSBjbGllbnQK
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2FsbGJhY2spKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZXNj
cmlwdGlvbiwgV0tTdHJpbmdSZWYgc3VjY2VzcywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAK
QEAgLTQzMSw2ICs0NDksNyBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVBvbAogV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnZVVJQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0RnVs
bFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCogY2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNl
dFBvaW50ZXJMb2NrQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VQb2lu
dGVyTG9ja0NsaWVudCogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLQnVuZGxlUGFnZUdyb3VwUmVm
IFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBP
UlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UpOwpAQCAtNDcyLDYgKzQ5MSwxMyBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheQog
CiBXS19FWFBPUlQgV0tCdW5kbGVJbnNwZWN0b3JSZWYgV0tCdW5kbGVQYWdlR2V0SW5zcGVjdG9y
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlU3Rh
cnRSZXF1ZXN0UG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVQYWdlU3RhcnRSZXF1ZXN0UG9pbnRlclVubG9jayhXS0J1bmRsZVBhZ2VSZWYg
cGFnZSk7CitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VJc1BvaW50ZXJMb2NrZWQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBv
aW50ZXJMb2NrKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEaWRMb3NlUG9pbnRlckxvY2soV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCBlZjRhODJmNmU1ZDA3ZmNmN2Q5ODc2NTg2MDU0NWU5ZjIxZGVhMzZhLi5iMWFk
ODM2YmJjYzMyYTM3MmE3M2Y1OGFmZjg2MDM2OGJkYjU5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VDb2RlcnMuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2Vu
ZGlmCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKQEAgLTY0OSw2ICs2NTIs
MjYgQEAgUGFzc1JlZlB0cjxXZWJEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZy
b21VaW50OEFycmF5KEpTQ29udGV4dFJlZiBjb24KICAgICByZXR1cm4gV2ViRGF0YTo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihhcnJheURhdGEtPmJhc2VBZGRyZXNzKCkpLCBh
cnJheURhdGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBv
aW50ZXJMb2NrUGVybWlzc2lvbihXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0
cmluZywgYm9vbCBhbGxvd2VkKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgcGFn
ZS0+cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+c2V0UGVybWlzc2lvbkxl
dmVsRm9yVGVzdGluZyhvcmlnaW5TdHJpbmcsIGFsbG93ZWQpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKG9yaWdpblN0cmluZyk7CisgICAgVU5VU0VE
X1BBUkFNKGFsbG93ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92
ZUFsbFBvaW50ZXJMb2NrUGVybWlzc2lvbnMoV2ViUGFnZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIHBhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCktPnJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZygpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGFnZSk7CisjZW5kaWYKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VGFi
S2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKFdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBwYWdlLT5jb3JlUGFnZSgpLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoZW5h
YmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMzdkNDFjMmQyMjE4Y2M1N2M4NzkwMzVjNDAy
ZWVmNDQ5ZTI2MTcyYi4uMWYzMWYyYmFiM2EzMGQyZjljN2U2YWQ5OTZmMjlkOTg0ODU4Y2Y4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50
NjRfdCB3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIFBh
c3NSZWZQdHI8V2ViRGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZik7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1Blcm1pc3Npb24oV2ViUGFn
ZSosIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZvaWQgcmVtb3ZlQWxsUG9pbnRlckxvY2tQ
ZXJtaXNzaW9ucyhXZWJQYWdlKik7CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAgICB2b2lk
IGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVB
cnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGll
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUxYmZmOWNkMmFkODFhMjI4ODUzMjJjZWQxOWNjOWNiYmRiOGQz
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmNwcApAQCAtMCwwICsx
LDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQ
b2ludGVyTG9ja01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VQb2lu
dGVyTG9ja0NsaWVudDo6c3VwcG9ydHNQb2ludGVyTG9jayhXZWJQYWdlICpwYWdlKQoreworICAg
IGlmIChtX2NsaWVudC5yZXF1ZXN0UG9pbnRlckxvY2spCisgICAgICAgIHJldHVybiBtX2NsaWVu
dC5zdXBwb3J0c1BvaW50ZXJMb2NrKHRvQVBJKHBhZ2UpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudDo6cmVxdWVzdFBvaW50
ZXJMb2NrKFdlYlBhZ2UgKnBhZ2UpCit7CisgICAgaWYgKG1fY2xpZW50LnJlcXVlc3RQb2ludGVy
TG9jaykKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnJlcXVlc3RQb2ludGVyTG9jayh0b0FQSShw
YWdlKSk7CisgICAgcmV0dXJuIHBhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zdGFydFJlcXVl
c3RQb2ludGVyTG9jaygpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2Nr
Q2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayhXZWJQYWdlICpwYWdlKQoreworICAgIGlmICht
X2NsaWVudC5yZXF1ZXN0UG9pbnRlclVubG9jaykKKyAgICAgICAgbV9jbGllbnQucmVxdWVzdFBv
aW50ZXJVbmxvY2sodG9BUEkocGFnZSkpOworICAgIGVsc2UKKyAgICAgICAgcGFnZS0+cG9pbnRl
ckxvY2tNYW5hZ2VyKCktPnN0YXJ0UmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzE0ZTIzZjE0MzIzOTE0OTA4ZDEzNWNiZTE0Yjc4ZTgzNjAyN2QwZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBMRyBF
TEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxl
UGFnZVBvaW50ZXJMb2NrQ2xpZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlUG9pbnRl
ckxvY2tDbGllbnRfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIkFQ
SUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIldlYkV2ZW50
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRWxlbWVudDsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlOworCitjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVu
dCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQsIGtXS0J1
bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAg
Ym9vbCBzdXBwb3J0c1BvaW50ZXJMb2NrKFdlYlBhZ2UqKTsKKyAgICBib29sIHJlcXVlc3RQb2lu
dGVyTG9jayhXZWJQYWdlKik7CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jayhXZWJQYWdl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZVBhZ2VQb2ludGVyTG9ja0NsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1Bv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZhNGU5YThhNmY4NjM1NWQ4MDYxMWM2ZTg5MDBjZGQ3MmNkNjUyNDYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2Nr
L1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEwMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihwYWdlKSk7Cit9CisKK1BvaW50ZXJM
b2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcihXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK2Jvb2wg
UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdChTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNr
PiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gT25seSBvbmUgcmVxdWVzdCBjYW4gYmUgcHJvY2Vzc2VkIGZvciB0aGUgd2VicGFn
ZSBzYW1lIHRpbWUKKyAgICBBU1NFUlQobV9zZWN1cml0eU9yaWdpbik7CisgICAgaWYgKG1fc2Vj
dXJpdHlPcmlnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc2VjdXJpdHlPcmln
aW4gPSBvcmlnaW47CisgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIHJldHVybiBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBvaW50ZXJMb2NrUGVybWlz
c2lvbihvcmlnaW4tPnRvU3RyaW5nKCkpKTsKK30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChTZWN1cml0eU9yaWdpbiopCit7CisgICAg
bV9zZWN1cml0eU9yaWdpbi5jbGVhcigpOworICAgIG1fY2FsbGJhY2suY2xlYXIoKTsKK30KKwor
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbiBQb2ludGVyTG9ja1Bl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cGVybWlzc2lvbkxldmVsKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxl
bWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPigpLT5wb2xpY3lGb3JPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pOworfQorCit2b2lkIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpzZXRQZXJtaXNzaW9uTGV2ZWxGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nLCBib29sIGFsbG93ZWQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxl
bWVudDxXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyPigpLT5kaWRVcGRhdGVQb2ludGVy
TG9ja0RlY2lzaW9uKG9yaWdpblN0cmluZywgYWxsb3dlZCk7Cit9CisKK3ZvaWQgUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGlu
ZygpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuc3VwcGxlbWVudDxXZWJQb2ludGVyTG9j
a1Blcm1pc3Npb25NYW5hZ2VyPigpLT5yZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsK
K30KKwordm9pZCBQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2
ZVBvaW50ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAo
bV9zZWN1cml0eU9yaWdpbikgeworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVt
ZW50PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+KCktPmRpZFVwZGF0ZVBvaW50ZXJM
b2NrRGVjaXNpb24obV9zZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSwgYWxsb3dlZCk7CisgICAg
ICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICAgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQo
YWxsb3dlZCk7CisgICAgfQorCisgICAgbV9zZWN1cml0eU9yaWdpbi5jbGVhcigpOworICAgIG1f
Y2FsbGJhY2suY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDg0ZmY0NzJiNGFiMjdiZTk0ZGM0
ODk1ZTEwNGFiM2VmMWRlMjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Qb2ludGVyTG9jay9Qb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25p
Y3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBvaW50
ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2tQ
ZXJtaXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Qb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KGJv
b2wgcGVybWlzc2lvbikgPSAwOworfTsKKworY2xhc3MgUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSopOworCisgICAgYm9vbCBz
dGFydFJlcXVlc3QoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBQYXNzUmVmUHRyPFBvaW50ZXJM
b2NrUGVybWlzc2lvbkNhbGxiYWNrPik7CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKik7CisKKyAgICBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
OjpQZXJtaXNzaW9uIHBlcm1pc3Npb25MZXZlbChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwor
CisgICAgLy8gRm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS4KKyAgICB2b2lkIHNldFBlcm1pc3Np
b25MZXZlbEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdm9pZCByZW1vdmVB
bGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVBvaW50ZXJM
b2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wpOworCitwcml2YXRlOgorICAgIFBvaW50ZXJMb2Nr
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVmUHRyPFBvaW50ZXJMb2Nr
UGVybWlzc2lvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIFdlYlBhZ2UqIG1fcGFnZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9D
SykKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRl
ckxvY2tNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2sv
V2ViUG9pbnRlckxvY2tNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjMxZmUyOGZkY2I5MGM1Nzc0
ODk5YmVlNmY3YTgxY2QyMmRiM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIuY3BwCkBAIC0wLDAg
KzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBMRyBFTEVDVFJPTklDUyBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTEcgRUxFQ1RST05JQ1MgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9pbnRlckxvY2tNYW5hZ2VyLmgiCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyPiBXZWJQb2lu
dGVyTG9ja01hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUG9pbnRlckxvY2tNYW5hZ2VyKHBhZ2UpKTsKK30KKworV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyOjpXZWJQb2ludGVyTG9ja01hbmFnZXIoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1f
cGFnZShwYWdlKQorICAgICwgbV9wb2ludGVyTG9ja2VkKGZhbHNlKQoreworfQorCitXZWJQb2lu
dGVyTG9ja01hbmFnZXI6On5XZWJQb2ludGVyTG9ja01hbmFnZXIoKQoreworfQorCitib29sIFdl
YlBvaW50ZXJMb2NrTWFuYWdlcjo6c3VwcG9ydHNQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1f
cGFnZSkKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0Ns
aWVudCgpLnN1cHBvcnRzUG9pbnRlckxvY2sobV9wYWdlLmdldCgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OnJlcXVlc3RQb2ludGVyTG9jaygp
Cit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2ludGVyTG9ja0NsaWVudCgpLnJlcXVlc3RQb2ludGVyTG9jayhtX3BhZ2UuZ2V0KCkpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OnJlcXVl
c3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlUG9pbnRlckxvY2tDbGllbnQoKS5yZXF1ZXN0UG9pbnRlclVubG9jayhtX3Bh
Z2UuZ2V0KCkpOworfQorCitib29sIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6aXNQb2ludGVyTG9j
a2VkKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlICYmIG1fcGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRl
ckxvY2tDb250cm9sbGVyKCktPmVsZW1lbnQoKTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01h
bmFnZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgaWYgKG1fcGFnZSkKKyAgICAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tNYW5hZ2VyOjpkaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkTG9zZVBvaW50ZXJM
b2NrKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPnBv
aW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWRMb3NlUG9pbnRlckxvY2soKTsKK30KKworYm9vbCBX
ZWJQb2ludGVyTG9ja01hbmFnZXI6OnN0YXJ0UmVxdWVzdFBvaW50ZXJMb2NrKCkKK3sKKyAgICBp
ZiAobV9wYWdlKQorICAgICAgICByZXR1cm4gbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQb2lu
dGVyTG9ja01hbmFnZXJQcm94eTo6UmVxdWVzdFBvaW50ZXJMb2NrKCkpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja01hbmFnZXI6OnN0YXJ0UmVxdWVzdFBvaW50
ZXJVbmxvY2soKQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyUHJveHk6OlJlcXVlc3RQb2ludGVyVW5sb2NrKCkp
OworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYlBvaW50ZXJMb2NrTWFuYWdlck1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK1dlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBXZWJQb2lu
dGVyTG9ja01hbmFnZXI6OnNlY3VyaXR5T3JpZ2luKCkKK3sKKyAgICBpZiAobV9wYWdlKSB7Cisg
ICAgICAgIFdlYkNvcmU6OkVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBtX3BhZ2UtPmNvcmVQYWdl
KCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT50YXJnZXQoKTsKKyAgICAgICAgaWYgKHRhcmdl
dEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RWxlbWVudC0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJM
b2NrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNjNiOGI2N2JmMDY0M2UxZWVjNjgzMWFiN2E0M2Ex
YjY0YmMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bv
aW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrTWFuYWdlci5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIExHIEVM
RUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9pbnRlckxvY2tN
YW5hZ2VyX2gKKyNkZWZpbmUgV2ViUG9pbnRlckxvY2tNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgQ29yZUlQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgTWVzc2FnZURlY29k
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBX
ZWJQb2ludGVyTG9ja01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQb2ludGVyTG9ja01h
bmFnZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb2ludGVyTG9ja01h
bmFnZXI+IGNyZWF0ZShXZWJQYWdlKik7CisgICAgdmlydHVhbCB+V2ViUG9pbnRlckxvY2tNYW5h
Z2VyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgYm9vbCBzdXBwb3J0c1BvaW50ZXJM
b2NrKCk7CisKKyAgICBib29sIHJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIHZvaWQgcmVxdWVz
dFBvaW50ZXJVbmxvY2soKTsKKyAgICBib29sIGlzUG9pbnRlckxvY2tlZCgpOworCisgICAgdm9p
ZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisKKyAgICBib29sIHN0YXJ0
UmVxdWVzdFBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzdGFydFJlcXVlc3RQb2ludGVyVW5sb2Nr
KCk7CisKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKTsKKwor
cHJvdGVjdGVkOgorICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlcihXZWJQYWdlKik7CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVXZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgUmVmUHRyPFdlYlBhZ2U+
IG1fcGFnZTsKKyAgICBib29sIG1fcG9pbnRlckxvY2tlZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFdl
YlBvaW50ZXJMb2NrTWFuYWdlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja01hbmFnZXIu
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkwNTUyYzBiMTlmYmY4ODhhMjMwMzUyZWEyMzBjZjUy
NDhlYTgyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEg
QEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIExHIEVsZWN0cm9uaWNzLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05J
Q1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQTEcgRUxFQ1RST05JQ1NQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIworCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK21lc3NhZ2VzIC0+
IFdlYlBvaW50ZXJMb2NrTWFuYWdlciBMZWdhY3lSZWNlaXZlciB7CisgICAgRGlkQWNxdWlyZVBv
aW50ZXJMb2NrKCkKKyAgICBEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQorICAgIERpZExvc2VQ
b2ludGVyTG9jaygpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1ZjBjMzU3YWQ5ZDM0ODBlOWE3MDdlZGJm
MGNjMzE4MzViZmFkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2suY3BwCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBMRyBFTEVDVFJPTklDUyBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFj
ay5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIldlYlBvaW50ZXJM
b2NrTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjaz4gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJh
Y2s6OmNyZWF0ZShXZWJQb2ludGVyTG9ja01hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjayhtYW5hZ2VyKSk7
Cit9CisKK1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrOjpXZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjayhXZWJQb2ludGVyTG9ja01hbmFnZXIqIG1hbmFnZXIpCisgICAgOiBt
X21hbmFnZXIobWFuYWdlcikKK3sKK30KKwordm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25D
YWxsYmFjazo6aGFuZGxlRXZlbnQoYm9vbCBhbGxvd2VkKQoreworICAgIGlmIChhbGxvd2VkKQor
ICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIGVsc2UKKyAgICAg
ICAgbV9tYW5hZ2VyLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Bl
cm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9j
ay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNmE1ZTNk
NDAwZjQ3OGY3ZGZkZWNiNzk2YTQ2NWQ2ZGZiM2EwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lv
bkNhbGxiYWNrLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBM
RyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9O
SUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25DYWxsYmFja19oCisj
ZGVmaW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBvaW50ZXJMb2NrTWFuYWdlcjsK
KworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgUG9pbnRl
ckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoV2ViUG9pbnRlckxvY2tN
YW5hZ2VyKik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KGJvb2wpIE9WRVJSSURFOwor
Citwcml2YXRlOgorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrKFdlYlBvaW50
ZXJMb2NrTWFuYWdlciopOworICAgIFdlYlBvaW50ZXJMb2NrTWFuYWdlciogbV9tYW5hZ2VyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2tfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9p
bnRlckxvY2svV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmY0NDlkZjUwYWFjOWE0OTgwOWVmYWFlMzBlZDI3ODk1OTk1OTIyMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUG9pbnRlckxvY2svV2ViUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExH
IEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBv
aW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3Qg
Y2hhciogV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQor
eworICAgIHJldHVybiAiV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlciI7Cit9CisKK1dl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1h
bmFnZXIoV2ViUHJvY2VzcyogcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQorewor
fQorCitXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjp+V2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIG1fcGVybWlzc2lvbnNNYXAgPSBwYXJhbWV0ZXJzLnBvaW50ZXJMb2Nr
UGVybWlzc2lvbnM7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6
ZGlkVXBkYXRlUG9pbnRlckxvY2tEZWNpc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywg
Ym9vbCBhbGxvd2VkKQoreworICAgIG1fcGVybWlzc2lvbnNNYXAuc2V0KG9yaWdpblN0cmluZywg
YWxsb3dlZCk7Cit9CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcjo6ZGlk
UmVtb3ZlUG9pbnRlckxvY2tEZWNpc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpblN0
cmluZ3MpCit7CisgICAgc2l6ZV90IGNvdW50ID0gb3JpZ2luU3RyaW5ncy5zaXplKCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBtX3Blcm1pc3Npb25z
TWFwLnJlbW92ZShvcmlnaW5TdHJpbmdzW2ldKTsKK30KKworV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcjo6UGVybWlzc2lvbiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpw
b2xpY3lGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4gKm9yaWdpbikgY29uc3QKK3sK
KyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25Ob3RBbGxvd2VkOwor
CisgICAgQVNTRVJUKCFvcmlnaW4tPmlzVW5pcXVlKCkpOworCisgICAgSGFzaE1hcDxTdHJpbmcs
IGJvb2w+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGVybWlzc2lvbnNNYXAuZmluZChvcmlnaW4t
PnRvUmF3U3RyaW5nKCkpOworICAgIGlmIChpdCAhPSBtX3Blcm1pc3Npb25zTWFwLmVuZCgpKQor
ICAgICAgICByZXR1cm4gaXQtPnZhbHVlID8gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdl
cjo6UGVybWlzc2lvbkFsbG93ZWQgOiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQ
ZXJtaXNzaW9uRGVuaWVkOworICAgIHJldHVybiBQZXJtaXNzaW9uTm90QWxsb3dlZDsKK30KKwor
dm9pZCBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9u
c0ZvclRlc3RpbmcoKQoreworICAgIG1fcGVybWlzc2lvbnNNYXAuY2xlYXIoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50
ZXJMb2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTlj
OGVhZTdmODVjYmY3NDExYzg1OTg5NjQ2MDRkNTMzYTY0ZDZhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1p
c3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBMRyBFbGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNU
Uk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyX2gK
KyNkZWZpbmUgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKTsKK3B1YmxpYzoKKyAgICBlbnVt
IFBlcm1pc3Npb24geworICAgICAgICBQZXJtaXNzaW9uQWxsb3dlZCwKKyAgICAgICAgUGVybWlz
c2lvbk5vdEFsbG93ZWQsCisgICAgICAgIFBlcm1pc3Npb25EZW5pZWQKKyAgICB9OworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICBleHBsaWNpdCBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdlYlByb2Nlc3MqKTsKKyAgICB2aXJ0dWFsIH5X
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRpZFVwZGF0ZVBv
aW50ZXJMb2NrRGVjaXNpb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dl
ZCk7CisgICAgUGVybWlzc2lvbiBwb2xpY3lGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qKSBjb25zdDsKKworICAgIHZvaWQgcmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCk7
CisKK3ByaXZhdGU6CisgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJ
REU7CisKKyAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJikgT1ZFUlJJREU7CisKKyAgICB2b2lkIGRpZFJlbW92ZVBvaW50ZXJMb2NrRGVjaXNp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKKworICAgIFdlYlByb2Nl
c3MqIG1fcHJvY2VzczsKKyAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbV9wZXJtaXNzaW9uc01h
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKKworI2VuZGlmIC8vIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Qb2ludGVyTG9jay9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFmNWMzZjQ5ODY3YWUwZjBiODRkYTljYzIyOTI3OGE3OWYzMGZh
MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BvaW50ZXJM
b2NrL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMCBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgTEcgRWxlY3Ryb25pY3MsIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IExHIEVMRUNUUk9OSUNTIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCittZXNz
YWdlcyAtPiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyIHsKKyAgICBEaWRVcGRhdGVQ
b2ludGVyTG9ja0RlY2lzaW9uKFdURjo6U3RyaW5nIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2Vk
KTsKKyAgICBEaWRSZW1vdmVQb2ludGVyTG9ja0RlY2lzaW9ucyhWZWN0b3I8V1RGOjpTdHJpbmc+
IG9yaWdpblN0cmluZ3MpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
MDk4NThhZWZmOTc5MzUxZTQzMTVjM2Q3NjFhNDY5OTAxNjY3NmM4NC4uZTg0MGM2NTI3ZGQ3MGZk
OTNiZWVhMzI4Mzk3NTc5ZGNhZGUwMjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5lci5oIgor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CkBAIC00Myw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrTWFu
YWdlci5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvbkNhbGxiYWNrLmgiCisj
ZW5kaWYKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtODI0LDYgKzgzMSwzOSBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uo
Y29uc3QgVmlld3BvcnRBcmd1bWVudAogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jaygpCit7CisgICAg
aWYgKCFtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpLT5zdXBwb3J0c1BvaW50ZXJMb2NrKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiA9IG1fcGFnZS0+cG9pbnRlckxvY2tNYW5hZ2VyKCktPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgc3dpdGNoIChtX3BhZ2UtPnBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCktPnBlcm1pc3Npb25MZXZlbChzZWN1cml0eU9yaWdpbikpIHsKKyAgICBjYXNlIFdl
YlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI6OlBlcm1pc3Npb25BbGxvd2VkOgorICAgICAg
ICByZXR1cm4gbV9wYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+cmVxdWVzdFBvaW50ZXJMb2Nr
KCk7CisgICAgY2FzZSBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyOjpQZXJtaXNzaW9u
Tm90QWxsb3dlZDogeworICAgICAgICBSZWZQdHI8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0
ZShtX3BhZ2UtPnBvaW50ZXJMb2NrTWFuYWdlcigpKTsKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+
cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+c3RhcnRSZXF1ZXN0KHNlY3Vy
aXR5T3JpZ2luLCBjYWxsYmFjayk7CisgICAgfQorICAgIGNhc2UgV2ViUG9pbnRlckxvY2tQZXJt
aXNzaW9uTWFuYWdlcjo6UGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBtX3BhZ2Ut
PnBvaW50ZXJMb2NrTWFuYWdlcigpLT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29s
IFdlYkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9wYWdl
LT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6Om5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qo
Y29uc3QgSW50UmVjdCYgc2Nyb2xsZXJUaHVtYikKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Tm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChzY3Jv
bGxlclRodW1iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA0ZjI4YmIzNzQ3MmZhYzFiOGYz
ZDdiODBmOTk4M2ZiMjM3ZWU3ODcyLi5iYmI5N2M0YzlhMWRhNjUzYzY0MzE5YmYyMzZjNmNmYmZh
ZTQ0ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwOCw2ICsyMDgsMTIgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBib29sIHJlcXVlc3RQb2ludGVyTG9jaygpIE9WRVJSSURFOworICAgIHZvaWQgcmVxdWVzdFBv
aW50ZXJVbmxvY2soKSBPVkVSUklERTsKKyAgICBib29sIGlzUG9pbnRlckxvY2tlZCgpIE9WRVJS
SURFOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIG1ha2VG
aXJzdFJlc3BvbmRlcigpIE9WRVJSSURFOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2I5YjM2NTU1MTQ1N2Q1NDJiNTU0MWVl
M2UzYjZiMzQxZjUzNzA0Mi4uMThlODlmMmE4MDJkNjJkNzQwMWJmMDdlYWE1NGM4NjU5MjMyYmY5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDQsNiArNDQsOSBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC03Nyw2ICs4MCwx
MCBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z0luQ2xpZW50LmgiCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja01hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXZWJQb2ludGVyTG9ja01hbmFnZXJNZXNzYWdlcy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKQEAgLTExMiw2ICsxMTksOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisj
aW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KQEAgLTQwNyw2ICs0MTcsOSBAQCBXZWJQ
YWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgdGhpcyk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUG9pbnRlckxvY2tNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlELCB0aGlzKTsKKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHdlYlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNDQzLDcgKzQ1Niw5IEBAIFdlYlBh
Z2U6On5XZWJQYWdlKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKLQorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQb2ludGVyTG9ja01hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworI2VuZGlmCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBh
Z2VDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCkBAIC01MjgsNiArNTQzLDEzIEBAIHZvaWQg
V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQo
V0tCdW5kbGVQYWdlRGlhZ25vCiAgICAgbV9sb2dEaWFnbm9zdGljTWVzc2FnZUNsaWVudC5pbml0
aWFsaXplKGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQ
YWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2ludGVyTG9ja0NsaWVudChXS0J1bmRsZVBh
Z2VQb2ludGVyTG9ja0NsaWVudCogY2xpZW50KQoreworICAgIG1fcG9pbnRlckxvY2tDbGllbnQu
aW5pdGlhbGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJh
bWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgUGx1Z2lu
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTdHJpbmcmIG5ld01JTUVUeXBlKQogewpAQCAtODIw
LDYgKzg0Miw5IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gMDsKICNlbmRpZgorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgbV9wb2ludGVyTG9ja01hbmFnZXIgPSAwOworI2VuZGlmCiAKICAg
ICBpZiAobV9hY3RpdmVQb3B1cE1lbnUpIHsKICAgICAgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRp
c2Nvbm5lY3RGcm9tUGFnZSgpOwpAQCAtMTY0Nyw2ICsxNjcyLDI3IEBAIHN0YXRpYyBib29sIGhh
bmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgV2ViUGFnZSog
cGFnZSwgYm9vCiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1Nb3VzZUV2ZW50ID0g
cGxhdGZvcm0obW91c2VFdmVudCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlm
IChwYWdlLT5wb2ludGVyTG9ja01hbmFnZXIoKS0+aXNQb2ludGVyTG9ja2VkKCkpIHsKKyAgICAg
ICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICAgICAgc3dpdGNoIChtb3VzZUV2ZW50LnR5
cGUoKSkgeworICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAg
ICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgICAg
ICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICAgICAg
ZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgICAgICBwYWdlLT5jb3JlUGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xs
ZXIoKS0+ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCwgZXZlbnRU
eXBlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBzd2l0Y2gg
KHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVByZXNzZWQ6IHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTI1OTgsNiAr
MjY0NCwyMiBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlciogV2ViUGFnZTo6ZnVsbFNjcmVlbk1hbmFn
ZXIoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorV2ViUG9pbnRlckxv
Y2tNYW5hZ2VyKiBXZWJQYWdlOjpwb2ludGVyTG9ja01hbmFnZXIoKQoreworICAgIGlmICghbV9w
b2ludGVyTG9ja01hbmFnZXIpCisgICAgICAgIG1fcG9pbnRlckxvY2tNYW5hZ2VyID0gV2ViUG9p
bnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tN
YW5hZ2VyLmdldCgpOworfQorCitQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciog
V2ViUGFnZTo6cG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQoreworICAgIGlm
ICghbV9wb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgbV9wb2lu
dGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IFBvaW50ZXJMb2NrUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKQogewogICAgIGlmIChtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcikKQEAgLTI5MTUsNiArMjk3NywxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVO
b3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsCiAg
ICAgbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPmRpZFJlY2VpdmVOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpOwogfQog
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvaW50
ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBwb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5kaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNz
aW9uRGVjaXNpb24oYWxsb3dlZCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjphZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKQEAgLTMxNjcsNiArMzIzNiwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZwogICAgIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBvaW50ZXJMb2NrTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHBvaW50ZXJMb2NrTWFuYWdlcigpLT5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCiAgICAgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA3YmRmMDY5Y2MwYjAwNjEzYjYxOGQxOGY4MGQ0MzBmMmVlNWM4OTQxLi5kNzU2YzI4
NWIwYzU3ZDBiNGM5ZGVmOTkyNjkyNDExMTEyOTQzYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQwLDYgKzQwLDkgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oIgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVQYWdlUG9pbnRlckxvY2tDbGllbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVJl
c291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmgiCkBAIC0xMzQsNiArMTM3LDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOwogY2xhc3MgUGFnZUJhbm5lcjsKIGNsYXNzIFBhZ2VPdmVybGF5OwogY2xhc3Mg
UGx1Z2luVmlldzsKK2NsYXNzIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwog
Y2xhc3MgU2Vzc2lvblN0YXRlOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogY2xhc3MgV2ViQ29u
dGV4dE1lbnU7CkBAIC0xNDksNiArMTUzLDcgQEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
OwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CitjbGFzcyBXZWJQb2ludGVyTG9ja01hbmFnZXI7
CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50Owogc3RydWN0IEF0dHJp
YnV0ZWRTdHJpbmc7CkBAIC0yMDIsNiArMjA3LDExIEBAIHB1YmxpYzoKICAgICBXZWJGdWxsU2Ny
ZWVuTWFuYWdlciogZnVsbFNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyAgICBXZWJQb2ludGVyTG9ja01hbmFnZXIqIHBvaW50ZXJMb2NrTWFuYWdl
cigpOworICAgIFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBwb2ludGVyTG9j
a1Blcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOworI2VuZGlmCisKICAgICAvLyAtLSBDYWxsZWQg
YnkgdGhlIERyYXdpbmdBcmVhLgogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBnZW5lcmljaXplIHRo
ZXNlIGludG8gYSBEcmF3aW5nQXJlYSBjbGllbnQgaW50ZXJmYWNlLiBXb3VsZCB0aGF0IGJlIGJl
bmVmaWNpYWw/CiAgICAgdm9pZCBkcmF3UmVjdChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBAIC0yNTgsNiArMjY4LDkgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBh
Z2VGdWxsU2NyZWVuQ2xpZW50Kik7CiAjZW5kaWYKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50Kik7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2b2lkIGluaXRpYWxp
emVJbmplY3RlZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KFdLQnVuZGxlUGFnZVBvaW50ZXJMb2Nr
Q2xpZW50Kik7CisjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVudUNsaWVudDsgfQpAQCAtMjcyLDYgKzI4NSw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkg
eyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorICAgIEluamVjdGVkQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50JiBpbmplY3Rl
ZEJ1bmRsZVBvaW50ZXJMb2NrQ2xpZW50KCkgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NsaWVudDsg
fQorI2VuZGlmCiAKICAgICB2b2lkIHNldFVuZGVybGF5UGFnZShQYXNzUmVmUHRyPFdlYlBhZ2U+
IHVuZGVybGF5UGFnZSkgeyBtX3VuZGVybGF5UGFnZSA9IHVuZGVybGF5UGFnZTsgfQogCkBAIC04
MTksNiArODM1LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVOb3RpZmljYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dl
ZCk7CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgZGlkUmVjZWl2ZVBvaW50
ZXJMb2NrUGVybWlzc2lvbkRlY2lzaW9uKGJvb2wgYWxsb3dlZCk7CisjZW5kaWYKKwogICAgIHZv
aWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwog
ICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKICNpZiBV
U0UoQVBQS0lUKQpAQCAtOTUwLDYgKzk3MCw5IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CiAjZW5kaWYKICAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCBtX2xvZ0RpYWdub3N0aWNN
ZXNzYWdlQ2xpZW50OworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgSW5qZWN0ZWRCdW5k
bGVQYWdlUG9pbnRlckxvY2tDbGllbnQgbV9wb2ludGVyTG9ja0NsaWVudDsKKyNlbmRpZgogCiAg
ICAgRmluZENvbnRyb2xsZXIgbV9maW5kQ29udHJvbGxlcjsKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiBQTEFURk9STShRVCkKQEAgLTk2NSw2ICs5ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyPiBt
X2Z1bGxTY3JlZW5NYW5hZ2VyOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBSZWZQdHI8V2ViUG9pbnRlckxvY2tNYW5hZ2VyPiBtX3BvaW50ZXJMb2NrTWFuYWdlcjsKKyAg
ICBSZWZQdHI8UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+IG1fcG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKICAgICBSZWZQdHI8V2ViUG9wdXBN
ZW51PiBtX2FjdGl2ZVBvcHVwTWVudTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBS
ZWZQdHI8V2ViQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDI1ZWJk
ODY4OGI2MjI1MTlmNGQ3ZDIzZGJhMTQyZjhiYTNiMTM5OGQuLjcyY2Y1NWRiNmMxZjlkMGU0NDIw
ZDljN2YzMjM0OTcyNzlmMmM1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTgsNiArMjE4LDEwIEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgTm90aWZpY2F0aW9uCiAg
ICAgRGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBEaWRSZWNlaXZlUG9pbnRlckxvY2tQZXJtaXNzaW9uRGVjaXNpb24oYm9vbCBhbGxvd2VkKQor
I2VuZGlmCisKICAgICBTZXRXaW5kb3dSZXNpemVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGludGVy
c2VjdHNWaWV3KQogCiAgICAgIyBQcmludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGI1YjIxNGFhZWVjM2UwMDQxM2QxNTk4NmE0NWJhZTkwYWRiY2E4
Y2IuLmNhNTY5OTAxYWQ5OTc3ZjEzMWZkNTI4ZjVmZTliZTk0MmEyZTQzNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNiArNDgsOSBAQAogI2luY2x1
ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyLmgiCisjZW5kaWYKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgpAQCAtMjA5LDYgKzIxMiw5IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3Mo
KQogI2lmIFVTRShTT1VQKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2Vy
PigpOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBhZGRTdXBwbGVtZW50
PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI+KCk7CisjZW5kaWYKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTZkZmIxOTk5MTkzZjFmZGQzNTJhMGM0ZWY2NmQ2NDlm
MzdmYzYxZC4uMDUzMTkwYTc3YmY4ZmI3NDYyY2IxZjMxYWJmYWRlMmMyOWFkZTZhYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDEzLTA2LTI0ICBTdGFuaXNsYXYgUGlrdWxpayAgPHN0YW5pc2xhdi5waWt1bGlrQGxn
ZS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBXZWJLaXQyIFBvaW50ZXIgTG9jayBJbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE3Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgYWRkIHBvaW50ZXIgbG9jayBwZXJtaXNzaW9uIHN1cHBvcnQgaW4gV2ViS2l0VGVzdFJ1bm5l
cgorICAgICAgICBhZGQgcG9pbnRlciBsb2NrIHN1cHBvcnQgaW4gV2ViS2l0VGVzdFJ1bm5lcgor
ICAgICAgICBwcm92aWRlIHVzYWdlIHNhbXBsZSBpbiBNaW5pQnJvd3NlciAobm90IGNsaXAgYW5k
IG5vdCBoaWRlIGN1cnNvciBub3cpCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5jcHA6CisgICAgICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3Rp
ZnkpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnN1cHBv
cnRzUG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlcXVl
c3RQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0
UnVubmVyKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6aGFzUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpoYXNQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25v
dXNseSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3Bv
bmRBc3luY2hyb25vdXNseSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhhc1BvaW50ZXJM
b2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UYXJnZXQucHJpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9u
UmVxdWVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6YWRkUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlcik6CisgICAgICAgIChXVFI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIp
OgorICAgICAgICAoV1RSOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlk
ZXI6OnByb3ZpZGVyKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJv
dmlkZXI6OmFkZFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV1RSOjpX
ZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cmVtb3ZlUG9pbnRlckxvY2tQZXJtaXNz
aW9uTWFuYWdlcik6CisgICAgICAgIChXVFI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyOjpwb2ludGVyTG9ja1Blcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUHJvdmlkZXI6OnJlc2V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHFt
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpOgorCiAyMDEzLTA2LTIyICBTYW50b3No
IE1haHRvICA8c2FudG9zaC5tYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgc3Vw
cG9ydCBmb3IgTUhUTUwgc2F2ZS9sb2FkIGZlYXR1cmUgdG8gTWluaUJyb3dzZXIKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXgg
NzJhZThiMjRkZGU3YTY1OTJkN2MyNzBmMTlhYmQ1MTIyMDdlODRjNi4uODc1N2E2YmRjYzc5ZjIw
Zjk4OWEwNjYzNDg4M2QxNDNmYzYwMGI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTcyNCw2ICs3MjQsNyBAQCAtICh2
b2lkKWF3YWtlRnJvbU5pYgogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAg
MCwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JQb2ludGVyTG9ja1Blcm1p
c3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoX3dlYlZpZXcu
cGFnZVJlZiwgJnVpQ2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggNmQ1YzZhNjMwMmM3N2ZhM2RmNDAwYjk3NWEzZDZj
MjZhM2VjYTBlNi4uNDIxODhiZjRkYjk4MGI2NjIxZTM0ZWM2MWU5NjI3YzZmMTAyMTY3MCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAg
LTE2NywxMiArMTY3LDIwIEBAIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFP
YmplY3QqIHRhcmdldCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFFFdmVudDo6TW91c2VNb3ZlOgogICAgICAgICAgICAgaWYgKCFtb3VzZUV2ZW50LT5i
dXR0b25zKCkpIHsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICAgICAgICAgIGlm
IChtX2hvbGRpbmdDb250cm9sICYmIG1fdG91Y2hQb2ludHMuc2l6ZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBRR3VpQXBwbGlj
YXRpb246Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgLy8g
V2UgaGF2ZSB0byBzd2FsbG93IHRoZSBldmVudCBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIGl0LAog
ICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGF2b2lkIHNlbmRpbmcgdGhlIG1vdXNlIHJlbGVh
c2UgZXZlbnRzIGFuZCBpZiB0aGUKICAgICAgICAgICAgICAgICAvLyBGbGlja2FibGUgaXMgdGhl
IG1vdXNlIGdyYWJiZXIgaXQgd291bGQgcmVjZWl2ZSB0aGUgZXZlbnQKICAgICAgICAgICAgICAg
ICAvLyBhbmQgd291bGQgbW92ZSB0aGUgY29udGVudC4KICAgICAgICAgICAgICAgICBldmVudC0+
YWNjZXB0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHRvdWNoVHlwZSA9IFFFdmVudDo6VG91Y2hVcGRhdGU7CiAgICAg
ICAgICAgICB0b3VjaFBvaW50LnNldElkKG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggYjRiNWJjMDkyNjhjYmIz
Y2YzNDljMDhhMDZjN2MyYTk1ZGNjZWE2NS4uYWJjZDhhYzM0MTE1OTU3ZTBhNjE3NjNjMTQxMGUz
NzllYmNlMDc0MyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJX
aW5kb3cucW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFt
bApAQCAtNTY0LDYgKzU2NCwyMCBAQCBSZWN0YW5nbGUgewogICAgICAgICAgICAgV2luZG93LnNo
b3dOb3JtYWwoKTsKICAgICAgICAgICAgIG5hdmlnYXRpb25CYXIudmlzaWJsZSA9IHRydWU7CiAg
ICAgICAgIH0KKyAgICAgICAgZXhwZXJpbWVudGFsLm9uUGVybWlzc2lvblJlcXVlc3RlZCA6IHsK
KyAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IFBlcm1pc3Npb25SZXF1ZXN0LlBv
aW50ZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLmFsbG93KQorICAg
ICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uLmFsbG93ID0gdHJ1ZQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5vblBvaW50ZXJMb2NrUmVxdWVzdGVkIDog
eworICAgICAgICB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5vblBvaW50ZXJVbmxvY2tSZXF1ZXN0
ZWQgOiB7CisgICAgICAgIH0KKyAgICAgICAgS2V5cy5vbkVzY2FwZVByZXNzZWQ6IHsKKyAgICAg
ICAgICAgIGlmICh3ZWJWaWV3LmV4cGVyaW1lbnRhbC5wb2ludGVyTG9ja2VkKQorICAgICAgICAg
ICAgICAgZXhwZXJpbWVudGFsLnVubG9ja1BvaW50ZXIoKQorICAgICAgICB9CiAgICAgfQogCiAg
ICAgU2Nyb2xsSW5kaWNhdG9yIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGNlNjQ3
ZTI2N2NhZTFkMWVmMjhmZmQxZmY3NzA5MzM4N2I1OGE2M2UuLmU4ZmIyMzYzMTNiOThlMGIzNzMy
YWRmNTliZGNlMjhjNmFlMGVhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTkw
LDUgKzE5MCwxMSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICAvLyBTZWN1cmUgdGV4
dCBpbnB1dCBtb2RlIChNYWMgb25seSkKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBz
ZWN1cmVFdmVudElucHV0SXNFbmFibGVkOwotfTsKIAorICAgIC8vIFBvaW50ZXJMb2NrCisgICAg
dm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9j
aygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQ
b2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxv
Y2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCk7Cit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CmluZGV4IGViNTBjZTBlMDUwMjBmMDA5MzA1MDk1Nzk5ODZhYzgwMmQzMThjZWMuLjczOTkzOGFk
NWQxYmExMzcyOGJjNTE3YTc5ZmU4NzMwMTY4NmNmMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAKQEAgLTQxNSw2ICs0MTUsMTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRs
ZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRG
dWxsU2NyZWVuQ2xpZW50KG1fcGFnZSwgJmZ1bGxTY3JlZW5DbGllbnQpOwogI2VuZGlmCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdLQnVuZGxlUGFnZVBvaW50ZXJMb2NrQ2xpZW50
IHBvaW50ZXJMb2NrQ2xpZW50ID0geworICAgICAgICBrV0tCdW5kbGVQYWdlUG9pbnRlckxvY2tD
bGllbnRDdXJyZW50VmVyc2lvbiwKKyAgICAgICAgdGhpcywKKyAgICAgICAgc3VwcG9ydHNQb2lu
dGVyTG9jaywKKyAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrLAorICAgICAgICAwLCAvLyByZXF1
ZXN0UG9pbnRlclVubG9jaywKKyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldFBvaW50ZXJMb2Nr
Q2xpZW50KG1fcGFnZSwgJnBvaW50ZXJMb2NrQ2xpZW50KTsKKyNlbmRpZgogfQogCiBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6On5JbmplY3RlZEJ1bmRsZVBhZ2UoKQpAQCAtMTc5Niw2ICsxODA3LDMyIEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpjbG9zZUZ1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIElu
amVjdGVkQnVuZGxlUGFnZTo6c3VwcG9ydHNQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSkKK3sKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+aGFz
UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zZXRQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3Io
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlcXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKK3sKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIo
KS0+aGFzUG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zZXRQb2ludGVyTG9ja1VzdWFsQmVo
YXZpb3IoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gCisKKyAgICBpZiAoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+aGFzUG9pbnRlckxvY2tXaWxsUmVzcG9u
ZEFzeW5jaHJvbm91c2x5KCkpIHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRl
c3RSdW5uZXIoKS0+c2V0UG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBXS0J1bmRsZVBhZ2VTdGFydFJlcXVlc3RQb2lu
dGVyTG9jayhwYWdlKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjb21wYXJlQnlUYXJnZXRO
YW1lKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtMSwgV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGl0ZW0yKQogewogICAgIHJldHVybiB0b1NURChhZG9wdFdLKFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJnZXQoaXRlbTEpKSkgPCB0b1NURChhZG9wdFdL
KFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJnZXQoaXRlbTIpKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuaAppbmRleCBkMDlhMjA0ZGQ5ZWNlZTVkYjBjNjRjNmMzYmZlNDljYzY4OTEzZTFh
Li43ZDU4MDllOWYyYTA1ZjZmZTAzMmFkNWJiOWNhYTRkYjAwMGE2ZjQwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmgKQEAgLTE0MCw2ICsxNDAsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBj
bG9zZUZ1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKyAgICAvLyBQb2ludGVyIExvY2sgY2xpZW50CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYpOworICAgIHN0YXRpYyBib29sIHJl
cXVlc3RQb2ludGVyTG9jayhXS0J1bmRsZVBhZ2VSZWYpOworI2VuZGlmCisKICAgICAvLyBFZGl0
b3IgY2xpZW50CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
UmFuZ2VIYW5kbGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTY5
NjYwMDUxN2I2OWU4MjliMGVlOTJkNjVlNTRkZjJjZjgxYmUwNy4uYmIxOGNhNjExZjAxNjg1ZWNm
MjQxMjk5MTg3MDcyZjliMjI5NjQ3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC05NSw2ICs5NSw3IEBAIFRlc3RS
dW5uZXI6OlRlc3RSdW5uZXIoKQogICAgICwgbV9jdXN0b21GdWxsU2NyZWVuQmVoYXZpb3IoZmFs
c2UpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0RW5hYmxlZChmYWxzZSkKICAgICAsIG1fdXNlclN0
eWxlU2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIi
KSkpCisgICAgLCBtX3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMoUG9pbnRlckxvY2tVc3VhbEJl
aGF2aW9yKQogewogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQpAQCAtODEyLDQgKzgxMywx
OSBAQCBib29sIFRlc3RSdW5uZXI6OnNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQoKSBjb25zdAog
ICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJl
dHVybkRhdGEpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpkaWRMb3NlUG9pbnRlckxvY2soKQor
eworICAgIFdLQnVuZGxlUGFnZURpZExvc2VQb2ludGVyTG9jayhJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpCit7CisgICAgV0tCdW5kbGVQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBXS0J1bmRsZVBhZ2VEaWRO
b3RBY3F1aXJlUG9pbnRlckxvY2soSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGVmMGVhOGM3MDhkMWMyZmE5
NWFjNTdiMDBkMmFkNzY2MjM3ZjY3MmEuLjgzODA5ZjMwZjM0NjE0M2ZhMmY3MWU4YTkxYjhiZGQw
OWJhZGQyMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC0yNzUsNiArMjc1LDE4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCgpIGNvbnN0OwogCisgICAgLy8gQ3VzdG9tIFBvaW50
ZXJMb2NrIGJlaGF2aW9yCisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lk
IGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJM
b2NrKCk7CisKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrVXN1YWxCZWhhdmlvcigpIHsgbV9wb2lu
dGVyTG9ja1Jlc3BvbnNlU3RhdHVzID0gUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yOyB9CisgICAg
Ym9vbCBoYXNQb2ludGVyTG9ja1VzdWFsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3BvaW50
ZXJMb2NrUmVzcG9uc2VTdGF0dXMgPT0gUG9pbnRlckxvY2tVc3VhbEJlaGF2aW9yOyB9CisgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpIHsgbV9wb2ludGVyTG9j
a1Jlc3BvbnNlU3RhdHVzID0gUG9pbnRlckxvY2tSZXNwb25zZUZhaWw7IH0KKyAgICBib29sIGhh
c1BvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9wb2lu
dGVyTG9ja1Jlc3BvbnNlU3RhdHVzID09IFBvaW50ZXJMb2NrUmVzcG9uc2VGYWlsOyB9CisgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKSB7IG1fcG9pbnRl
ckxvY2tSZXNwb25zZVN0YXR1cyA9IFBvaW50ZXJMb2NrUmVzcG9uc2VBc3luYzsgfQorICAgIGJv
b2wgaGFzUG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1
cm4gbV9wb2ludGVyTG9ja1Jlc3BvbnNlU3RhdHVzID09IFBvaW50ZXJMb2NrUmVzcG9uc2VBc3lu
YzsgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXJJbnRlcnZhbDsKIApAQCAtMzI1LDYgKzMzNywxNCBAQCBwcml2YXRlOgogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAKICAgICBQ
bGF0Zm9ybVRpbWVyUmVmIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CisKKyAgICBlbnVtIFBv
aW50ZXJMb2NrUmVzcG9uc2VTdGF0dXMgeworICAgICAgICBQb2ludGVyTG9ja1VzdWFsQmVoYXZp
b3IsCisgICAgICAgIFBvaW50ZXJMb2NrUmVzcG9uc2VGYWlsLAorICAgICAgICBQb2ludGVyTG9j
a1Jlc3BvbnNlQXN5bmMKKyAgICB9OworCisgICAgUG9pbnRlckxvY2tSZXNwb25zZVN0YXR1cyBt
X3BvaW50ZXJMb2NrUmVzcG9uc2VTdGF0dXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGFyZ2V0LnByaQppbmRleCAzOTgwMGFiOGRjZmYzY2Q0NGVjMjkxNjZkMzcx
YmNkZTJkNDQwYTYzLi4xY2JhM2QxNjQ0OTAxMmRmZmY5NTRiZDI1ZjFlOTgzMTkxMDkyM2MxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCkBAIC0xNSw2ICsxNSw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFRlc3RDb250cm9sbGVyLmggXAogICAgIFRlc3RJbnZvY2F0aW9uLmggXAogICAgIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmggXAorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyLmggXAogICAgIFdvcmtRdWV1ZU1hbmFnZXIuaAogCiBTT1VSQ0VTICs9IFwKQEAgLTI3
LDYgKzI4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVGVzdENvbnRyb2xsZXIuY3BwIFwKICAgICBU
ZXN0SW52b2NhdGlvbi5jcHAgXAogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBcCisg
ICAgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIuY3BwIFwKICAgICBXb3JrUXVldWVN
YW5hZ2VyLmNwcAogCiBERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAwOTY0N2ExNjAxNzM4NDE3Y2Zm
ZGYwMzY2ZTRkOTkxODAzZDY0OTIzLi5kNTdkMWQyMWEwNzUwM2QxNTdmYzc4MGQ4NzA0ZmVjMjVk
ZjRkMTZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
NDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZS5o
PgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BvaW50ZXJM
b2NrUGVybWlzc2lvbk1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uUmVxdWVzdC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CkBAIC0yNDcsNiArMjUxLDcgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVy
OjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmIG9sZFBhZ2UsIFdLVVJMUmVxdWVzdFJlZiwgV0sK
ICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIGhpZGVDb2xvclBp
Y2tlcgogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICAg
ICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdAogICAg
IH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG5ld1BhZ2UsICZvdGhlclBhZ2VVSUNsaWVu
dCk7CiAKQEAgLTM4OCw2ICszOTMsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFdLTm90aWZpY2F0aW9uUHJvdmlk
ZXIgbm90aWZpY2F0aW9uS2l0ID0gbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5wcm92aWRlcigp
OwogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG5vdGlmaWNhdGlvbk1hbmFn
ZXIsICZub3RpZmljYXRpb25LaXQpOwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBX
S1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJSZWYgcG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlciA9IFdLQ29udGV4dEdldFBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIobV9jb250ZXh0
LmdldCgpKTsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyIHBvaW50ZXJMb2Nr
UGVybWlzc2lvbktpdCA9IG1fd2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIucHJvdmlk
ZXIoKTsKKyAgICBXS1BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXJTZXRQcm92aWRlcihwb2lu
dGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLCAmcG9pbnRlckxvY2tQZXJtaXNzaW9uS2l0KTsKKyNl
bmRpZgorCiAgICAgaWYgKHRlc3RQbHVnaW5EaXJlY3RvcnkoKSkKICAgICAgICAgV0tDb250ZXh0
U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCB0ZXN0UGx1Z2lu
RGlyZWN0b3J5KCkpOwogCkBAIC00NDYsNiArNDU3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKQogICAgICAg
ICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCiAg
ICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCwKKyAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudCk7CiAKQEAg
LTYxNSw2ICs2MjcsMTEgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcygpCiAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IGZhbHNlOwog
ICAgIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7CiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIC8vIFJlc2V0IFBvaW50ZXJMb2NrIHBlcm1pc3Npb25zLgor
ICAgIG1fd2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIucmVzZXQoKTsKKyNlbmRpZgor
CiAgICAgLy8gUmVzZXQgQ3VzdG9tIFBvbGljeSBEZWxlZ2F0ZS4KICAgICBzZXRDdXN0b21Qb2xp
Y3lEZWxlZ2F0ZShmYWxzZSwgZmFsc2UpOwogCkBAIC0xMjAzLDYgKzEyMjAsMTggQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV0tQYWdlUmVmLCBXS1MKICAgICBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxs
b3cocmVxdWVzdCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclBv
aW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luLCBXS1BvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwg
Y29uc3Qgdm9pZCopCit7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmRlY2lkZVBvbGlj
eUZvclBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QocGFnZSwgb3JpZ2luLCByZXF1ZXN0KTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdCk7Cisj
ZW5kaWYKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkKFdLUGFnZVJlZiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgV0tEaWN0aW9u
YXJ5UmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBwcmludGYoIk1JU1NJTkcgUExVR0lOIEJVVFRP
TiBQUkVTU0VEXG4iKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCBkZWUyNjgzNDZkZjljMjhkNzNjZWJlMzlhODAzNDIwNWRjYTNkNGI3Li45ODg0MThjM2YzN2Ni
N2JiYzU5NWNmZmVlNGIzNzI3MDEyYThiMjQ5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw5IEBACiAjZGVmaW5lIFRlc3RDb250cm9sbGVyX2gK
IAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyNpbmNsdWRlICJXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiV29ya1F1ZXVlTWFuYWdlci5oIgogI2luY2x1ZGUgPEdlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpAQCAt
MTM3LDYgKzE0MCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1Bh
Z2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RSZWYpOwogCisgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yUG9pbnRlckxvY2tQZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYsIFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdFJlZik7CisKICAgICBzdGF0
aWMgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV0tQYWdlUmVmLCBXS1BsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS0RpY3Rpb25hcnlSZWYsIGNvbnN0IHZvaWQqKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTE3MCw2ICsxNzYsMTAgQEAgcHJpdmF0ZToKIAogICAg
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7CiAKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyIG1fd2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI7CisjZW5kaWYKKwogICAgIE93
blB0cjxQbGF0Zm9ybVdlYlZpZXc+IG1fbWFpbldlYlZpZXc7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBtX2NvbnRleHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IG1f
cGFnZUdyb3VwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJQb2ludGVy
TG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBv
aW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDk5NGRiZjM1MGJj
ZDFlMzExYTdjM2I1MmQ2MjY3NWU0YzlhYmZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5jcHAKQEAgLTAs
MCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBFbGVjdHJvbmljcywgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNTIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVy
LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS011
dGFibGVBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1cml0eU9yaWdpbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgdm9p
ZCBhZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9u
TWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRp
Y19jYXN0PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpLT5hZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKG1hbmFnZXIp
OworfQorCitzdGF0aWMgdm9pZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdL
UG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5yZW1vdmVQb2ludGVyTG9ja1Bl
cm1pc3Npb25NYW5hZ2VyKG1hbmFnZXIpOworfQorCitzdGF0aWMgV0tEaWN0aW9uYXJ5UmVmIHBv
aW50ZXJMb2NrUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPnBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKTsKK30KKwor
V2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OldlYlBvaW50ZXJMb2NrUGVybWlzc2lv
blByb3ZpZGVyKCkKK3sKK30KKworV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBXZWJQ
b2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcjo6cHJvdmlkZXIoKQoreworICAgIFdLUG9pbnRl
ckxvY2tQZXJtaXNzaW9uUHJvdmlkZXIgcG9pbnRlckxvY2tQcm92aWRlciA9IHsKKyAgICAgICAg
a1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXJDdXJyZW50VmVyc2lvbiwKKyAgICAgICAg
dGhpcywKKyAgICAgICAgV1RSOjphZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyLAorICAg
ICAgICBXVFI6OnJlbW92ZVBvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIsCisgICAgICAgIFdU
Ujo6cG9pbnRlckxvY2tQZXJtaXNzaW9ucywKKyAgICB9OworICAgIHJldHVybiBwb2ludGVyTG9j
a1Byb3ZpZGVyOworfQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjph
ZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlclJlZiBtYW5hZ2VyKQoreworICAgIEFTU0VSVCghbV9wb2ludGVyTG9ja1Blcm1pc3Npb25N
YW5hZ2VyKTsKKyAgICBtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIgPSBtYW5hZ2VyOwor
fQorCit2b2lkIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpyZW1vdmVQb2ludGVy
TG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZiBt
YW5hZ2VyKQoreworICAgIEFTU0VSVChtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIpOwor
ICAgIEFTU0VSVChtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXIuZ2V0KCkgPT0gbWFuYWdl
cik7CisgICAgbV9wb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyID0gMDsKK30KKworV0tEaWN0
aW9uYXJ5UmVmIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyOjpwb2ludGVyTG9ja1Bl
cm1pc3Npb25zKCkKK3sKKyAgICAvLyBGSVhNRSA6IEl0IHNob3VsZCBiZSByZWFsIGNhY2hlIGZv
ciBwZXJtaXNzaW9ucworICAgIHJldHVybiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7Cit9
CisKK3ZvaWQgV2ViUG9pbnRlckxvY2tQZXJtaXNzaW9uUHJvdmlkZXI6OnJlc2V0KCkKK3sKKyAg
ICAvLyBGSVhNRSA6IHJlc2V0IHJlYWwgY2FjaGUKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisK
KyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyYzE5NDM3MzEwMzZhZjI0ZGQyYmEwODUwMmUxMjg0ODk4ZjM0MzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYlBvaW50ZXJMb2NrUGVybWlzc2lvblBy
b3ZpZGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBMRyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTEcgRUxFQ1RST05JQ1MgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIExHIEVMRUNUUk9OSUNT
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlcl9oCisjZGVm
aW5lIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3ZpZGVyX2gKKworI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFu
YWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRl
ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIFdlYlBvaW50ZXJMb2NrUGVybWlzc2lvblByb3Zp
ZGVyKCk7CisgICAgV0tQb2ludGVyTG9ja1Blcm1pc3Npb25Qcm92aWRlciBwcm92aWRlcigpOwor
CisgICAgdm9pZCBhZGRQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQ
ZXJtaXNzaW9uTWFuYWdlclJlZik7CisgICAgdm9pZCByZW1vdmVQb2ludGVyTG9ja1Blcm1pc3Np
b25NYW5hZ2VyKFdLUG9pbnRlckxvY2tQZXJtaXNzaW9uTWFuYWdlclJlZik7CisgICAgV0tEaWN0
aW9uYXJ5UmVmIHBvaW50ZXJMb2NrUGVybWlzc2lvbnMoKTsKKworICAgIHZvaWQgcmVzZXQoKTsK
K3ByaXZhdGU6CisgICAgV0tSZXRhaW5QdHI8V0tQb2ludGVyTG9ja1Blcm1pc3Npb25NYW5hZ2Vy
UmVmPiBtX3BvaW50ZXJMb2NrUGVybWlzc2lvbk1hbmFnZXI7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gV2ViUG9pbnRlckxvY2tQZXJtaXNz
aW9uUHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9m
ZWF0dXJlcy5wcmkgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQpp
bmRleCAxMDc4ODUwNGQ3YzEzMmQ1NzllNmExN2ZlNWM1YWQyYzdmZDU4Y2E2Li5iMzQ2M2EwODEz
ZGI1OTBmZDdhMTczN2Y4YjMzYzc1Yzk2ZTQ5MTE0IDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL2ZlYXR1cmVzLnByaQpAQCAtMTI2LDMgKzEyNiw1IEBAIEZFQVRVUkVfREVGQVVMVFMg
PSBcCiAgICAgRU5BQkxFX1dPUktFUlM9MSBcCiAgICAgRU5BQkxFX1hIUl9USU1FT1VUPTEgXAog
ICAgIEVOQUJMRV9YU0xUPTAgXAorICAgIEVOQUJMRV9QT0lOVEVSX0xPQ0s9MSBcCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5MmUxNTRmYzgyODYzYmQ5YWIzYzY4OTYyMDI5NjQ4NDY4YjNlYmVlLi40Y2RiMmJhZTdmNDU4
Y2NmNmVjYzhkMjVmOTMwZjUyNWNlMjQwNjRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMt
MDYtMjQgIFN0YW5pc2xhdiBQaWt1bGlrICA8c3RhbmlzbGF2LnBpa3VsaWtAbGdlLmNvbT4KKwor
ICAgICAgICBbUXRdW1dLMl0gQWRkIFdlYktpdDIgUG9pbnRlciBMb2NrIEltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc3ODkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRl
c3QgaXMgcGVyZm9ybWVkIHN1Y2Nlc3NmdWxseSwgYnV0IGFmdGVyIHRoYXQgZmlyc3QgcnVuIG9m
IGFsbCB0ZXN0cyBjb21wbGV0ZSB3aXRoOiAKKyAgICAgICAgZmFpbGVkIHRpbWVkIG91dCB3YWl0
aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZDoKKyAgICAgICAgcG9pbnRlci1sb2NrL2J1
ZzkwMzkxLW1vdmUtdGhlbi13aW5kb3ctb3Blbi1jcmFzaC5odG1sCisKKyAgICAgICAgT25lIHRl
c3QgZmFpbCwgbm8gZG91YmxlY2xpY2sgc3VwcG9ydCBub3c6CisgICAgICAgIHBvaW50ZXItbG9j
ay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDYtMjQgIEdhYm9yIEFicmFoYW0gIDxhYnJo
bUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4g
U2tpcHBpbmcgdGhlIGNyYXNoaW5nIHRlc3RzIG9uIGRlYnVnIGJvdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGQxYzA5OWI3
YTZiNzU0YTU0ZWVmNDA1NTg0ZTExYWQzYzdmODBmMC4uMTIyYjdiMzJiMTU1ZWFlMzEyZjFlYzI4
MmNmNDMyZDAyMTZiZjk0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4w
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjU4LDYgKzY1OCw5IEBAIGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvbG9nb3V0Lmh0bWwKIHBsYXRmb3JtL3F0L3BsdWdpbnMvYXBwbGljYXRpb24tcGx1
Z2luLXBsdWdpbnMtZGlzYWJsZWQuaHRtbAogcGxhdGZvcm0vcXQvcGx1Z2lucy9xdC1xd2lkZ2V0
LXBsdWdpbi5odG1sCiAKKyMgW1F0XVtXSzJdIFJFR1JFU1NJT04ocjE1MTczNykKK3dlYmtpdC5v
cmcvYi8xMTc4MjQgZmFzdC9yZXBsYWNlZC93aWR0aDEwMHBlcmNlbnQtaW1hZ2UuaHRtbCBbIFNr
aXAgXQorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIFByaW50aW5nIHRlc3RzLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAj
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSAjCkBAIC04MTksMyArODIyLDEyIEBAIHdlYmtpdC5vcmcvYi83
Njk4NiBzY3JvbGxiYXJzL3Njcm9sbC1ydGwtb3ItYnQtbGF5ZXIuaHRtbAogCiAjIFtRdF0gSW1h
Z2VzIHNjYWxlIGRpZmZlcmVudGx5IGluIFdLMSBhbmQgV0syCiB3ZWJraXQub3JnL2IvOTIwMTUg
dGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvYnVncy9idWc4NTAxNi5odG1sCisKKyMg
W1F0XVtXSzJdIGVuYWJsZSBwb2ludGVyIGxvY2sgdGVzdHMKK2h0dHAvdGVzdHMvcG9pbnRlci1s
b2NrLyBbIFBhc3MgXQorcG9pbnRlci1sb2NrLyBbIFBhc3MgXQorCisjIFtRdF1bV0syXSBUaGUg
dGVzdCBpcyBwZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aG91dCAtLXNpbmdseSBhZnRl
ciB0aGF0IHRlc3QgYWxsIHRlc3RzIGNvbXBsZXRlIHdpdGg6IGZhaWxlZCB0aW1lZCBvdXQgd2Fp
dGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQuCitwb2ludGVyLWxvY2svYnVnOTAzOTEt
bW92ZS10aGVuLXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwgWyBTa2lwIF0KKyMgW1F0XVtXSzJdIEl0
IGFsd2F5IGZhaWwuIE5vIGRvdWJsZWNsaWNrIHByb2Nlc3Npbmcgbm93LiBJdCBuZWVkcyBpbnZl
c3RpZ2F0aW9uLgorcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwgWyBGYWls
dXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>